数字信号处理实验实验六
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理实验报告
实验名称:利用FFT实现快速卷积
学生姓名:z
学生学号:
学生班级:
上课时间:周二上午
指导老师:
一、实验目的
(1)加深理解FFT在实现数字滤波(快速卷积)中的重要作用,更好的利用FFT 进行数字信号处理。
(2)进一步掌握圆周卷积和线性卷积两者之间的关系。
二、实验原理
数字滤波器根据系统的单位响应h(n)是有限长还是无限长可分为有限长单位冲激响应系统和无限长单位冲激响应系统。
一个信号序列x(n)通过FIR数字滤波器时,其输出应该是x(n)和h(n)的线性卷积
∑+∞
-∞=-
= =
m
m
n
h
m
x
n
h
n
x
n
y)
(
)
(
)
(
*
)
(
)
(
∑+∞
-∞=-
= =
m
m
n
x
m
h
n
x
n
h
n
y)
(
)
(
)
(
*
)
(
)
(
当h(n)是一个有限长序列,即h(n)是FIR滤波器
∑-=-
=
1
)
(
)
(
)
(
N
m
m
n
x
m
h
n
y
对于FIR数字滤波器来说,除了可以通过数字网络来实现外,也可以通过应用FFT来实现。
应用FFT实现数字滤波器实际上就是用FFT来快速计算有限长度序列的线性卷积。
粗略的说,这种方法就是先将输入信号x(n)t通过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)数字滤波器的冲激响应为h(n)=(-1/2)^nRn2(n),N2可自定,本实验取N2=17.
输入序列可以选下列几种情况
①x(n)=Rn1(n),N1可取16
②x(n)=cos(2π/N1*n)Rn1(n),N1=16
③x(n)=(1/3)^nRn1(n),N1=16
(3)实验前,预先编制一个应用FFT实现数字滤波器的通用程序。
(4)上级调试并打印或记录实验结果
(5)将实验结果与预先笔算的结果比较,验证其正确性
(1)MATLAB程序:
n=[0:1:3];
m=[0:1:3];
x=[2,1,1,2];
h=[1,-1,-1,1];
y=conv(x,h);
N1=length(n);
N2=length(n);
N=N1+N2-1;
XK=fft(x,N);
HK=fft(h,N);
YK=XK.*HK;
yn=ifft(YK,N);
if all(imag(xn)==0&(all(hn)==0))
yn=real(yn);
end
x=0:N-1;
subplot(1,2,1);
stem(y);
subplot(1,2,2);
stem(x,yn,'.')
执行结果如下图形所示:
-2
-1.5-1-0.500.511.5
2
(2)①x(n)=Rn1(n),N1可取16 MATLAB 程序:
n=[0:1:15]; m=[0:1:16]; N1=length(n); N2=length(m); xn=ones(1,N1); hn=(-0.5).^n; 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(hn)==0)) yn=real(yn); end
x=0:N-1; stem(x,yn,'.')
执行结果如下图形所示:
05101520253035②x(n)=cos(2π/N1*n)Rn1(n),N1=16
MATLAB程序:
n=[0:1:15];
m=[0:1:16];
N1=length(n);
N2=length(m);
xn=cos(2*pi/16*n);
hn=(-0.5).^n;
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(hn)==0))
yn=real(yn);
end
x=0:N-1;
stem(x,yn,'.')、
执行结果如下图形所示: