DSP編程代碼,FFT算法,經(jīng)典!!
FFT實(shí)驗(yàn)
一、 理論:
公式(1)FFT運(yùn)算公式
FFT并不是一種新的變換,它是離散傅立葉變換(DFT)的一種快速算法。由于我們?cè)谟?jì)算DFT時(shí)一次復(fù)數(shù)乘法需用四次實(shí)數(shù)乘法和二次實(shí)數(shù)加法;一次復(fù)數(shù)加法則需二次實(shí)數(shù)加法。每運(yùn)算一個(gè)X(k)需要4N次復(fù)數(shù)乘法及2N+2(N-1)=2(2N-1)次實(shí)數(shù)加法。所以整個(gè)DFT運(yùn)算總共需要4N^2次實(shí)數(shù)乘法和N*2(2N-1)=2N(2N-1)次實(shí)數(shù)加法。如此一來,計(jì)算時(shí)乘法次數(shù)和加法次數(shù)都是和N^2成正比的,當(dāng)N很大時(shí),運(yùn)算量是可觀的,因而需要改進(jìn)對(duì)DFT的算法減少運(yùn)算速度。
根據(jù)傅立葉變換的對(duì)稱性和周期性,我們可以將DFT運(yùn)算中有些項(xiàng)合并。
我們先設(shè)序列長(zhǎng)度為N=2^L,L為整數(shù)。將N=2^L的序列x(n)(n=0,1,……,N-1),按N的奇偶分成兩組,也就是說我們將一個(gè)N點(diǎn)的DFT分解成兩個(gè)N/2點(diǎn)的DFT,他們又從新組合成一個(gè)如下式所表達(dá)的N點(diǎn)DFT:
一般來說,輸入被假定為連續(xù)、合成的。當(dāng)輸入為純粹的實(shí)數(shù)的時(shí)候,我們就可以利用左右對(duì)稱的特性更好的計(jì)算DFT。
我們稱這樣的RFFT優(yōu)化算法是包裝算法:首先2N點(diǎn)實(shí)數(shù)的連續(xù)輸入稱為“進(jìn)包”。其次N點(diǎn)的FFT被連續(xù)被運(yùn)行。最后作為結(jié)果產(chǎn)生的N點(diǎn)的合成輸出是
標(biāo)簽:
FFT
DSP
編程代碼
算法
上傳時(shí)間:
2015-04-29
上傳用戶:牛布牛