FFT快速傅里葉變換(蝶形算法)詳解_第1頁
FFT快速傅里葉變換(蝶形算法)詳解_第2頁
FFT快速傅里葉變換(蝶形算法)詳解_第3頁
FFT快速傅里葉變換(蝶形算法)詳解_第4頁
FFT快速傅里葉變換(蝶形算法)詳解_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、2n直接計算直接計算DFT的問題及改進的途徑的問題及改進的途徑 3 4 設(shè)復(fù)序列設(shè)復(fù)序列x(n) 長度為長度為N點,其點,其DFT為為10( )( )NnkNnX kx n Wk=0,N-1 (1)計算一個)計算一個X(k) 值的運算量值的運算量復(fù)數(shù)乘法次數(shù):復(fù)數(shù)乘法次數(shù): N復(fù)數(shù)加法次數(shù):復(fù)數(shù)加法次數(shù): N15(2)計算全部)計算全部N個個X(k) 值的運算量值的運算量復(fù)數(shù)乘法次數(shù):復(fù)數(shù)乘法次數(shù): N2復(fù)數(shù)加法次數(shù):復(fù)數(shù)加法次數(shù): N(N1)(3)對應(yīng)的實數(shù)運算量)對應(yīng)的實數(shù)運算量1100( )( )Re ( )Im ( )ReImNNnknknkNNNnnX kx n Wx njx nWj

2、W10Re ( ) ReIm ( ) ImNnknkNNnx nWx nWRe ( ) ImIm ( ) RenknkNNjx nWx nW6一次復(fù)數(shù)乘法一次復(fù)數(shù)乘法: 4次實數(shù)乘法次實數(shù)乘法 2次實數(shù)加法次實數(shù)加法 一個一個X(k) :4N次實數(shù)乘法次實數(shù)乘法 2N+2(N-1)= 2(2N-1)次實數(shù)加法次實數(shù)加法 所以所以 整個整個N點點DFT運算共需要:運算共需要:N2(2N-1)= 2N(2N-1)實數(shù)乘法次數(shù):實數(shù)乘法次數(shù):4 N2實數(shù)加法次數(shù):實數(shù)加法次數(shù):7N點點DFT的復(fù)數(shù)乘法次數(shù)舉例的復(fù)數(shù)乘法次數(shù)舉例NN2NN22464404941612816384864256 65 53

3、6 16256512 262 144 3210281024 1 048 576 結(jié)論結(jié)論:當:當N很大時,其運算量很大,對實時性很強的信號很大時,其運算量很大,對實時性很強的信號處理來說,要求計算速度快,因此需要改進處理來說,要求計算速度快,因此需要改進DFT的計算的計算方法,以大大減少運算次數(shù)。方法,以大大減少運算次數(shù)。 8 nkNW主要原理是利用系數(shù)主要原理是利用系數(shù) 的以下特性對的以下特性對DFT進行分解:進行分解: nkNW(1)對稱性)對稱性 ()nkNW()k N nNW(2)周期性)周期性 ()()n N kn k NnkNNNWWW(3)可約性)可約性 mnknkmNNWW/n

