一概述
在諧波分析儀中,我們常常提到的兩個(gè)詞語(yǔ),就是DFT算法與FFT算法,那么一款功率分析儀/諧波分析儀采用DFT算法或者FFT算法,用戶(hù)往往關(guān)注的是能否達到所要分析諧波次數的目的,而并未考慮兩種算法之間有什么不同,采用相關(guān)算法的依據。下面就來(lái)介紹一下兩種算法的不同以及適用的一些場(chǎng)合。
DFT算法,是連續傅里葉變換在時(shí)域和頻域上都離散的形式,將時(shí)域信號的采樣變換為在離散時(shí)間傅里葉變換頻域的采樣。
FFT算法,是離散傅里葉變換的快速算法,它是根據離散傅里葉變換的奇、偶、虛、實(shí)等特性,對離散傅里葉變換的算法進(jìn)行改進(jìn)獲得的。它對傅氏變換的理論沒(méi)有新的算法發(fā)現,但是對于在計算機系統或者說(shuō)數字系統中應用離散傅里葉變換,可以說(shuō)進(jìn)了一大步。
二DFT與FFT的比較
01運算量
一般來(lái)說(shuō),FFT比DFT運算量小得多,N點(diǎn)的FFT需要做(N/2)log2N次乘法運算,而N點(diǎn)DFT需要做N2次乘法運算,由此看來(lái)N點(diǎn) DFT運算量大約是FFT的2N/log2N倍,例如對1 024點(diǎn)的變換,DFT大約是FFT的200倍。然而實(shí)際應用時(shí)存在下列情況:
?、?實(shí)際應用時(shí)DFT中的乘法可以是實(shí)數和復數相乘,原因是輸入信號可以是實(shí)數,而FFT只能是復數和復數的乘法,原因是FFT是分級運算的,中間運算過(guò)程都是復數運算,由此來(lái)看DFT的運算量大約是FFT的Nlog2N倍,而不是2N/log2N倍;
?、?實(shí)際應用時(shí)往往只關(guān)心整個(gè)頻譜中的某一部分,甚至是只關(guān)心某些個(gè)別頻點(diǎn)的譜線(xiàn)。DFT的特點(diǎn)是可按式(1)單獨計算某一部分的譜線(xiàn),而直接進(jìn)行 FFT的算法必須計算整個(gè)頻譜后才能得到需要的那一部分頻譜,實(shí)際上已造成了浪費。如果N點(diǎn)的變換中只關(guān)心其中的M個(gè)頻點(diǎn)或稱(chēng)M條譜線(xiàn),那么實(shí)際DFT的運算量大約是FFT的M/N?N/log2N倍,即Mlog2N倍.例如對1 024點(diǎn)的變換,只需關(guān)心10條譜線(xiàn),那么直接用DFT和用FFT的運算量是相同的。因此,實(shí)際應用時(shí)DFT與FFT相比可能并沒(méi)有那么慢,甚至有可能比FFT快。
02點(diǎn)數或采樣率的可選性
對DFT來(lái)講,其變換點(diǎn)數可任意選定,如實(shí)際應用時(shí)采樣率已確定為1 000 Hz,如選變換點(diǎn)數為1 000點(diǎn),那么每條譜線(xiàn)正好可落在整數頻點(diǎn)上。FFT的變換點(diǎn)數必須是有規律的,如基數為2算法的FFT其點(diǎn)數必須是2M,如1 024點(diǎn)、4 096點(diǎn)等。在實(shí)際應用時(shí)為分析方便,采樣率往往要定為變換點(diǎn)數的倍數,如2 048 Hz、8 192 Hz,以避免變換后的頻譜落在復雜的帶小數點(diǎn)的頻點(diǎn)上。因此實(shí)際應用時(shí)FFT在變換點(diǎn)數選擇或采樣率選擇上可能會(huì )帶來(lái)局限性。
03實(shí)時(shí)性
DFT運算可以用采一點(diǎn)后立即進(jìn)行相乘、累加運算的方法,即可以采一點(diǎn)算一點(diǎn),從采樣結束到DFT變換結束只需要一個(gè)點(diǎn)的運算時(shí)間。而FFT運算必須在全部點(diǎn)采集結束后才能開(kāi)始進(jìn)行計算,因此從某種角度講DFT的實(shí)時(shí)性?xún)?yōu)于FFT。
04數據內存開(kāi)銷(xiāo)
對N點(diǎn)DFT來(lái)講,如只需其中的M個(gè)頻點(diǎn),那么在計算時(shí)至少需2M個(gè)單元的數據內存,對N點(diǎn)FFT來(lái)講則至少需2N個(gè)單元的數據內存,另外現有的FFT程序一般需要將系數放在數據內存區,因此需另選N個(gè)單元的數據內存,故DFT有可能比FFT更節省數據內存。
05程序的復雜性
DFT計算程序非常簡(jiǎn)單而且可以非常方便地在非DFT專(zhuān)用芯片上實(shí)現,而FFT程序較為復雜。
06動(dòng)態(tài)范圍或抗溢出性
在定點(diǎn)運算的場(chǎng)合,DFT較FFT更容易實(shí)現多精度的運算, 例如在TI公司的16位定點(diǎn)DSP處理器中,采用的數據和系數為16位,而相乘并累加的結果可設為雙字節即32位,一般來(lái)講設計合理的話(huà)不會(huì )產(chǎn)生計算溢出的現象,免去了復雜的溢出控制,同時(shí)輸入輸出信號可保持較好的動(dòng)態(tài)范圍,FFT在程序中有防溢出的措施,然而在定點(diǎn)運算的場(chǎng)合點(diǎn)數越多輸入信號的動(dòng)態(tài)范圍越小。
三結論
在某些具體的應用場(chǎng)合,DFT與它的快速算法FFT相比可能更有優(yōu)勢,而FFT卻存在某些局限性。在只需要求出部分頻點(diǎn)的頻率譜線(xiàn)時(shí)DFT的運算時(shí)間大為減少,所需的數據內存量也大為減小。DFT與FFT相比還具有變換點(diǎn)數或采樣率選擇更靈活、實(shí)時(shí)性更好、更容易控制溢出和動(dòng)態(tài)范圍、運算編程簡(jiǎn)單、可方便地在非DSP芯片中編程實(shí)現等優(yōu)點(diǎn)。因此在實(shí)際應用中可以從具體條件出發(fā)來(lái)比較、選擇DFT或FFT,而不應片面地由于FFT是所謂的DFT的快速算法而只選用FFT。
另外FFT運算速度快,但是,對樣本序列的長(cháng)度做出了要求,即要求樣本序列的數量必須是2的N次冪,正確的傅里葉變換,樣本序列應該是代表一個(gè)或整數個(gè)信號周期。對于固定頻率的交流電測量,可以使采樣頻率為信號頻率的M倍,且M=2^N。
但是,對于變頻器輸出測量,如果測量前基波未知,那么,就無(wú)法同時(shí)滿(mǎn)足樣本數為2^N和整周期的要求。DFT運算速度遠遠低于FFT,但是,對樣本數沒(méi)有要求?;谧冾l電量測量特殊性以及兩種算法的特點(diǎn),湖南銀河電氣有限公司的WP4000變頻功率分析儀采用高性能的嵌入式微處理器,采用DFT算法進(jìn)行諧波分析儀,由于強大的硬件支撐,在保證DFT算法運算量的同時(shí),也兼顧了運算速度。這樣,對于被測對象的樣本序列長(cháng)度要求低,處理起來(lái)更加靈活方便。