快速傅里叶变换-正文

  计算离散傅里叶变换的一种快速算法,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。
  当用数字计算机计算信号序列x(n)的离散傅里叶变换时,它的正变换

  (1)

反变换(IDFT)是

 (2)

式中x(n)和X(k)可以是实数或复数。由上式可见,要计算一个抽样序列就需要做N次复数乘法运算及N-1次复数加法运算。
  计算离散傅里叶变换的快速方法,有按时间抽取的FFT算法和按频率抽取的FFT算法。前者是将时域信号序列按偶奇分排,后者是将频域信号序列按偶奇分排。它们都借助于的两个特点:一是的周期性;另一是的对称性,这里符号*代表其共轭。这样,便可以把离散傅里叶变换的计算分成若干步进行,计算效率大为提高。
  时间抽取算法  令信号序列的长度为N=2M,其中M是正整数,可以将时域信号序列x(n)分解成两部分,一是偶数部分x(2n),另一是奇数部分x(2n+1),其中。于是信号序列x(n)的离散傅里叶变换可以用两个 N/2抽样点的离散傅里叶变换来表示和计算。考虑到和离散傅里叶变换的周期性,式(1)可以写成

(3)

其中

(4a)

(4b)

由此可见,式(4)是两个只含有N/2个点的离散傅里叶变换,G(k)仅包括原信号序列中的偶数点序列,H(k)则仅包括它的奇数点序列。虽然k=0,1,2,…,N-1,但是G(k)和H(k)的周期都是N/2,它们的数值以N/2周期重复。
  因为于是由式(3)和式(4)得到

   (5a)

   (5b)

因此,一个抽样点数为N 的信号序列 x(n)的离散傅里叶变换,可以由两个 N/2抽样点序列的离散傅里叶变换求出。依此类推,这种按时间抽取算法是将输入信号序列分成越来越小的子序列进行离散傅里叶变换计算,最后合成为N点的离散傅里叶变换。

快速傅里叶变换

  通常用图1中蝶形算法的信号流图来表示式(5)的离散傅里叶变换运算。例如,N=8=23的抽样点的信号序列x(n)的离散傅里叶变换,可用如图2所示的FET算法的信号流图来计算。由图可知
  ① N=2M点的离散傅里叶变换的计算全由蝶形运算组成,需要M级运算,每级包括N/2个蝶形运算,总共有 个蝶形运算。所以,总的计算量为次复数乘法运算和N log2N次复数加法运算。

快速傅里叶变换

  ② FFT算法按级迭代进行,计算公式可以写成

    (6)

N抽样点的输入信号具有N个原始数据x0(n),经第一级运算后,得出新的N个数据x1(n),再经过第二级迭代运算,又得到另外N个数据x2(n),依此类推,直至最后的结果x(k)=xM(k)=X(k)在逐级迭代计算中,每个蝶形运算的输出数据存放在原来存贮输入数据的单元中,实行所谓“即位计算”,这样可以节省大量存放中间数据的寄存器。
  ③ 蝶形运算中加权系数随迭代级数成倍增加。由图2可以看出系数的变化规律。对于N=8,M=3情况,需进行三级迭代运算。在第一级迭代中,只用到一种加权系数;蝶形运算的跨度间隔等于1。在第二级迭代中,用到两种加权系数即;蝶形运算的跨度间隔等于2。在第三级迭代中,用到4种不同的加权系数即;蝶形运算的跨度间隔等于4。可见,每级迭代的不同加权系数的数目比前一级迭代增加一倍;跨度间隔也增大一倍。
  ④ 输入数据序列x(n)需重新排列为x(0)、x(4)、x(2)、x(6)、x(1)、x(5)、x(3)、x(7),这是按照二进制数的码位倒置所得到的反序数,例如N=8中数“1”的二进制数为“001”,将其码位倒转变为“100”,即为十进制数“4”。
  频率抽取算法  按频率抽取的 FFT算法是将频域信号序列X(k)分解为奇偶两部分,但算法仍是由时域信号序列开始逐级运算,同样是把 N点分成N/2点计算FFT,可以把直接计算离散傅里叶变换所需的N2次乘法缩减到次。
  在N=2的情况下,把N点输入序列x(n)分成前后两半

 (7)

