算法 FFT理论1
DFT和FFT的运算量
N点DFT共需要N2次复数乘法和N(N-1)次复数加法,共4N2次实数乘法和(2N2+2N*(N-1))次实数加法。当N很大时,这是一个非常大的计算量。
利用FFT算法之后,任何一个N为2的整数幂(即N= 2M)的DFT,都可以通过M次分解,最后成为2点的DFT来计算。M次分解构成了从x(n)到X(k)的M级迭代计算,每级由N/2个蝶形运算组成。完成一个蝶形计算需一次乘法和两次复数加法。因此,完成N点的时间抽选FFT计算的总运算量为:
复数乘法次数:M*N/2=log2N*N/2
复数加法次数:M*2*N/2= log2N*N
大多数情况下复数乘法所花的时间最多,所以以复数乘法的计算次数来比较DFT与FFT的效率为:
DFT/FFT=2N/log2N。