📄 ovrlpadd.m
字号:
function [y]=ovrlpadd(x,h,Nfft)
%realize overlapped-add method
%[y]=overlpadd(x,h,Nfft)
%y:output sequence
%x:input sequence
%h:filter impulse response sequence
%Nfft:points of each DFT operation
%重叠相加法实现分段卷积
Lenx=length(x);
M=length(h);
N=Nfft-M+1; %确定每一个分段的大小
x=[x,zeros(1,N-1)]; %填充序列使得循环中对序列的索引不会超出范围
K=floor(Lenx/N); %确定分段数
y=zeros(1,Lenx+Nfft-1); %初始化输出序列
for i=0:1:K
ix=i:N;
x_seg=x(ix+1:ix+N); %取出每一个分段
y_seg=circonv2(x_seg,h,Nfft);%对每一个分段进行处理
y(ix+1:ix+Nfft)=y(ix+1:ix+Nfft)+y_seg(1:Nfft); %重叠相加
end
y=y(1:Lenx+M-1); %取出真正的输出序列
if~any(imag(h))&~any(imag(x))
y=real(y); %判断是否为实数序列
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -