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