?? 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 + -