Matlab重叠保留法、重叠保留法--程序文档格式.docx

上传人:b****9 文档编号:13047323 上传时间:2022-10-03 格式:DOCX 页数:3 大小:15.61KB
下载 相关 举报
Matlab重叠保留法、重叠保留法--程序文档格式.docx_第1页
第1页 / 共3页
Matlab重叠保留法、重叠保留法--程序文档格式.docx_第2页
第2页 / 共3页
Matlab重叠保留法、重叠保留法--程序文档格式.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Matlab重叠保留法、重叠保留法--程序文档格式.docx

《Matlab重叠保留法、重叠保留法--程序文档格式.docx》由会员分享,可在线阅读,更多相关《Matlab重叠保留法、重叠保留法--程序文档格式.docx(3页珍藏版)》请在冰豆网上搜索。

Matlab重叠保留法、重叠保留法--程序文档格式.docx

functiony=overlap_add(x,h,M,choice)

%x为较长的输入序列,h为较短的系统函数,M为分段大小

%choice为'

add'

或'

save'

选择重叠相加法或重叠保留法

%---------前期处理-------------------

N=length(h);

%序列h(n)的长度

Lx=length(x);

%序列x(n)的长度

ifN>

M%算法要求N<

=M

M=N+1;

end

L=M+N-1;

%用每段循环卷积计算线性卷积所需点数

T=ceil(Lx/M);

%分段数,ceil向上取整

t=zeros(1,N-1);

%缓存序列初始化

x=[x,zeros(1,(T+1)*M-Lx)];

%最后一个不足M的分段补零

y=zeros(1,(T+1)*M);

%生成输出序列y(n)

%-------------核心算法--------------------

fori=0:

T

xi=i*M+1;

x_seg=x(xi:

xi+M-1);

%低点数计算时的分段x(n)

y_seg=lin_conv(x_seg,h,L);

%计算i分段和h的循环线性卷积

y_seg(1:

N-1)=y_seg(1:

N-1)+t(1:

N-1);

%与前一段卷积的后N-1位重叠相加

t(1:

N-1)=y_seg(M+1:

L);

%缓存序列更新

y(xi:

xi+M-1)=y_seg(1:

M);

%每卷积一段输出M个点

end

y=y(1:

Lx+N-1);

%最终输出序列

%%重叠保留法实现长短序列的线性卷积

functiony=overlap_save(x,h,M)

fori=0:

T;

x_seg=[t,x(xi:

xi+M-1)];

%低点数计算时的分段x(n)

t=x_seg(M+1:

M+N-1);

%缓存序列更新

%线性卷积

xi+M-1)=y_seg(N:

%每卷积一段输出M个点

end

%%利用FFT循环卷积计算线性卷积的函数

functiony=lin_conv(x1,x2,L)

%利用FFT循环卷积计算线性卷积

y1=fft(x1,L);

y2=fft(x2,L);

Yk=y1.*y2;

y=ifft(Yk);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1