class="markdown_views prism-github-gist">
FFT及其框图实现
基2时域抽取
基2频域抽取
FFT的全称为快速傅里叶变换,但是FFT并不是一种变换,而是实现DFT的一种快速算法。当N比较大时,使用FFT可大大减少进行DFT变换的计算量。
N点的DFT所需的计算量为:
X[k]=n=0∑N−1x[n]WNkn
乘法:N2次,加法:N(N−1)次。每当N提高一倍,计算量增大四倍。
基2时域抽取
假设有一长度为2N的有限长序列x[n],现对其进行DFT变换,现有一算法可以将2N点的DFT计算降为N的DFT计算,如下:
记g[n]为x[n]的下标为偶数时的序列,即g[n]=x[2n],0≤n≤N−1,记v[n]为x[n]的下标为奇数时的序列,即v[n]=x[2n+1],0≤n≤N−1,则
X[k]=n=0∑2N−1x[n]W2Nkn=n=0∑N−1x[2n]W2Nk2n+n=0∑N−1x[2n+1]W2Nk(2n+1)=n=0∑N−1g[n]WNkn+W2Nkn=0∑N−1v[n]WNkn=G[<k>N]+W2NkV[<k>N],0≤k≤2N−1
当0≤k≤N−1时
X[k]=G[k]+W2NkV[k]
当N≤k≤2N−1时
X[k]=G[<k>N]+W2NkV[<k>N]k=m+NG[m]−W2NmV[m],0≤m≤N−1
其中g[n]和v[n]的DFT都是N点的。
两个N点的DFT的运算量(以乘法为例)为2N2,而一个2N点的