概述
FFT在通信领域有着很重要的地位,因为它运算快,易于硬件实现,例如OFDM符号的生成就可以直接利用FFT,今天我们就分析一下FFT的原理。
一、DFT复杂度
我们知道FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform)。那么为什么要有这种高效算法呢?就先从DFT说起。下面是DFT的公式:
式中
既然FFT是为了减小DFT的运算复杂度,那么咱们先分析DFT的运算复杂度。举一个简单的例子,假如采用N=3,采用的是BPSK调制,那么假设信号序列是101,经过BPSK调制之后,信号如下:
根据欧拉公式有:
其中N=3,所以对于k=0:
还有k=1和k=2时X(1)和X(2)。
从这个具体的例子中不难推导出DFT的运算复杂度,对于一个k值,需要进行4N次实数相乘和4N-2次实数相加,所以总共需要4N*N次相乘和N(4N-2)次相加,也就说它的复杂度是O(n^2)。
二、FFT推导
FFT方便处理长度N=2^M的情况,如果长度不是2的整数次幂的情况,则通过补零即可。
首先将x(n)分为奇偶两个序列之和:
则两个序列的长度都为N/2,则:
由于:
所以:
对于其中的X1(k)和X2(k),我们可以推导下面过程:
所以:
即:
我们把一个N点的DFT拆成了两个N/2的DFT。同理逐渐拆下去,直到2^m的DFT拆成m-1个2点DFT为止。就以8点DFT为例,可以拆成两个4点DFT:
然后继续可以拆成4个2点DFT:
这就是FFT的蝶形运算。
最后
以上就是大力音响为你收集整理的FFT原理的全部内容,希望文章能够帮你解决FFT原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复