信号、系统与信号处理实验Ⅱ
实验报告
姓名:王健
学号: 14072119
班级: 14083413
上课时间:周五-六七八
实验名称:利用FFT实现快速卷积
1、实验目的
(1) 加深理解FFT在实现数字滤波中的重要作用,更好地利用FFT进行数字信号处理
(2) 进一步掌握圆周卷积和线性卷积两者之间的关系
2、实验原理与要求
实验原理
应用FFT实现数字滤波器实际上就是用FFT来快速计算有限长度序列的线性卷积。
这种方法就是先将输入信号x(n)通过FFT变换为它的频谱采样值X(k),然后再和FIR滤波器的频响采样值H(k)相乘,H(k)可事先存放在存储器中,最后再将乘积H(k)X(k)通过快速傅里叶变换(简称IFFT)还原为时域序列,即得到输出y(n),其原理框图如下:
实验要求
1 给定两个序列x(n)=[2,1,1,2],h(n)=[1,-1,-1,1]。
首先直接在时域计算
两者的线性卷积;其次用FFT快速计算二者的线性卷积,验证结
果。
2 数字滤波器的脉冲响应为,N2可自定,本实验取N2=17
输入序列x(n)可选下列几种情况:
1: ,N1可取16
2:,N1=16
3:, N1=16
3 实验前,预先编制一个应用FFT实现数字滤波器的通用程序。
4 上机独立调试,并打印或记录实验结果。
5 将实验结果与预先笔算的结果比较,验证其正确性。
3、实验程序与结果
1. 应用FFT实现数字滤波器的通用程序
function yn=fftconv(xn,hn)
N=length(xn)+length(hn)-1;
YK=fft(xn,N).*fft(hn,N);
yn=ifft(YK,N);
if all(imag(xn)==0)&&(all(imag(hn)==0))
yn=real(yn);
end
2. 两个序列x(n)=[2,1,1,2],h(n)=[1,-1,-1,1]。
首先直接在时域计算两者的线性卷积;其次用FFT快速计算二者的线性卷积
clear;clc;close all
xn=[2 1 1 2];
hn=[1 -1 -1 1];
N=length(xn)+length(hn)-1;
yn=fftconv(xn,hn);
yc=conv(xn,hn);
subplot(1,2,1)
stem(0:N-1,yn,'.')
title('用fft计算卷积')
subplot(1,2,2)
stem(0:length(yc)-1,yc,'.')
title('用conv计算卷积')
结果:
3. 数字滤波器的脉冲响应为,N2可自定,本实验N2=17
输入序列x(n)可选下列几种情况下的卷积
clear;clc;close all
n=0:16;
hn=(-1/2).^n;
xn1=ones(1,16);
yn1=fftconv(xn1,hn);
subplot(1,2,1)
stem(0:length(xn1)+length(hn)-2,yn1,'.') title('用fft计算卷积')
subplot(1,2,2)
yc1=conv(xn1,hn);
stem(0:length(yc1)-1,yc1,'.')
title('用conv计算卷积')
figure
N2=16;n2=0:N2-1;
xn2=cos(2*pi/N2.*n2).*ones(1,N2);
yn2=fftconv(xn2,hn);
subplot(1,2,1)
stem(0:length(xn2)+length(hn)-2,yn2,'.') title('用fft计算卷积')
subplot(1,2,2)
yc2=conv(xn2,hn);
stem(0:length(yc2)-1,yc2,'.')
title('用conv计算卷积')
figure
N3=16;n3=0:N3-1;
xn3=(1/3).^n3.*ones(1,N3);
yn3=fftconv(xn3,hn);
subplot(1,2,1)
stem(0:length(xn3)+length(hn)-2,yn3,'.') title('用fft计算卷积')
subplot(1,2,2)
yc3=conv(xn3,hn);
stem(0:length(yc3)-1,yc3,'.')
title('用conv计算卷积')
结果
,N1取16
,N1=16
, N1=16
4、仿真结果分析
从仿真的结果图可以看出利用函数fftconv函数即先频域乘积再转换时域的方法求卷积与conv计算的结果是一样的,说明这种方法是正确实用的
5、实验问题解答与体会
这一次数字信号处理实验,虽然题目看起来简单,但是编程的时候却会有陷阱,加上自己的粗心用了好久才完成。
以后做实验一定不能大意,一定要预习,特别是例程,例程能很好地表达函数用法,使逻辑更加清楚。
另外,在以后实验的时候一定要带上数字信号处理的教材,因为实验能很好地实践验证教材所教的东西,加深自己的理解,纠正自己的错误观念,结合教材去验证加深知识,而不是一味为完成实验而做实验。