基8 FFT/IFFT算法原理与实现
本文从数学原理开始,不使用任何第三方库,用C语言实现了基于基8的FFT和IFFT算法,效率高,可以移植修改,适合各种场景应用。同时用python验证了C语言实现的正确性,可放心使用。
闲话少说,实战开始:
数学原理
离散傅里叶变换(DFT)定义为:
X [ k ] = ∑ n = 0 N − 1 x [ n ] ⋅ e − j 2 π k n / N , k = 0 , 1 , … , N − 1 X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j 2\pi kn/N}, \quad k=0,1,\ldots,N-1 X[k]=n=0∑N−1x[n]⋅e−j2πkn/N,k=0,1,…,N−1
逆变换(IDFT)为:
x [ n ] = 1 N ∑ k = 0 N − 1 X [ k ] ⋅ e j 2 π k n / N , n = 0 , 1 , … , N − 1 x[n] = \frac{1}{N} \sum_{k=0}^{N-1} X[k] \cdot e^{j 2\pi kn/N}, \quad n=0,1,\ldots,N-1 x[n]=N1k=0∑N−1X[k]⋅ej2πkn/N,n=0,1,…,N−1
基8算法要求 N = 8 m N=8^m N=8m。将输入序列分解为8个子序列:
x r [ m ] = x [ 8 m + r ] , r = 0 , 1 , … , 7 ; m = 0 , 1 , … , N / 8 − 1 x_r[m] = x[8m + r], \quad r=0,1,\ldots,7; \ m=0,1,\ldots,N/8-1 xr[m]=x[8m+r],r=0,1,…,

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



