Fast Fourier Transform(FFT)是计算Discrete Fourier Transform(DFT)的高效算法. Cooley-Tukey算法是实施FFT的最常用方法,依靠DFT的递归分解,了解其数学基础有助于优化和有效应用算法.

FFT的数学基础

DFT将一系列复杂的数字转换成频率组件。定义如下:

X(k)= ⁇ n=0 ]N-1 ]]x(n) e -2 ⁇ i kn/N ]]]

其中x(n)是输入序列,X(k)是频率组件,N是序列长度.

库利-托基算法的衍生

Cooley-Tukey算法通过将序列分为偶数和奇数部分,将DFT分解为较小的DFT:

X(k)= ⁇ n=0 ]]N-1 ]] x(n) e ]-2 ⁇ i kn/N ]]].

,可重写为:

X(k)= ⁇ n= 0 ]N/2-1 ]]x(2n) e ]-2 ⁇ i 2n k/N ]+ e -2 ⁇ i k/N ]] ]] n= 0 ]]N/2-1 ]]]]x(2n+1] e ]-2 ⁇ i 2n k/N ]]]]]]

这种分离可以对较小的DFT进行递归计算,将计算的复杂性从O(N2)降低到O(Nlog N).

应用算法

FFT算法反复应用递归分解,直到大小 1 的基数实现。然后使用双倍系数组合结果,这些系数是复杂的指数词:

WN(k)=e-2 ⁇ i k/N].

这些因素在重组过程中调整了较小的DFT的阶段,从而能够高效计算全变换.