时间序列x1(nx2(n)的长度为N/2, 于是N点的离散傅里叶变换可以写成

 (8a)

 (8b)

频率信号序列X(2l)是时间信号序列x1(n)+x2(n)的N/2点离散傅里叶变换,频率信号序列X(2l+1)是时间信号序列【x1(n)-x2(n)】N/2点离散傅里叶变换,因此,N点离散傅里叶变换的计算,通过两次加(减)法和一次乘法,从原来序列获得两个子序列,所以,频率抽取算法也具有蝶形运算形式。以2为基数的FFT基本蝶形运算公式为

(9)

其计算量完全和时间抽取算法一样,即只需 次乘法运算和Nlog2N次加(减)法运算。图3 表示N=8=23点的离散傅里叶变换的信号流图。由图可见,它以三级迭代进行即位计算,输入数据是按自然次序存放,使用的系数也是按自然次序,而最后结果则以二进制反序存放。

快速傅里叶变换

  实际上,频率抽取算法与时间抽取算法的信号流图之间存在着转置关系,如将流图适当变形,可以得出多种几何形状。
  除了基2的FFT算法之外,还有基4、基8等高基数的FFT算法以及任意数为基数的FFT算法。
  参考书目
 何振亚著:《数字信号处理的理论与应用》下册,人民邮电出版社,北京,1983。
 E.O.布里汉著,柳群译:《快速傅里叶变换》,上海科学技术出版社,1979。(E. O. Brigham, The Fast Fourier Transform,Prentice Hall,Englewood Cliffs,New Jersey,1974.)

快速傅里叶变换-快速傅里叶变换相关推荐

  1. ubuntu 使用FFTW快速计算离散傅里叶变换

    FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开 ...

  2. 2维FFT算法实现——基于GPU的基2快速二维傅里叶变换

    2维FFT算法实现--基于GPU的基2快速二维傅里叶变换 上篇讲述了一维FFT的GPU实现(FFT算法实现--基于GPU的基2快速傅里叶变换),后来我又由于需要做了一下二维FFT,大概思路如下. 首先 ...

  3. 傅里叶变换短时傅里叶变换小波变换

    一.傅里叶变换 关于傅里叶变换的基本概念在此我就不再赘述了,默认大家现在正处在理解了傅里叶但还没理解小波的道路上.(在第三节小波变换的地方我会再形象地讲一下傅里叶变换) 下面我们主要将傅里叶变换的不足 ...

  4. 【牛客每日一题】4.16 逆序对 ( 数学 , 排列组合 ,快速幂 , 快速乘 )

    [每日一题]逆序对 链接:https://ac.nowcoder.com/acm/problem/14731 来源:牛客网 题目描述 求所有长度为n的01串中满足如下条件的二元组个数: 设第i位和第j ...

  5. 【数字信号处理】傅里叶变换性质 ( 傅里叶变换频移性质示例 )

    文章目录 一.傅里叶变换时移性质 二.傅里叶变换时移性质示例 一.傅里叶变换时移性质 傅里叶变换频移性质 : " 序列信号 x(n)x(n)x(n) " 的 " 傅里叶变 ...

  6. 【数字信号处理】傅里叶变换性质 ( 傅里叶变换频移性质 | 证明过程 )

    文章目录 一.傅里叶变换时移性质 1.证明过程 2.使用场景 一.傅里叶变换时移性质 傅里叶变换频移性质 : " 序列信号 x(n)x(n)x(n) " 的 " 傅里叶变 ...

  7. 【数字信号处理】序列傅里叶变换 ( 序列傅里叶变换与反变换 | 序列绝对可和 与 存在傅里叶变换之间的关系 | 序列傅里叶变换性质 )

    文章目录 一.序列傅里叶变换与反变换 二.序列绝对可和 与 存在傅里叶变换之间的关系 三.序列傅里叶变换性质 一.序列傅里叶变换与反变换 在上一篇博客 [数字信号处理]序列傅里叶变换 ( 序列傅里叶变 ...

  8. matlab图片快速傅里叶变换,图像傅里叶变换(快速傅里叶变换FFT) | 学步园

    #include "Image_FFT.h" /* 中心化,根据傅里叶性质的平移性质 */ void FFT_Shift(double * src,int size_w,int s ...

  9. 傅里叶变换--快速傅里叶变换实现

    0.1. 定义 0.1.1. 连续 0.1.2. 离散 0.2. 性质 0.2.1. 分离性 0.2.2. 位移定理 0.2.3. 周期性 0.2.4. 共轭对称性 0.2.5. 旋转性 0.2.6. ...

最新文章

  1. 分布式锁的Redis实现
  2. C#中的MessageBox消息对话框
  3. Atomikos 中文说明文档【转】
  4. Java使用Future设置方法超时
  5. mysql基础拓扑图
  6. CodeDay#6 成都站落幕,下一站北京见
  7. php类常量的特点,php类常量是什么?类常量用法详解
  8. Spring Cloud配置–外部化应用程序配置
  9. ubuntu 16.04 + apache2 将php7.1 切换到 php7.3
  10. 密码锁 java接口_从synchronized和lock区别入手聊聊java锁机制
  11. centos的yum源换成阿里云
  12. 50年间,高水平论文数量国家排名是怎样变化的?| 可视化数据
  13. 攻防世界 mobile 安卓移动端简单题练习区 答题(1-12题解)
  14. “叔叔,你来监考了!”
  15. Docker 多模块打包启动(kitty-generator)
  16. 教你怎么短期内备考并通过PMP考试!
  17. 思科简单教程CCNA
  18. excel 数据透视表完成分类汇总
  19. 接口压力测试:Jmeter【专门做接口压力测试】
  20. u盘被写保护了无法格式化怎么办?

热门文章

  1. MySQL中delete结合exist删除数据
  2. WIN7 ftp网线直连传东西怎么设置
  3. 逻辑运算(按位取反)
  4. ETM地形编辑DEMO运行时出错问题
  5. Informatica保障江苏电信规范化ETL开发
  6. 数据库 Database
  7. ASCII码的了解及应用
  8. diskman DiskGenius 恢复windows管理中删除分区数据
  9. USACO健康的荷斯坦奶牛(DFS,二进制暴力枚举)
  10. [USACO2.1]健康的荷斯坦奶牛 Healthy Holsteins