按时间抽取的基2快速傅立叶算法推导过程
时间: 2023-11-19 16:06:51 浏览: 86
按时间抽取的基2FFT算法分析.doc
按时间抽取的基2快速傅立叶算法的推导过程可以分为两个部分:第一部分是将FFT分解为多个级别,第二部分是对每个级别进行基2蝶形运算。
第一部分:
假设FFT的长度为N,可以将FFT分解为log2(N)个级别。在第k级别,将FFT的长度划分为2^k个子序列,每个子序列的长度为N/(2^k)。假设FFT输入的复数序列为x(n),第k级别的输出为X_k(m),其中n和m均为序列的下标。
在第0级别,输入为x(n),输出为X_0(m)。根据傅立叶变换的定义,X_0(m)可以表示为:
X_0(m) = sum(x(n) * exp(-2πi * m * n / N)), n=0,1,...,N-1
在第1级别,输入序列可以分为两个子序列:偶数项序列x_e(n)和奇数项序列x_o(n),其中:
x_e(n) = x(2n), n=0,1,...,N/2-1
x_o(n) = x(2n+1), n=0,1,...,N/2-1
对这两个子序列分别进行FFT变换,得到X_e(m)和X_o(m)。根据傅立叶变换的性质,可以得到:
X_k(m) = X_e(m) + exp(-2πi * m / N) * X_o(m)
其中,k表示级别,m表示序列的下标。
在第k级别,可以将输入序列分为2^k个子序列,每个子序列的长度为N/(2^k),然后对每个子序列分别进行FFT变换,得到X_e(m)和X_o(m),再按照上述公式得到X_k(m)。
第二部分:
每个级别的输出X_k(m)可以表示为两个部分的和:X_e(m)和exp(-2πi * m / N) * X_o(m)。这两个部分可以看成是一个基2蝶形运算(butterfly operation)的输出,其中:
X_e(m) = X_k(m) + X_k(m + N/2)
X_o(m) = (X_k(m) - X_k(m + N/2)) * exp(2πi * m / N)
对于每个级别,都需要进行N次基2蝶形运算,因此总共需要进行N log2(N)次基2蝶形运算。
综上所述,按时间抽取的基2快速傅立叶算法可以高效地计算离散傅立叶变换。
阅读全文