应用FFT实现快速卷积.doc
文本预览下载声明
一、实验目的
1.加深理解FFT在实现数字滤波(或快速卷积)中的重要作用,更好的利用FFT进行数字信号处理。
2.掌握循环卷积和线性卷积两者之间的关系。
二、实验原理
对于FIR滤波器来说,除了可以通过数字网络来实现外,也可以通过FFT的变换来实现。
首先我们知道,一个信号序列x(n)通过FIR滤波器时,其输出应该是x(n)与h(n)的卷积:
当h(n)是一个有限长序列,即h(n)是FIR滤波器,且时
三、实验内容与要求
1.给定两个序列x(n)=[2,1,1,2],h(n)=[1,-1,-1,1].首先直接在时域计算两者的线性卷积;其次用FFT快速计算两者的线性卷积,验证结果。
2.数字滤波器的脉冲响应为,N2取17。
输入序列x(n)可选下列几种情况
① ,N1取16。
② ,N1取16。
③ ,N1取16。
四、实验程序及图谱
1)在时域计算两者的线性卷积
xn=[2 1 1 2];
hn=[1 -1 -1 1];
yn=conv(xn,hn);
stem(yn);
ylabel(xn与hn卷积的幅度);
xlabel(xn);
用FFT快速计算两者的线性卷积
n=[0:1:3];
m=[0:1:3];
N1=length(n);
N2=length(m);
xn=[2 1 1 2];
hn=[1 -1 -1 1];
N=N1+N2-1;
XK=fft(xn,N);
HK=fft(hn,N);
YK=XK.*HK;
yn=ifft(YK,N);
if all(imag(xn)==0)(all(imag(hn)==0))
yn=real(yn);
end
x=0:N-1;
stem(x,yn,.)
2)① ,N1取16。
n=[0:1:15];
m=[0:1:16];
N1=length(n);
N2=length(m);
hn=(-0.5).^n;
xn=ones(1,N1);
N=N1+N2-1;
XK=fft(xn,N);
HK=fft(hn,N);
YK=XK.*HK;
yn=ifft(YK,N);
if all(imag(xn)==0)(all(imag(hn)==0))
yn=real(yn);
end
x=0:N-1;
stem(x,yn,.)
② ,N1取16。在原程序中改变xn=cos(2*pi*n/N1);其他不变
③ ,N1取16。在原程序中改变xn=(1/3).^n;其他不变
显示全部