4、knk mNN mWW另外,另外,12/NNWkNNkNWW)2/(9101(2 )( )xrx r設(shè)設(shè)N2L,將,將x(n)按按 n 的奇偶分為兩組:的奇偶分為兩組: 2(21)( )xrx rr =0,1, 12N10( ) ( )( )NnkNnX kDFT x nx n W則則1010)()(NnnnkNNnnnkNWnxWnx為奇數(shù)為偶數(shù)11120)12(1202) 12()2(NrkrNNrrkNWrxWrx1202212021)()(NrrkNkNNrrkNWrxWWrx)()(21kXWkXkN1010)()(NnnnkNNnnnkNWnxWnx為奇數(shù)為偶數(shù)式中,式中,X1(k

5、)和和X2(k)分別是分別是x1(n)和和x2(n)的的N/2的的DFT。另外,式中另外,式中k的取值范圍是:的取值范圍是:0,1, ,N/21 。12因此,因此, 只能計算出只能計算出X(k)的前一半值。的前一半值。12( )( )( )kNX kX kW Xk后一半后一半X(k) 值,值, N/2 , N/2 1, ,N ?rkNW2(2)2r NkNW利用利用可得到可得到 1()2NXk2 1(2)120( )Nr NkNrx r W2 1120( )NrkNrx r W)(1kX同理可得同理可得22()( )2NXkXk13考慮到考慮到 kNkNNNkNNWWWW2)2(因此可得后半部

6、分因此可得后半部分X(k) )2()2()2(221NkXWNkXNkXNkN12( )( )( )kNX kX kW Xk及前半部分及前半部分X(k) )()(21kXWkXkNk=0,1, ,N/21k=0,1, ,N/211412( )( )( )kNX kX kW Xk12( )( )( )kNX kX kW Xk蝶形運算式蝶形運算式蝶形運算信蝶形運算信號流圖符號號流圖符號 因此,只要求出因此,只要求出2個個N/2點的點的DFT,即,即X1(k)和和X2(k),再,再經(jīng)過蝶形運算就可求出全部經(jīng)過蝶形運算就可求出全部X(k)的值,運算量大大減少。的值,運算量大大減少。150NW1NW2N

7、W3NW以以N=8為例,為例,分解為分解為2個個4點點的的DFT,然后,然后做做8/2=4次蝶形次蝶形運算即可求出運算即可求出所有所有8點點X(k)的的值。值。16復(fù)數(shù)乘法次數(shù): N2復(fù)數(shù)加法次數(shù): N(N1)復(fù)數(shù)乘法次數(shù): 2*(N/2)2+N/2=N2/2+N/2復(fù)數(shù)加法次數(shù): 2*(N/2)(N/21)+2*N/2=N2/2nN點 17 由于N2L,因而N/2仍是偶數(shù) ,可以進一步把每個N/2點子序列再按其奇偶部分分解為兩個N/4點的子序列。 以N/2點序列x1(r)為例 1314(2 )( )0,1,1(21)( )4xlx lNlxlx l則有 rkNNrWrxkX212011)()

