傅里叶变换 ~ 基 2 时间抽取 FFT 算法

文章目录

  • 1、基2时间抽取FFT算法原理
  • 2、基2时间抽取FFT算法流图
    • 2.1、示例1 ~ 4点的序列表示成两个2点的DFT
    • 2.2、示例2 ~ 8点的序列表示成两个2点的DFT
    • 2.3、实例演示
  • 3、基2时间抽取FFT算法流图特点
    • 3.1、蝶形图的关系
    • 3.2、旋转因子的规律
    • 3.3、序列关系
    • 3.4、原位运算
  • 4、基2时间抽取FFT算法的复杂度

1、基2时间抽取FFT算法原理

将一个长序列的DFT,表达为2个短序列的DFT。按照奇偶下标进行拆分,原理如下图所示:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第1张图片
注意:采用基 2 时间抽取方法的 N 必须是2的整次幂。

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第2张图片
上面推导不仅使用了周期性,还使用了对称性:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第3张图片
所以就可以得到短序列合成长序列的DFT:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第4张图片
对于基2的时间抽取,分解到最后一级,就是两点的时域序列,两点序列求DFT,用下面的表达式:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第5张图片
然后再不断合成,2点合成4点,4点合成8点,不断向回推。对于基2的时间抽取,只有一级是实现时域到频域的转化,剩下的其他运算,都是利用短序列的 DFT 来合成长序列的 DFT 。
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第6张图片上图的两个矩阵是一样的,为后面实现 DFT 的流图能够统一奠定了基础。右边的图是为了辅助理解的。

2、基2时间抽取FFT算法流图

2.1、示例1 ~ 4点的序列表示成两个2点的DFT

演示一个4点的序列 FFT 流图,如下图所示:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第7张图片傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第8张图片傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第9张图片在上图中,只标注了-1的地方,凡是1的地方都没有标注,这样使得图更简洁。

2.2、示例2 ~ 8点的序列表示成两个2点的DFT

演示一个8点的序列 FFT 流图,如下图所示:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第10张图片然后再将 4 点序列的 DFT 分解为2 个 2 点序列的DFT。
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第11张图片
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第12张图片上图中只有 2点DFT 是实现从时域到频域的变换,后面都是短序列的DFT合成长序列的DFT。

由于时域上 2 点序列计算 DFT 和用两个短序列合成长序列的DFT的矩阵是一样的,
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第13张图片
所以整个图看起来就非常对称,实际上就是完全对称的,如下所示:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第14张图片将这个图完整地表达出来,就是这样的:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第15张图片对于8点的序列来说,一共分为3级;
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第16张图片
第一级是把时域的序列转化为它对应的DFT的值;
第二级是两个2点序列DFT合成一个4点序列DFT;
第二级是两个4点序列DFT合成一个8点序列DFT;

库利-图基的这个基二时间抽取FFT算法是一个非常精妙之处就在于它的这个算法结构非常对称。这个算法效率高,而且易于硬件实现。

2.3、实例演示

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第17张图片傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第18张图片
最终得出结果:
在这里插入图片描述

3、基2时间抽取FFT算法流图特点

3.1、蝶形图的关系

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第19张图片第一级的时候,蝶形图的间隔都是1;
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第20张图片傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第21张图片

3.2、旋转因子的规律

旋转因子到最后一级一定是N0,N1,N2,… N/2 - 1。

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第22张图片旋转因子的规律如下:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第23张图片

3.3、序列关系

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第24张图片这个图告诉我们,将原本的下标0,1,2,3,4,5,6,7二进制表示之后,将这个二进制序列倒一下个,就得到它对应的所要的下标。
所以FFT在实现的时候,我们都用这样倒序的方式来实现。

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第25张图片

3.4、原位运算

FFT还有一个非常奇妙的地方,它可以实现原位运算。

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第26张图片原位预算就是后面一级的数据会自动覆盖前面一级的数据。
输入序列是8点序列,在整个运算过程中始终占着8个位置,无需存储中间计算结果。

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第27张图片

4、基2时间抽取FFT算法的复杂度

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第28张图片
复数乘法的次数变化:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第29张图片
当然这要求N应该等于2的M次,如果不满足,那就补0,补到满足为止。

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第30张图片

可以通过具体的数据直观展示:

傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第31张图片有了FFT算法之后,让本来难以实时完成的DFT运算,可以实时完成。

通过程序实际体验:
傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第32张图片傅里叶变换 ~ 基 2 时间抽取 FFT 算法_第33张图片
FFT算法只占DFT算法不到它原来的0.04%。这个效率是非常可观的。

你可能感兴趣的:(数字信号处理)