ovrlpadd.m
来自「realize overlapped-add method %[y]=over」· M 代码 · 共 25 行
M
25 行
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 + =
减小字号Ctrl + -
显示快捷键?