8、(klNNllkNNlWlxWlx)12(21401221401) 12()2(lkNNlkNlkNNlWlxWWlx41404241403)()()()(42/3kXWkXkNk=0,1, 14N18且且13/24( )( )4kNNXkXkWXkk=0,1, 14N由此可見,一個由此可見,一個N/2點點DFT可分解成兩個可分解成兩個N/4點點DFT。 同理,也可對同理,也可對x2(n)進行同樣的分解,求出進行同樣的分解,求出X2(k)。 192013/40( )lkNlx l W02(0)(4)xW x0(0)(4)NxW x 對此例對此例N=8,最后剩下的是,最后剩下的是4個個N/4=

9、2點的點的DFT,2點點DFT也可以由蝶形運算來完成。以也可以由蝶形運算來完成。以X3(k)為例。為例。 /4 133/40( )( )NlkNlXkx l Wk=0, 1即即03323(0)(0)(1)XxW x13323(1)(0)(1)XxW x12(0)(4)xW x0(0)(4)NxW x這說明,這說明,N=2M的的DFT可全部由蝶形運算來完成??扇坑傻芜\算來完成。21N=8按時間抽取法按時間抽取法FFT信號流圖信號流圖 22由按時間抽取法FFT的信號流圖可知,當N=2L時,共有 級蝶形運算;每級都由 個蝶形運算組成,而每個蝶形有 次復(fù)乘、 次復(fù)加,因此每級運算都需 次復(fù)乘和 次

10、復(fù)加。 LN/2 N/2 12N23這樣這樣 級運算總共需要:級運算總共需要: L復(fù)數(shù)乘法: NNLN2log22復(fù)數(shù)加法: NNLN2log直接直接DFT算法運算量算法運算量 復(fù)數(shù)乘法: 復(fù)數(shù)加法: N2N(N1)直接計算直接計算DFT與與FFT算法的計算量之比為算法的計算量之比為MNNNNNM222log2log224NN2計算量之比M NN2計算量之比M 2414.012816 38444836.641644.025665 5361 02464.0864125.4512262 1442 304113.816256328.010241 048 5765 120204.83210288012

11、.820484 194 30411 264372.464404919221.4NN2log2NN2log225n序列的逆序排列n同址運算(原位運算)n蝶形運算兩節(jié)點間的距離n 的確定rNW26)(01221)()(BINMMDECnnnnnn 由于由于 x(n) 被反復(fù)地按奇、偶分組,所以流圖輸被反復(fù)地按奇、偶分組,所以流圖輸入端的入端的排列不再是順序的,但仍有規(guī)律可循:排列不再是順序的,但仍有規(guī)律可循: 因為因為 N=2M , 對于任意對于任意 n(0n N-1),可以用可以用M個個二進制碼表示為:二進制碼表示為:10,01221nnnnnMM n 反復(fù)按奇、偶分解時,即按二進制碼的反復(fù)按奇

12、、偶分解時,即按二進制碼的“0” “1” 分解。分解。n序列的逆序排列2728自然順序自然順序 n二進制數(shù)二進制數(shù)倒位序二進制數(shù)倒位序二進制數(shù)倒位序順序數(shù)倒位序順序數(shù)0000000010011004201001023011110641000011510110156110011371111117 n2930 某一列任何兩個節(jié)點某一列任何兩個節(jié)點k 和和j 的節(jié)點變量進行蝶形運算的節(jié)點變量進行蝶形運算后,得到結(jié)果為下一列后,得到結(jié)果為下一列k、j兩節(jié)點的節(jié)點變量,而和其他兩節(jié)點的節(jié)點變量,而和其他節(jié)點變量無關(guān)。這種原位運算結(jié)構(gòu)可以節(jié)省存儲單元,節(jié)點變量無關(guān)。這種原位運算結(jié)構(gòu)可以節(jié)省存儲單元,降低設(shè)

13、備成本。降低設(shè)備成本。)(kX)2(NkX)(1kX)(2kXkNW運算前運算前運算后運算后)2(NkA)(kA)2(NkA)(kA例例n同址運算(原位運算)3132以以N=8為例:為例:第一級蝶形,距離為:第一級蝶形,距離為:第二級蝶形,距離為:第二級蝶形,距離為:第三級蝶形,距離為:第三級蝶形,距離為:規(guī)律規(guī)律:對于共:對于共L級的蝶形而言,其級的蝶形而言,其m級蝶形運算的節(jié)級蝶形運算的節(jié) 點間的距離為點間的距離為12412mn蝶形運算兩節(jié)點間的距離 33rNW以N=8為例:0,10224/jWWWWmjjNrNm時,1 , 0,2422/jWWWWmjjjNrNm時,3 , 2 , 1

14、, 0,382jWWWWmjjjNrNm時,級:第LNM,212 , 2 , 1 , 0,12LjrNjWWLMLMLMLN2222LMLMMLMLjNjNjjNjjNrNWeeWW222222rNWn 的確定 34n算法原理算法原理 再把輸出再把輸出X(k)按按k的奇偶分組的奇偶分組先把輸入按先把輸入按n的順序分成前后兩半的順序分成前后兩半設(shè)序列長度為設(shè)序列長度為N=2L,L為整數(shù)為整數(shù) 前半子序列前半子序列x(n) 后半子序列后半子序列)2(Nnx 0n12N0n12N3510( )( )NnkNnX kx n W由由DFT定義得定義得/2 110/2( )( )NNnknkNNnn Nx

15、 n Wx n W12/0)2(12/0)2()(NnkNnNNnnkNWNnxWnx12/02)2()(NnnkNkNNWWNnxnxk=0,1, ,N36由于由于 1222jNNjNNeeW/2 120( )( )()2NNknkNNnNX kx nx nWW所以所以kkNNW) 1(2則則 12/0)2() 1()()(NnnkNkWNnxnxkXk=0,1, ,N37然后按然后按k的奇偶可將的奇偶可將X(k)分為兩部分分為兩部分 221krkrr=0,1, ,12N則式則式 12/0)2() 1()()(NnnkNkWNnxnxkX可轉(zhuǎn)化為可轉(zhuǎn)化為 nrNNnWNnxnxrX212/0

16、)2()()2(12/02/)2()(NnnrNWNnxnx)12(12/0)2()() 12(rnNNnWNnxnxrXnrNnNNnWWNnxnx212/0)2()(38/2 1/20(2 )( )()2NnrNnNXrx nx nW令令 nNWNnxnxnxNnxnxnx)2()()()2()()(21n=0,1, ,12N代入代入 /2 120(21) ( )()2NnnrNNnNXrx nx nWWnrNNnnrNNnWnxrWnxr2120221201)() 12()()2(r=0,1, ,12N可得可得為為2個個N/2點的點的DFT,合起來正好是,合起來正好是N點點X(k)的值。

17、的值。39nNWNnxnxnxNnxnxnx)2()()()2()()(21將將稱為蝶形運算稱為蝶形運算與時間抽選基與時間抽選基2FFT算法中的蝶形運算符號略有不同。算法中的蝶形運算符號略有不同。40例例 按頻率抽取,將按頻率抽取,將N點點DFT分解為兩個分解為兩個N/2點點DFT的組合的組合(N=8) 41 與時間抽取法的推導(dǎo)過程一樣,由于與時間抽取法的推導(dǎo)過程一樣,由于 N=2L,N/2仍然是仍然是一個偶數(shù),因而可以將每個一個偶數(shù),因而可以將每個N/2點點DFT的輸出再分解為偶數(shù)組的輸出再分解為偶數(shù)組與奇數(shù)組,這就將與奇數(shù)組,這就將N/2點點DFT進一步分解為兩個進一步分解為兩個N/4點點

18、DFT。 N=842n頻率抽取法輸入是自然順序,輸出是倒位序的;時間抽取法正好相反。n頻率抽取法的基本蝶形與時間抽取法的基本蝶形有所不同。n頻率抽取法運算量與時間抽取法相同。n頻率抽取法與時間抽取法的基本蝶形是互為轉(zhuǎn)置的。 43MN 2IDFT公式公式 10)(1NknkNWkXNkXIDFTnxDFT公式公式 nkNNnWnxnxDFTkX10)()()(比較可以看出,比較可以看出, nkNWnkNWMN211IDFT多出多出M個個1/2可分解到可分解到M級蝶形運算中。級蝶形運算中。444510)(1)(NknkNWkXNkXIDFT10)(1NknkNWkXN10)(1NknkNWkXN1

19、( )( )IFFT X kFFT XkN( )X k 求共軛( )XkFFT 求( )FFT Xk( )FFT XkN 除以( )x n 求共軛46n用用FFT進行譜分析的進行譜分析的Matlab實現(xiàn)實現(xiàn)n用用CZT進行譜分析的進行譜分析的Matlab實現(xiàn)實現(xiàn)n在在Matlab中使用的線性調(diào)頻中使用的線性調(diào)頻z變換函數(shù)為變換函數(shù)為czt,其調(diào)用格式為其調(diào)用格式為nX= czt(x, M, W, A)n其中,其中,x是待變換的時域信號是待變換的時域信號x(n),其長度為,其長度為N,M是變換的長度,是變換的長度,W確定變換的步長,確定變換的步長,A確定變換確定變換的起點。若的起點。若M= N,

20、A= 1,則,則CZT變成變成DFT。47例例5.1 設(shè)模擬信號設(shè)模擬信號 ,以,以 t= 0.01n (n=0: N-1) 進行取樣,試用進行取樣,試用fft函數(shù)對其做頻譜分析。函數(shù)對其做頻譜分析。N分別分別為:為:(1) N=45;(2) N=50;(3) N=55;(2) N=60。 ( )2sin(4)5cos(8)x ttt程序清單如下程序清單如下 %計算計算N=45的的FFT并繪出其幅頻曲線并繪出其幅頻曲線N=45;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);figure(1)subplo

21、t(2,2,1)plot(q,abs(y)title(FFT N=45)48%計算計算N=50的的FFT并繪出其幅頻曲線并繪出其幅頻曲線N=50;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);figure(1)subplot(2,2,2)plot(q,abs(y)title(FFT N=50)49%計算計算N=55的的FFT并繪出其幅頻曲線并繪出其幅頻曲線N=55;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);figu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論