数值计算-利用Python实现快速傅里叶变换(FFT)(不调用函数库)
快速傅里叶变换介绍
首先介绍离散傅里叶变换(DFT),不管是正变换还是逆变换,计算公式可以归结为
X ( k ) = ∑ n = 0 N − 1 x ( n ) W N n k X(k)=\sum_{n=0}^{N-1}x(n)W_N^{nk} X(k)=n=0∑N−1x(n)WNnk
其中, N N N为抽样点的个数(一般为 2 n 2^n 2n), x ( n ) x(n) x(n)为已知数据(拟合函数时为节点函数值), W N = e − i 2 π n W_N=e^{-i\frac{2\pi}{n}} WN=e−in2π为旋转因子。
而快速傅里叶变换(FFT),只是对DFT在算法上进行一定的幼化,降低复杂度,同样可以总结为一个公式:
X ( k ) = { ∑ n = 0 N / 2 − 1 x 1 ( r ) W N / 2 r k + W N k ∑ n = 0 N / 2 − 1 x 2 ( r ) W N / 2 r k k = 0 , 1 , ⋯ , N 2 − 1 ∑ n = 0