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

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

将一个长序列的DFT,表达为2个短序列的DFT。按照奇偶下标进行拆分,原理如下图所示:
在这里插入图片描述
注意:采用基 2 时间抽取方法的 N 必须是2的整次幂。

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

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

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

演示一个4点的序列 FFT 流图,如下图所示:
在这里插入图片描述在这里插入图片描述在上图中,只标注了-1的地方,凡是1的地方都没有标注,这样使得图更简洁。

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

演示一个8点的序列 FFT 流图,如下图所示:
在这里插入图片描述然后再将 4 点序列的 DFT 分解为2 个 2 点序列的DFT。
在这里插入图片描述
在这里插入图片描述上图中只有 2点DFT 是实现从时域到频域的变换,后面都是短序列的DFT合成长序列的DFT。

由于时域上 2 点序列计算 DFT 和用两个短序列合成长序列的DFT的矩阵是一样的,
在这里插入图片描述
所以整个图看起来就非常对称,实际上就是完全对称的,如下所示:
在这里插入图片描述将这个图完整地表达出来,就是这样的:
在这里插入图片描述对于8点的序列来说,一共分为3级;
在这里插入图片描述
第一级是把时域的序列转化为它对应的DFT的值;
第二级是两个2点序列DFT合成一个4点序列DFT;
第二级是两个4点序列DFT合成一个8点序列DFT;

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

2.3、实例演示

在这里插入图片描述在这里插入图片描述
最终得出结果:
在这里插入图片描述

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

3.1、蝶形图的关系

在这里插入图片描述第一级的时候,蝶形图的间隔都是1;
在这里插入图片描述在这里插入图片描述

3.2、旋转因子的规律

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

在这里插入图片描述旋转因子的规律如下:
在这里插入图片描述

3.3、序列关系

在这里插入图片描述这个图告诉我们,将原本的下标0,1,2,3,4,5,6,7二进制表示之后,将这个二进制序列倒一下个,就得到它对应的所要的下标。
所以FFT在实现的时候,我们都用这样倒序的方式来实现。

在这里插入图片描述

3.4、原位运算

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

在这里插入图片描述原位预算就是后面一级的数据会自动覆盖前面一级的数据。
输入序列是8点序列,在整个运算过程中始终占着8个位置,无需存储中间计算结果。

在这里插入图片描述

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

在这里插入图片描述
复数乘法的次数变化:
在这里插入图片描述
当然这要求N应该等于2的M次,如果不满足,那就补0,补到满足为止。

在这里插入图片描述

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

在这里插入图片描述有了FFT算法之后,让本来难以实时完成的DFT运算,可以实时完成。

通过程序实际体验:
在这里插入图片描述在这里插入图片描述
FFT算法只占DFT算法不到它原来的0.04%。这个效率是非常可观的。

  • 54
    点赞
  • 225
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值