- 1、本文档共81页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[信息与通信]FFT原理
§6.7 线性卷积的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)X(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)重叠相加法 (2)重叠保留法 (1)重叠相加法——由分段卷积的各段相加构 成总的卷积输出 h(n) x(n) 序列长度为 序列长度为 假定 表示x(n)序列的第i段 : 则输入序列可表为: 于是输出可分解为: 其中 d.重叠部分相加构成最后的输出序列。 重叠相加法计算步骤: a.?先对h(n)及 补零,补到具有N点长度, N=N1+N2-1,并且满足N=2M 。 b. 用N点FFT计算 c. 用N点FFT计算 由于 的长度为N,而 的长度为N2,因此相邻两段序列 必然有N-N2=N1-1 点发生重叠,最后的输出应该是这些重叠部分相加起来,再和不重叠部分共同组成输出序列 。 重叠相加法对处理一个无限长的语音信号或地震信号都是十分有效的。 有N1-1个点发生重叠 (2)重叠保留法 ? 这种方法和第一种方法稍有不同,即将上面分段序列中补零的部分不是补零,而是保留原来的输入序列值,如果利用FFT实现h(n)和xi(n)的圆周卷积,则每段卷积结果中有N1-1个点不等于线性卷积值需舍去。 重叠保留法与重叠相加法的计算量差不多,但省去了重叠相加法最后的相加运算。 h(n) x(n) 序列长度为 序列长度为 (1)重叠相加法 (2)重叠保留法 保留 点的输入序列值 FFT应用中的几个问题 实数序列的FFT 以上讨论的FFT算法都是复数运算,包括序列x(n)也认为是复数,但大多数场合,信号是实数序列,任何实数都可看成虚部为零的复数。例如,求某实信号x(n)的复谱,可认为是实信号加上数值为零的虚部组成复信号(x(n)+j0),再用FFT求其离散傅里叶变换。这种作法很不经济,因为把实序列变成复序列,存储器要增加一倍,且计算机运行时,即使虚部为零,也要进行涉及虚部的运算,造成运算速度下降。合理的解决方法是利用复数据FFT对实数据进行有效计算,下面介绍两种方法。 ?(1)用一个N点FFT同时计算两个N点实序列的DFT 设x(n)、y(n)是彼此独立的两个N点实序列,且 X(k)=DFT[x(n)], Y(k)=DFT[y(n)] 则X(k)、Y(k)可通过一次FFT运算同时获得。 首先将x(n)、y(n)分别当作一复序列的实部及 虚部,令:g(n)=x(n)+jy(n) 通过FFT运算可获得g(n)的DFT值 ? 利用离散傅里叶变换的共轭对称性 通过g(n)的FFT运算结果G(k),由上式可得到 X(k)的值。Y(k)的值也可以通过g(n)的FFT运算结果G(k)得到。 作一次N点复序列的FFT,再通过加、减法运算就可以将X(k)与Y(k)分离出来。显然,这将使运算效率提高一倍。 ?(2)用一个N点的FFT获得一个2N点实序列的DFT 设x(n)是2N点的实序列,现人为地将x(n)分为偶数组x1(n)和奇数组x2(n) x1(n)=x(2n) n=
文档评论(0)