蝶形算法 matlab,FFT快速傅里叶变换(蝶形算法)详解

41528d3028836879cd698677c3999917.gifFFT快速傅里叶变换(蝶形算法)详解

第五章 快速傅里叶变换 本章目录 n直接计算DFT的问题及改进的途径 n n 按按时间抽取时间抽取的的基基2-FFT2-FFT算算 法法 n n 按按频率抽取频率抽取的基的基2-FFT2-FFT算算 法法 n n 快速快速傅里叶逆变换傅里叶逆变换(IFFT)(IFFT)算法算法 n n MatlabMatlab实现实现 2 5.1 引言 n n DFTDFT在实际应用中很重要在实际应用中很重要: : 可以计算信号的频可以计算信号的频 谱、功率谱和线性卷积等。谱、功率谱和线性卷积等。 n n 直接按直接按DFTDFT变换进行计算,当序列长度变换进行计算,当序列长度N N很很 大时,计算量非常大,所需时间会很长。大时,计算量非常大,所需时间会很长。 n n FFTFFT并不是一种与并不是一种与DFTDFT不同的变换,而是不同的变换,而是 DFTDFT的一种快速计算的算法。的一种快速计算的算法。 3 5.2 直接计算DFT的问题及改进的途径 n n DFTDFT的运算量的运算量 设复序列x(n) 长度为N点,其DFT为 k=0,,…,N-1 (1)计算一个X(k) 值的运算量 复数乘法次数: N 复数加法次数: N-1 4 5.2.1 DFT的运算量 (2)计算全部N个X(k) 值的运算量 复数乘法次数: N2 复数加法次数: N(N-1) (3)对应的实数运算量 5 一次复数乘法: 4次实数乘法 2次实数加法 + 一个X(k) :4N次实数乘法+ 2N+2(N-1)= 2(2N-1)次实数加法 所以 整个N点DFT运算共需要: N×2(2N-1)= 2N(2N-1) 实数乘法次数: 4 N2 实数加法次数: 6 DFT运算量的结论 N点DFT的复数乘法次数举例 NN2NN2 24644049 41612816384 864256 65 536 16256512 262 144 3210281024 1 048 576 结论:当N很大时,其运算量很大,对实时性很强的信号 处理来说,要求计算速度快,因此需要改进DFT的计算 方法,以大大减少运算次数。 7 5.2.2 减少运算工作量的途径 主要原理是利用系数 的以下特性对DFT进行分解: (1)对称性 (2)周期性 (3)可约性 另外, 8 5.3 按时间抽取的基2-FFT算法 n n 算法原理算法原理 n n 按时间抽取基按时间抽取基-2FFT-2FFT算法与直接计算算法与直接计算 DFTDFT运算量的比较运算量的比较 n n 按时间抽取的按时间抽取的FFTFFT算法的特点算法的特点 n n 按时间抽取按时间抽取FFTFFT算法的其它形式流程图算法的其它形式流程图 9 5.3.1 算法原理 设N=2L,将x(n)按 n 的奇偶分为两组: r =0,1,…, 则 10 式中,X1(k)和X2(k)分别是x1(n)和x2(n)的N/2的DFT。 另外,式中k的取值范围是:0,1, …,N/2-1 。 11 因此, 只能计算出X(k)的前一半值。 后一半X(k) 值, N/2 , N/2 +1, …,N ? 利用 可得到 同理可得 12 考虑到 因此可得后半部分X(k) 及前半部分X(k) k=0,1, …,N/2-1 k=0,1, …,N/2-1 13 蝶形运算 蝶形运算式 蝶形运算信 号流图符号 因此,只要求出2个N/2点的DFT,即X1(k)和X2(k),再 经过蝶形运算就可求出全部X(k)的值,运算量大大减少。 14 以8点为例第一次按奇偶分解 以N=8为例, 分解为2个4点 的DFT,然后 做8/2=4次蝶形 运算即可求出 所有8点X(k)的 值。 15 蝶形运算量比较 复数乘法次数: N2 复数加法次数: N(N-1) 复数乘法次数: 2*(N/2)2+N/2=N2/2+N/2 复数加法次数: 2*(N/2)(N/2-1)+2*N/2=N2/2 nN点DFTDFT的运算量的运算量 n n 分解一次后所需的运算量=分解一次后所需的运算量=2 2个个N/2N/2的的DFTDFT++ N/2N/2蝶形:蝶形: n n 因此通过一次分解后,运算工作量减少了差因此通过一次分解后,运算工作量减少了差 不多一半。不多一半。 16 进一步按奇偶分解 由于N=2L,因而N/2仍是偶数 ,可以进一步把每个N/2点 子序列再按其奇偶部分分解为两个N/4点的子序列。 以N/2点序列x1(r)为例 则有 k=0,1,…, 17 且 k=0,1,…, 由此可见,一个N/2点DFT可分解成两个N/4点DFT。 同理,也可对x2(n)进行同样的分解,求出X2(k)。 18 以8点为例第二次按奇偶分解 19 算法原理 对此例N=8,最后剩下的是4个N/4= 2点的DFT,2点 DFT也可以由蝶形运算来完成。以X3(k)为例。 k=0, 1 即 这说明,N=2M的DFT可全部由蝶形运算来完成。 20 以8点为例第三次按奇偶分解 N=8按时间抽取法FFT信号流图 21 5.3.2 按时间抽取基2-FFT算法与直接计算DFT运算量的比较 由按时间抽取法FFT的信号流图可知,当N=2L时,共有 级 蝶形运算;每级都由 个蝶形运算组成,而每个蝶形有 次复乘、 次复加,因此每级运算都需 次复乘和 次复加。 L N/2 N/2 12 N 22 这样 级运算总共需要: L 复数乘法: 复数加法: 直接DFT算法运算量 复数乘法: 复数加法: N2 N(N-1) 直接计算DFT与FFT算法的计算量之比为M 23 FFT算法与直接DFT算法运算量的比较 NN2 计算量 之比M NN2 计算量 之比M 2414.012816 38444836.6 41644.025665 5361 02464.0 864125.4512262 1442 304113.8 16256328.010241 048 5765 120204.8 3210288012.820484 194 30411 264372.4 64404919221.4 24 5.3.3 按时间抽取的FFT算法的特点 •序列的逆序排列 •同址运算(原位运算) •蝶形运算两节点间的距离 • 的确定 25 序列的逆序排列 由于 x(n) 被反复地按奇、偶分组,所以流图输入端的 排列不再是顺序的,但仍有规律可循: 因为 N=2M , 对于任意 n(0≤n ≤N-1),可以用M个 二进制码表示为: n 反复按奇、偶分解时,即按二进制码的“0” “1” 分解。 •序列的逆序排列 26 倒位序的树状图(N=8) 27 码位的倒位序(N=8) 自然顺序 n二进制数倒位序二进制数倒位序顺序数 00000000 10011004 20100102 30111106 41000011 51011015 61100113 71111117 28 倒位序的变址处理(N=8) 29 同址运算(原位运算) 某一列任何两个节点k 和j 的节点变量进行蝶形运算 后,得到结果为下一列k、j两节点的节点变量,而和其他 节点变量无关。这种原位运算结构可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值