1 / 3
文档名称:

用matlaB分析重叠相加重叠保留法.doc

格式:doc   大小:24KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

用matlaB分析重叠相加重叠保留法.doc

上传人:amikiri 2022/6/23 文件大小:24 KB

下载得到文件列表

用matlaB分析重叠相加重叠保留法.doc

文档介绍

文档介绍:用matlaB分析重叠相加重叠保留法

function y=overlap_add(x,h,M)
N=length(h); Lx=length(x); if N>M
M=N+1;
end
L=M+N-1; 用matlaB分析重叠相加重叠保留法

function y=overlap_add(x,h,M)
N=length(h); Lx=length(x); if N>M
M=N+1;
end
L=M+N-1;
T=ceil(Lx/M);
t=zeros(1,N-1);
x=[x,zeros(1,(T+1)*M-Lx)]; y=zeros(1,(T+1)*M);
for i=0:T
xi=i*M+1;
x_seg=x(xi:xi+M-1); y_seg=lin_conv(x_seg,h,L); y_seg(1:N-1)=y_seg(1:N-1)+t(1:N-1); t(1:N-1)=y_seg(M+1:L); y(xi:xi+M-1)=y_seg(1:M); end
y=y(1:Lx+N-1) ;
end

function y=overlap_save(x,h,M)
N=length(h); Lx=length(x);
if N>M M=N+1;
end
L=M+N-1; T=ceil(Lx/M); t=zeros(1,N-1); x=[x,zeros(1,(T+1)*M-Lx)]; y=zeros(1,(T+1)*M); for i=0:T;
xi=i*M+1;
x_seg=[t,x(xi:xi+M-1)];
t=x_seg(M+1:M+N-1);
y_seg=lin_conv(x_seg,h,L);
y(xi:xi+M-1)=y_seg(N:M+N-1); end
y=y(1:Lx+N-1) ; end

function y=lin_conv(x1,x2,L)
y1=fft(x1,L);
y2=fft(x2,L);
Yk=y1.*y2;
y=ifft(Yk);
end