利用FFT实现快速卷积.docx
- 文档编号:5825381
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:6
- 大小:133.04KB
利用FFT实现快速卷积.docx
《利用FFT实现快速卷积.docx》由会员分享,可在线阅读,更多相关《利用FFT实现快速卷积.docx(6页珍藏版)》请在冰豆网上搜索。
利用FFT实现快速卷积
利用FFT实现快速卷积
一、实验原理
应用FFT实现数字滤波器实际上就是用FFT来快速计算有限长度序列的线性卷积。
这种方法就是先将输入信号x(n)通过FFT变换为它的频谱采样值X(k),然后再和FIR滤波器的频响采样值H(k)相乘,H(k)可事先存放在存储器中,最后再将乘积H(k)X(k)通过快速傅里叶变换(简称IFFT)还原为时域序列,即得到输出y(n)。
现以FFT求有限长序列间的卷积及求有限长度序列与较长序列间的卷积为例来讨论FFT的快速卷积方法。
(1)序列x(n)和h(n)的长差不多。
设x(n)的长为N1,h(n)的长为N2,要求
用FFT完成这一卷积的具体步骤如下:
①为使两有限长序列的线性卷积可用其循环卷积代替而不发生混叠,必须选择循环卷积长度
,若采用基2-FFT完成卷积运算,要求
(
为整数)。
②用补零方法使x(n)和h(n)变成列长为N的序列。
③用FFT计算x(n)和h(n)的N点离散傅里叶变换
④完成X(k)和H(k)乘积,
⑤用FFT计算Y(k)的离散傅里叶反变换得
yn=real(yn);
end
y=conv(x,h);
n=0:
N-1;
subplot(2,1,1);
stem(n,y);
ylabel('时域计算');
subplot(2,1,2);
stem(n,yn,'.');
ylabel('FFT快速');
n=[0:
1:
15];
m=[0:
1:
16];
N1=length(n);
N2=length(m);
xn=ones(1,N1);
hn=(-0.5).^m;
N=N1+N2-1;
XK=fft(xn,N);
HK=fft(hn,N);
YK=XK.*HK;
yn=ifft(YK,N);
ifall(imag(xn)==0)&(all(imag(hn)==0))
yn=real(yn);
stem(x,yn,'.');
n=[0:
1:
15];
m=[0:
1:
16];
N1=length(n);
N2=length(m);
xn=cos(2*pi*n/N1);
hn=(-0.5).^m;
N=N1+N2-1;
XK=fft(xn,N);
HK=fft(hn,N);
YK=XK.*HK;
yn=ifft(YK,N);
ifall(imag(xn)==0)&(all(imag(hn)==0))
yn=real(yn);
end
x=0:
N-1;
stem(x,yn,'.');
n=[0:
1:
15];
m=[0:
1:
16];
N1=length(n);
N2=length(m);
xn=(1/3).^n;
hn=(-0.5).^m;
N=N1+N2-1;
XK=fft(xn,N);
HK=fft(hn,N);
YK=XK.*HK;
yn=ifft(YK,N);
ifall(imag(xn)==0)&(all(imag(hn)==0))
yn=real(yn);
end
x=0:
N-1;
stem(x,yn,'.');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 FFT 实现 快速 卷积