利用fft实现快速卷积.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、实验原理 应用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)的离散傅里叶反变换得 (2)当x(n)长度很长时,即,通常不允许等x(n)全部采集齐后再进行卷积,否则使输出相对于输入有较长的延时,另外,若太大,h(n)要补上太多的零点,很不经济,且FFT的计算时间也要很长。为此,采用分段卷积的方法,即把x(n)分成长度与h(n)相仿的一段段,分别求出每段卷积的结果,然后用相应的方式把它们结合起来,便是总的输出。 二、实验内容与要求 ⑴给定两个序列x(n)=[2,1,1,2],h(n)=[1,-1,-1,1]。首先直接在时域计算两者的线性卷积;其次用FFT快速计算二者的线性卷积,验证结果。 ⑵数字滤波器的脉冲响应为h(n)=(- ,N可自定,本实验取N=17 输入序列x(n)可选下列几种情况: ①X(n)=R(n),N可自取16 ②x(n)=cos(,N=16 ③X(n)=( R(n), N=16 ⑶实验前,预先编制一个应用FFT实现数字滤波器的通用程序。 ⑷上机独立调试,并打印或记录实验结果。 ⑸将实验结果与预先笔算的结果比较,验证其正确性。 三、实验过程 x=[2,1,1,2]; h=[1 -1 -1 1]; XK=fft(x,N); HK=fft(h,N); YK=XK.*HK; yn=ifft(YK,N); if all(imag(x)==0)(all(imag(h)==0)) 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); if all(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); if all(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); if all(imag(xn)==0)(all(imag(hn)==0)) yn=real(yn); end x=0:N-1; stem(x,yn,.);

文档评论(0)

xina171127 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档