#! https://zhuanlan.zhihu.com/p/663449060

快速傅里叶变换(FFT)之二:Radix-2 DIF FFT

引言

在上一小节中,我们分析了Radix-2 DIT FFT的基本原理。本小节将介绍Radix-2 DIF FFT的基本原理。

基本原理

设序列\(x[n]\)的长度为\(N=2^M\)\(M\)为整数。我们首先将\(x[n]\)分为两个长度为\(N/2\)的两个子序列。则\(x[n]\)的DFT可以表示为:

\[\begin{split}\displaystyle \begin{equation*} \begin{split} X(k)& =\sum_{n=0}^{N-1}x[n]W_N^{nk} \\ & = \sum_{n=0}^{N/2-1}x[n]W_N^{nk} + \sum_{n=N/2}^{N-1}x[n]W_N^{nk} \\ & = \sum_{n=0}^{N/2-1}x[n]W_{N}^{nk} + \sum_{n=0}^{N/2-1}x[n+N/2]W_{N}^{(n+N/2)k} \\ & = \sum_{n=0}^{N/2-1}x[n]W_{N}^{nk} + (-1)^k\sum_{n=0}^{N/2-1}x[n+N/2]W_{N}^{nk} \\ \end{split}\end{equation*}\end{split}\]

\(k=2r\)为偶数时,\((-1)^k=1\),当\(k=2r+1\)为奇数时,\((-1)^k=-1\)。因此,我们可以将\(X(k)\)分为两部分:

\[\begin{split}\displaystyle \begin{equation*} \begin{split} X(2r)& = \sum_{n=0}^{N/2-1}x[n]W_{N}^{n2r} + \sum_{n=0}^{N/2-1}x[n+N/2]W_{N}^{n2r} \\ & = \sum_{n=0}^{N/2-1}(x[n]+x[n+N/2])W_{N/2}^{nr} \end{split}\end{equation*}\end{split}\]
\[\begin{split}\displaystyle \begin{equation*} \begin{split} X(2r+1)& = \sum_{n=0}^{N/2-1}x[n]W_{N}^{n(2r+1)} - \sum_{n=0}^{N/2-1}x[n+N/2]W_{N}^{n(2r+1)} \\ & = \sum_{n=0}^{N/2-1}(x[n]-x[n+N/2])W_N^nW_{N/2}^{nr} \end{split}\end{equation*}\end{split}\]

我们可以用下面的示意图表示上述的过程:

其中\(X[2r]\)\(x[n]+x[n+N/2]\)\(N/2\)点的DFT,\(X[2r+1]\)\((x[n]-x[n+N/2])W_N^n\)\(N/2\)点的DFT。我们可以按着这种思想继续将\(x[n]+x[n+N/2]\)\((x[n]-x[n+N/2])W_N^n\)分为两个长度为\(N/4\)的子序列,然后再进行蝶形运算。直到最后的序列为2点的DFT。我们以8点的DFT为例,画出了Radix-2 DIF FFT的计算流程图:

DIF和DIT的比较

DIF时域的输入为自然顺序,频域的输出为倒位序。DIT时域的输入为倒位序,频域的输出为自然顺序。DIF和DIT的基本蝶形结构是互为转置的。因此,DIF和DIT的流图是互为转置的。按照转置定理,两个流图的输入-输出特性必然相同。转置就是将流图的所有支路方向都反向,并且交换输入与输出,但节点变量值不交换。因此DIF的计算复杂度跟DIT也是一样的。