線性卷积的FFT算法及其matlab实现.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  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算法及其matlab实现

/jpkc2/ipkc/signal/new/course/two/2_3_31.htm线性卷积的FFT算法 线性卷积是求离散系统响应的主要方法之一,许多重要应用都建立在这一理论基础上,如卷积滤波等。 以前曾讨论了用循环卷积计算线性卷积的方法归纳如下: 将长为N2的序列x(n)延长到L,补L-N2个零 将长为N1的序列h(n)延长到L,补L-N1个零 如果L≥N1+N2-1,则循环卷积与线性卷积相等,此时,可有FFT计算线性卷积,方法如下: a.计算X(k)=FFT[x(n)] b.求H(k)=FFT[h(n)] c.求Y(k)=H(k)Y(k) k=0~L-1 d.求y(n)=IFFT[Y(k)] n=0~L-1 可见,只要进行二次FFT,一次IFFT就可完成线性卷积计算。计算表明,L32时,上述计算线性卷积的方法比直接计算线卷积有明显的优越性,因此,也称上述循环卷积方法为快速卷积法。 上述结论适用于x(n),h(n)两序列长度比较接近或相等的情况,如果x(n),h(n)长度相差较多,例如,h(n)为某滤波器的单位脉冲响应,长度有限,用来处理一个很长的输入信号x(n),或者处理一个连续不断的信号,按上述方法,h(n)要补许多零再进行计算,计算量有很大的浪费,或者根本不能实现。为了保持快速卷积法的优越性,可将x(n)分为许多段后处理,每小段的长与h(n)接近,其处理方法有两种: (1)重叠相加法——由分段卷积的各段相加构成总的卷积输出 假定xi(n)表示图中第i段x(n)序列: 则输入序列可表为: 于是输出可分解为: 其中 由此表明,只要将x(n)的每一段分别与h(n)卷积,然后再将这些卷积结果相加起来就可得到输出序列,这样,每一段的卷积都可用上面讨论的快速卷积来计算。先对h(n)及xi(n)补零,补到具有N点长度,N=N1+N2-1。 一般选择N=2M,然后用基2 FFT算法通过正反变换计算 yi(n)=xi(n)*h(n) 由于yi(n)的长度为N,而xi(n)的长度为N2,因此相邻两yi(n)序列必然有N-N2=N1-1点发生重叠,这个重叠部分应该相加起来才能构成最后的输出序列。 计算步骤: a. 事先准备好滤波器参数H(k)=DFT[h(n)],N点 b.用N点FFT计算Xi(k)=DFT[xi(n)] c.Yi(k)=Xi(k)H(k) d.用N点IFFT求 yi(n)=IDFT[Yi(k)] e.将重叠部分相加 ?(2)重叠保存法 这种方法和第一种方法稍有不同,即将上面分图序列中补零的部分不是补零,而是保留原来的输入序列值,且保留在各段的前端,这时,如利用DFT实现h(n)和xi(n)的循环卷积,则每段卷积结果的前N1-1个点不等于线性卷积值需舍去。 为了清楚地看出这点,研究一下x(n)中一段长为N的序列xi(n)与h(n)(长为N1)的循环卷积情况: 由于h(n)的长度为N1,当0≤n≤N1-2时,h((n-m))N将在xi(m)的尾部出现有非零值,如图n=1的情况就是如此,所以0≤n≤N1-2这部分yi(n)值中将混入xi(m)尾部与h((n-m))N的卷积值,从而使yi(n)不同于线性卷积结果,但当n=N1-1~N-1时,则有h((n-m))N =h(n-m),因此从n=N1-1点开始圆周圈卷积值完全与线性卷积值一样,yi(n)的后面N2点才是正确的卷积值,而每一段卷积运算结果的前N1-1点个值需去掉。 为了不造成输出信号遗漏,对x(n)分段时,需使相邻两段有N1-1个点的重叠(对于第一段,x(n)由于没有前一段保留信号,在其前填补N1-1点个零点)。为此将xi(n)定义为 每段和h(n)的循环卷积以yi(n)表示, ,由FFT算出,去掉yi(n)的前N1-1点,再把相邻各段输出顺次连接起来就构成了最终的输出序列y(n)。 重叠保留法每一输入段均由N-N1+1= N2个新点和前一段保留下来的N1-1个点所组成(N=N1+N2-1)。值得注意的是,对于有限长时间序列x(n)(长度为L=M× N2),在结束段(i=M-1)做完后,我们所得到的只是L点的线性卷积,还少了N1-1点,实际上就是h(-n)移出x(n)尾部时的不完全重合点,或者说是最后一段的重叠部分(N1-1个点,即每次都要删除的长度,但由于其位于序列尾部,故在其后增加N2个0以再行计算最后一次)少做了一次卷积,为此,应再补做这一段N1-1点,在其后填补N2点个零点保证长度仍为N点,一样舍去前取N1-1点,并从N1-1点开始,保留N2-1点。 重叠保留法与重叠相加法的计算量差不多,但省去了重叠相加法最后的相加运算。一般来说,用FFT作信号滤波,只用于FIR滤波器阶数h(n)大于32的情况下,

文档评论(0)

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

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

1亿VIP精品文档

相关文档