快速傅里葉變換 (fast Fourier transform), 即利用計(jì)算機(jī)計(jì)算離散傅里葉變換(DFT)的高效、快速計(jì)算方法的統(tǒng)稱,簡(jiǎn)稱FFT??焖俑道锶~變換是1965年由J.W.庫(kù)利和T.W.圖基提出的。采用這種算法能使計(jì)算機(jī)計(jì)算離散傅里葉變換所需要的乘法次數(shù)大為減少,特別是被變換的抽樣點(diǎn)數(shù)N越多,F(xiàn)FT算法計(jì)算量的節(jié)省就越顯著。
有限長(zhǎng)序列可以通過
離散傅里葉變換(DFT)將其頻域也離散化
快速傅里葉變換
成有限長(zhǎng)序列。但其計(jì)算量太大,很難實(shí)時(shí)地處理問題,因此引出了快速傅里葉變換(FFT). 1965年,Cooley和Tukey提出了計(jì)算
離散傅里葉變換(DFT)的快速算法,將DFT的運(yùn)算量減少了幾個(gè)數(shù)量級(jí)。從此,對(duì)快速傅里葉變換(FFT)
算法的研究便不斷深入,
數(shù)字信號(hào)處理這門新興學(xué)科也隨FFT的出現(xiàn)和發(fā)展而迅速發(fā)展。根據(jù)對(duì)序列分解與選取方法的不同而產(chǎn)生了FFT的多種算法,基本算法是基2DIT和基2DIF。FFT在離散傅里葉反變換、線性
卷積和線性相關(guān)等方面也有重要應(yīng)用。
快速傅氏變換(FFT),是
離散傅氏變換的快速
算法,它是根據(jù)離散傅氏變換的奇、偶、虛、實(shí)等特性,對(duì)離散
傅立葉變換的算法進(jìn)行改進(jìn)獲得的。它對(duì)傅氏變換的理論并沒有新的發(fā)現(xiàn),但是對(duì)于在計(jì)算機(jī)系統(tǒng)或者說
數(shù)字系統(tǒng)中應(yīng)用離散
傅立葉變換,可以說是進(jìn)了一大步。
設(shè)
快速傅里葉變換
x(n)為N項(xiàng)的復(fù)數(shù)序列,由DFT變換,任一X(m)的計(jì)算都需要N次復(fù)數(shù)乘法和N-1次復(fù)數(shù)加法,而一次復(fù)數(shù)乘法等于四次實(shí)數(shù)乘法和兩次實(shí)數(shù)加法,一次復(fù)數(shù)加法等于兩次實(shí)
快速傅里葉變換
數(shù)加法,即使把一次復(fù)數(shù)乘法和一次復(fù)數(shù)加法定義成一次“運(yùn)算”(四次實(shí)數(shù)乘法和四次實(shí)數(shù)加法),那么求出N項(xiàng)復(fù)數(shù)序列的X(m),即N點(diǎn)DFT變換大約就需要N^2次運(yùn)算。當(dāng)N=1024點(diǎn)甚至更多的時(shí)候,需要N2=1048576次運(yùn)算,在FFT中,利用WN的周期性和對(duì)稱性,把一個(gè)N項(xiàng)序列(設(shè)N=2k,k為正整數(shù)),分為兩個(gè)N/2項(xiàng)的子序列,每個(gè)N/2點(diǎn)DFT變換需要(N/2)^2次運(yùn)算,再用N次運(yùn)算把兩個(gè)N/2點(diǎn)的DFT變換組合成一個(gè)N點(diǎn)的DFT變換。這樣變換以后,總的運(yùn)算次數(shù)就變成N+2*(N/2)^2=N+N^2/2。繼續(xù)上面的例子,N=1024時(shí),總的運(yùn)算次數(shù)就變成了525312次,節(jié)省了大約50%的運(yùn)算量。而如果我們將這種“一分為二”的思想不斷進(jìn)行下去,直到分成兩兩一組的DFT運(yùn)算單元,那么N點(diǎn)的DFT變換就只需要Nlog2N次的運(yùn)算,N在1024點(diǎn)時(shí),運(yùn)算量?jī)H有10240次,是先前的直接算法的1%,點(diǎn)數(shù)越多,運(yùn)算量的節(jié)約就越大,這就是FFT的優(yōu)越性。
基本思想
FFT的基本思想是把原始的N點(diǎn)序列,依次分解成一系列的短序列。充分利用DFT計(jì)算式中指數(shù)因子 所具有的對(duì)稱性質(zhì)和周期性質(zhì),進(jìn)而求出這些短序列相應(yīng)的DFT并進(jìn)行適當(dāng)組合,達(dá)到刪除重復(fù)計(jì)算,減少乘法運(yùn)算和簡(jiǎn)化結(jié)構(gòu)的目的。此后,在這思想基礎(chǔ)上又開發(fā)了高基和分裂基等快速算法,隨著數(shù)字技術(shù)的高速發(fā)展,1976年出現(xiàn)建立在數(shù)論和多項(xiàng)式理論基礎(chǔ)上的維諾格勒傅里葉變換算法(WFTA)和素因子傅里葉變換算法。它們的共同特點(diǎn)是,當(dāng)N是素?cái)?shù)時(shí),可以將DFT算轉(zhuǎn)化為求循環(huán)卷積,從而更進(jìn)一步減少乘法次數(shù),提高速度。FFT算法很多,根據(jù)實(shí)現(xiàn)運(yùn)算過程是否有指數(shù)因子WN可分為有、無指數(shù)因子的兩類算法。
有指數(shù)因子的算法
經(jīng)典庫(kù)利-圖基算法 當(dāng)輸入序列的長(zhǎng)度N不是素?cái)?shù)(素?cái)?shù)只能被1而它本身整除)而是可以高度分解的復(fù)合數(shù),即N=N1N2N3…Nr時(shí),若N1=N2=…=Nr=2,N=2則N點(diǎn)DFT的計(jì)算可分解為N=2×N/2,即兩個(gè)N/2點(diǎn)DFT計(jì)算的組合,而N/2點(diǎn)DFT的計(jì)算又可分解為N/2=2×N/4,即兩個(gè)N/4點(diǎn)DFT計(jì)算的組合。依此類推,使DFT的計(jì)算形成有規(guī)則的模式,故稱之為以2為基底的FFT算法。同理,當(dāng)N=4時(shí),則稱之為以4為基底的FFT算法。當(dāng)N=N1·N2時(shí),稱為以N1和N2為基底的混合基算法。
在這些算法中,基2算法用得最普遍。通常按序列在時(shí)域或在頻域分解過程的不同,又可分為兩種:一種是時(shí)間抽取FFT算法(DIT),將N點(diǎn)DFT輸入序列x(n)、在時(shí)域分解成2個(gè)N/2點(diǎn)序列而x1(n)和x2(n)。前者是從原序列中按偶數(shù)序號(hào)抽取而成,而后者則按奇數(shù)序號(hào)抽取而成。DIT就是這樣有規(guī)律地按奇、偶次序逐次進(jìn)行分解所構(gòu)成的一種快速算法。
分裂基算法(RSFFT) 1984年由P.杜哈美爾和H.赫爾曼等導(dǎo)出的一種比庫(kù)利圖基算法更加有效的改進(jìn)算法,其基本思想是在變換式的偶部采用基2算法,在變換式的奇部采用基4算法。優(yōu)點(diǎn)是具有相對(duì)簡(jiǎn)單的結(jié)構(gòu),非常適用于實(shí)對(duì)稱數(shù)據(jù),對(duì)長(zhǎng)度N=2能獲得最少的運(yùn)算量(乘法和加法),所以是選用固定基算法中的一種折衷算法。
計(jì)算方法
計(jì)算
離散傅里葉變換的快速方法,有按時(shí)間抽取的FFT算法和按
頻率抽取的FFT算法。前者是將時(shí)域
信號(hào)序列按偶奇分排,后者是將頻域信號(hào)序列按偶奇分排。它們都借助于的兩個(gè)特點(diǎn):一是周期性;二是對(duì)稱性,這里符號(hào)*代表其共軛。這樣,便可以把
離散傅里葉變換的計(jì)算分成若干步進(jìn)行,計(jì)算效率大為提高。
時(shí)間抽取算法 令
信號(hào)序列的長(zhǎng)度為
N(2的冪),可以將時(shí)域信號(hào)序列
x(
n)分解成兩部分,一是偶數(shù)部分
x(2
n),另一是
奇數(shù)部分
x(2
n+1),于是信號(hào)序列
x(
n)的
離散傅里葉變換可以用兩個(gè)
N/2抽樣點(diǎn)的離散傅里葉變換來表示和計(jì)算。考慮到和
離散傅里葉變換的周期性,式⑴可以寫成
⑶其中(4a)(4b)由此可見,式⑷是兩個(gè)只含有
N/2個(gè)點(diǎn)的
離散傅里葉變換,
G(
k)僅包括原信號(hào)序列中的偶數(shù)點(diǎn)序列,
H(
k)則僅包括它的奇數(shù)點(diǎn)序列。雖然
k=0,1,2,…,
N-1,但是
G(
k)和
H(
k)的周期都是
N/2,它們的數(shù)值以
N/2周期重復(fù)。
因?yàn)橛谑怯墒舰呛褪舰鹊玫剑?a)(5b)
因此,
半導(dǎo)體快速傅里葉變換?專用諧波減速機(jī)CSF-50-100-2UH一個(gè)抽樣點(diǎn)數(shù)為
N 的信號(hào)序列
x(
n)的
離散傅里葉變換,可以由兩個(gè)
N/2抽樣點(diǎn)序列的離散傅里葉變換求出。依此類推,這種按時(shí)間抽取算法是將輸入信號(hào)序列分成越來越小的子序列進(jìn)行
離散傅里葉變換計(jì)算,最后合成為N點(diǎn)的離散傅里葉變換。
通常用圖1中蝶形算法的信號(hào)流圖來表示式⑸的
離散傅里葉變換運(yùn)算。例如,
N=8=2的抽樣點(diǎn)的信號(hào)序列
x(
n)的
離散傅里葉變換,可用如圖2所示的FET算法的信號(hào)流圖來計(jì)算。
①
N=2點(diǎn)的
離散傅里葉變換的計(jì)算全由
蝶形運(yùn)算組成,需要
M級(jí)運(yùn)算,每級(jí)包括
N/2個(gè)蝶形運(yùn)算,總共有 個(gè)蝶形運(yùn)算。所以,總的計(jì)算量為次復(fù)數(shù)
乘法運(yùn)算和
N log2
N次復(fù)數(shù)加法運(yùn)算。
② FFT
算法按級(jí)迭代進(jìn)行,計(jì)算公式可以寫成
⑹N抽樣點(diǎn)的輸入信號(hào)具有N個(gè)原始數(shù)據(jù)x0(n),經(jīng)級(jí)運(yùn)算后,得出新的N個(gè)數(shù)據(jù)x1(n),再經(jīng)過級(jí)迭代運(yùn)算,又得到另外N個(gè)數(shù)據(jù)x2(n),依此類推,直至最后的結(jié)果x(k)=xM(k)=X(k)在逐級(jí)迭代計(jì)算中,每個(gè)蝶形運(yùn)算的輸出數(shù)據(jù)存放在原來存貯輸入數(shù)據(jù)的單元中,實(shí)行所謂“即位計(jì)算”,這樣可以節(jié)省大量存放中間數(shù)據(jù)的寄存器。
③
蝶形運(yùn)算中
加權(quán)系數(shù)隨迭代級(jí)數(shù)成倍增加。由圖2可以看出系數(shù)的變化規(guī)律。對(duì)于
N=8,
M=3情況,需進(jìn)行三級(jí)迭代運(yùn)算。在級(jí)迭代中,只用到一種
加權(quán)系數(shù);
蝶形運(yùn)算的跨度間隔等于1。在級(jí)迭代中,用到兩種加權(quán)系數(shù)即、;
蝶形運(yùn)算的跨度間隔等于2。在第三級(jí)迭代中,用到4種不同的加權(quán)系數(shù)即、、、;
蝶形運(yùn)算的跨度間隔等于4??梢姡考?jí)迭代的不同加權(quán)系數(shù)的數(shù)目比前一級(jí)迭代增加一倍;跨度間隔也增大一倍。
④ 輸入數(shù)據(jù)序列x(n)需重新排列為x(0)、x⑷、x⑵、x⑹、x⑴、x⑸、x⑶、x⑺,這是按照二進(jìn)制數(shù)的碼位倒置所得到的反序數(shù),例如N=8中數(shù)“1”的二進(jìn)制數(shù)為“001”,將其碼位倒轉(zhuǎn)變?yōu)椤?00”,即為十進(jìn)制數(shù)“4”。
頻率抽取算法 按頻率抽取的 FFT算法是將頻域信號(hào)序列
X(
k)分解為奇偶兩部分,但算法仍是由時(shí)域信號(hào)序列開始逐級(jí)運(yùn)算,同樣是把
N點(diǎn)分成
N/2點(diǎn)計(jì)算FFT,可以把直接計(jì)算
離散傅里葉變換所需的
N次乘法縮減到次。
在N=2的情況下,把N點(diǎn)輸入序列x(n)分成前后兩半
⑺
時(shí)間序列
x1(
n)±
x2(
n)的長(zhǎng)度為
N/2,于是
N點(diǎn)的
離散傅里葉變換可以寫成
(8a)
(8b)
頻率信號(hào)序列
X(2l)
半導(dǎo)體快速傅里葉變換?專用諧波減速機(jī)CSF-50-100-2UH是時(shí)間信號(hào)序列
x1(
n)+
x2(
n)的
N/2點(diǎn)
離散傅里葉變換,頻率信號(hào)序列
X(2l+1)是時(shí)間信號(hào)序列【
x1(
n)-
x2(
n)】的
N/2點(diǎn)離散傅里葉變換,因此,
N點(diǎn)離散傅里葉變換的計(jì)算,通過兩次加(減)法和一次乘法,從原來序列獲得兩個(gè)子序列,所以,頻率抽取算法也具有蝶形運(yùn)算形式。以2為基數(shù)的FFT基本
蝶形運(yùn)算公式為
⑼
其計(jì)算量完全和時(shí)間抽取算法一樣,即只需次乘法運(yùn)算和
Nlog2
N次加(減)法運(yùn)算。圖3 表示
N=8=2點(diǎn)的
離散傅里葉變換的信號(hào)流圖。由圖可見,它以三級(jí)迭代進(jìn)行即位計(jì)算,輸入數(shù)據(jù)是按自然次序存放,使用的系數(shù)也是按自然次序,而最后結(jié)果則以二進(jìn)制反序存放。
實(shí)際上,頻率抽取
算法與時(shí)間抽取算法的信號(hào)流圖之間存在著
轉(zhuǎn)置關(guān)系,如將流圖適當(dāng)變形,可以得出多種幾何形狀。
除了基2的FFT
算法之外
半導(dǎo)體快速傅里葉變換?專用諧波減速機(jī)CSF-50-100-2UH,還有基4、基8等高基數(shù)的FFT算法以及任意數(shù)為基數(shù)的FFT算法。
應(yīng)用
計(jì)算量小的顯著的優(yōu)點(diǎn),半導(dǎo)體快速傅里葉變換?專用諧波減速機(jī)CSF-50-100-2UH使得FFT在信號(hào)處理技術(shù)領(lǐng)域獲得了廣泛應(yīng)用,結(jié)合高速硬件就能實(shí)現(xiàn)對(duì)信號(hào)的實(shí)時(shí)處理。例如,對(duì)語音信號(hào)的分析和合成,對(duì)通信系統(tǒng)中實(shí)現(xiàn)全數(shù)字化的時(shí)分制與頻分制(TDM/FDM)的復(fù)用轉(zhuǎn)換,在頻域?qū)π盘?hào)濾波以及相關(guān)分析,通過對(duì)雷達(dá)、聲納、振動(dòng)信號(hào)的頻譜分析以提高對(duì)目標(biāo)的搜索和跟蹤的分辨率等等,都要用到FFT??梢哉fFFT的出現(xiàn),對(duì)數(shù)字信號(hào)處理學(xué)科的發(fā)展起了重要的作用。