- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
The Fast Fourier Transform 邢砾云 电子信息工程学院 北华大学 Overview DFT的计算 快速傅立叶变换算法 短时傅立叶变换 1. DFT的计算 由于时域处理更加经济, 因此滤波器设计已经转向时域处理. 但是频域处理使得有些问题变得更加简单: 需要有效的方法来计算DFT. 离散傅立叶变换 DFT: 离散序列的离散变换. 矩阵形式: 具有许多特殊结构?可以设计高效算法. 计算复杂性 对于每一个点需要N个复数乘法和N-1个复数加法, k = 0, 1,2, …, N-1. 复数乘法: (a+bj)(c+dj) = (ac-bd)+j(ad+bc) 需要4个实数乘法 + 2个实数加法. 复数加法 = 2 个实数加法. 总共需要4N2 个实数乘法和 4N2 –2 N 个实数加法. Goertzel 算法 把X(k)化为: 以上式子具有卷积的形式, 令 Goertzel 算法 因此把X(k)表示为卷积的形式: X(k) = yk(N) 而 yk(n) = xe(n)* hk(n) 多项式可以表示为 Goertzel 算法 对于每一个X(k)分别滤波处理: 即使只有一些采样点也能计算. 不需要很大的缓存和系数表. 与完全傅立叶变换有同样的复杂度 (4N2 个实数乘法和 4N2 –2 N 个实数加法). 做乘法时,可以乘以一个实分母的形式: 2 快速傅立叶变换 FFT把DFT的计算复杂度从O(N2)降到O(N?log2N). 当N很大是这两者的复杂度差异就更明显. 算法原理是把大的DFT分解成许多小的DFTs. 一般使用经过优化了的库函数来实现. Decimation in Time FFT 给定序列x(n), 0 ? n N, N = 2M i.e. N 以2为基底. 把 z变换X(z)分解为奇数部分和偶数部分: 序列x(n) 中的N/2 个偶数点的 z变换: 序列x(n) 中的N/2 个奇数点的z变换: 时域抽取的FFT算法 由于 以及 因此 分解成了只有N/2个点列DFT. 时域抽取的FFT算法 等价于 偶数点列的DFT和奇数点列的DFT之和. 计算复杂性的初步估计 DFTN{x(n)} = DFTN/2{x0(n)}+Wk DFTN/2{x1(n)} 我们可以通过估计N/2个点列的DFT的计算复杂性来估计N个点列的DFT的计算复杂性. 如果 DFTN{?} ~ O(N2) 那么 DFTN/2{?} ~ O((N/2)2) = 1/4 O(N2) ?总的计算量 ~ 2?1/4O(N2) = 直接计算DFT计算量的 1/2. 第一级的DIT计算流程图 多级DIT算法 把一个DFTN分解成两个更小的DFTN/2能加速DFTN的计算速度, 因此我们可以考虑把DFTN/2作进一步的分解: 其中X00(kN/4)为偶数子集合的偶数点DFT, X01(kN/4)为奇数点的DFT. 两级DIT计算流程图 多级DIT快速傅立叶变换 按照以上奇偶分解方法把DFTs一直分解到只有两个点的DFTs: ? N = 2 个点的DFT分解为M级蝶形计算流程图. ?实数乘法 M?4N, 实数加法 2?M?2N ? 复杂性 ~ O(N?M) = O(N?log2N) FFT 实现细节 基本的蝶形结: 可以化简为: 8个点列的DIT FFT流程图 -1 已经被合并进加法接点. W0N 已经消失 内嵌算法: 逐级计算. FFT的计算步骤 全部计算分解为M级. 把输入序列x(n)的下标0, 1, 2, 3, …, N-1写成二进制的形式, 并且把它进行“码位倒读”, 重新按十进制读数, 如: 3 ? 011? 110 ? 6, 5 ? 101?101?5. 每级迭代都包含N/2个蝶形单元. 每个蝶形单元都包含Wnk与W-nk 的运算. 各级W的分布规律. 码位倒置 输入序列x(n)按照码位倒置存储, 输出序列X(k)为正常顺序. Question : 输入序列为什么要按照码位倒置的顺序存储, 而不是其它顺序? 它的本质是由于我们每次要把序列按照奇偶分组引起的. Question: 序列x(n)的下标 n = 0, 1, 2, 3, …, 2M –1, 这N = 2M个数我们如何判断它的奇偶性? 码位倒置规律 偶数: 能被2整除的数. 把一个非负整数n 表示为二进制的形式: 因此非负整数n能被2整除, 意味着它的二进制表达式中的末尾系数 c0 = 0. n不能被2整除意味着它的二进制系数 c0 = 1. 码位倒置规律 因此对序
文档评论(0)