當(dāng)前位置:首頁(yè)產(chǎn)品問(wèn)答 │ DFT算法與FFT算法的優(yōu)劣分析

DFT算法與FFT算法的優(yōu)劣分析

  • 瀏覽次數(shù):39009次
  • 發(fā)布時(shí)間:2013/12/12 8:52:46
  • 作者:量值溯源

概述

  在諧波分析儀中,我們常常提到的兩個(gè)詞語(yǔ),就是DFT算法與FFT算法,那么一款功率分析儀/諧波分析儀采用DFT算法或者FFT算法,用戶往往關(guān)注的是能否達(dá)到所要分析諧波次數(shù)的目的,而并未考慮兩種算法之間有什么不同,采用相關(guān)算法的依據(jù)。下面就來(lái)介紹一下兩種算法的不同以及適用的一些場(chǎng)合。

  DFT算法,是連續(xù)傅里葉變換在時(shí)域和頻域上都離散的形式,將時(shí)域信號(hào)的采樣變換為在離散時(shí)間傅里葉變換頻域的采樣。

  FFT算法,是離散傅里葉變換的快速算法,它是根據(jù)離散傅里葉變換的奇、偶、虛、實(shí)等特性,對(duì)離散傅里葉變換的算法進(jìn)行改進(jìn)獲得的。它對(duì)傅氏變換的理論沒(méi)有新的算法發(fā)現(xiàn),但是對(duì)于在計(jì)算機(jī)系統(tǒng)或者說(shuō)數(shù)字系統(tǒng)中應(yīng)用離散傅里葉變換,可以說(shuō)進(jìn)了一大步。

DFT與FFT的比較

01運(yùn)算量

  一般來(lái)說(shuō),FFT比DFT運(yùn)算量小得多,N點(diǎn)的FFT需要做(N/2)log2N次乘法運(yùn)算,而N點(diǎn)DFT需要做N2次乘法運(yùn)算,由此看來(lái)N點(diǎn) DFT運(yùn)算量大約是FFT的2N/log2N倍,例如對(duì)1 024點(diǎn)的變換,DFT大約是FFT的200倍。然而實(shí)際應(yīng)用時(shí)存在下列情況:

 ?、?實(shí)際應(yīng)用時(shí)DFT中的乘法可以是實(shí)數(shù)和復(fù)數(shù)相乘,原因是輸入信號(hào)可以是實(shí)數(shù),而FFT只能是復(fù)數(shù)和復(fù)數(shù)的乘法,原因是FFT是分級(jí)運(yùn)算的,中間運(yùn)算過(guò)程都是復(fù)數(shù)運(yùn)算,由此來(lái)看DFT的運(yùn)算量大約是FFT的Nlog2N倍,而不是2N/log2N倍;

 ?、?實(shí)際應(yīng)用時(shí)往往只關(guān)心整個(gè)頻譜中的某一部分,甚至是只關(guān)心某些個(gè)別頻點(diǎn)的譜線。DFT的特點(diǎn)是可按式(1)單獨(dú)計(jì)算某一部分的譜線,而直接進(jìn)行 FFT的算法必須計(jì)算整個(gè)頻譜后才能得到需要的那一部分頻譜,實(shí)際上已造成了浪費(fèi)。如果N點(diǎn)的變換中只關(guān)心其中的M個(gè)頻點(diǎn)或稱M條譜線,那么實(shí)際DFT的運(yùn)算量大約是FFT的M/N?N/log2N倍,即Mlog2N倍.例如對(duì)1 024點(diǎn)的變換,只需關(guān)心10條譜線,那么直接用DFT和用FFT的運(yùn)算量是相同的。因此,實(shí)際應(yīng)用時(shí)DFT與FFT相比可能并沒(méi)有那么慢,甚至有可能比FFT快。

02點(diǎn)數(shù)或采樣率的可選性

  對(duì)DFT來(lái)講,其變換點(diǎn)數(shù)可任意選定,如實(shí)際應(yīng)用時(shí)采樣率已確定為1 000 Hz,如選變換點(diǎn)數(shù)為1 000點(diǎn),那么每條譜線正好可落在整數(shù)頻點(diǎn)上。FFT的變換點(diǎn)數(shù)必須是有規(guī)律的,如基數(shù)為2算法的FFT其點(diǎn)數(shù)必須是2M,如1 024點(diǎn)、4 096點(diǎn)等。在實(shí)際應(yīng)用時(shí)為分析方便,采樣率往往要定為變換點(diǎn)數(shù)的倍數(shù),如2 048 Hz、8 192 Hz,以避免變換后的頻譜落在復(fù)雜的帶小數(shù)點(diǎn)的頻點(diǎn)上。因此實(shí)際應(yīng)用時(shí)FFT在變換點(diǎn)數(shù)選擇或采樣率選擇上可能會(huì)帶來(lái)局限性。

03實(shí)時(shí)性

  DFT運(yùn)算可以用采一點(diǎn)后立即進(jìn)行相乘、累加運(yùn)算的方法,即可以采一點(diǎn)算一點(diǎn),從采樣結(jié)束到DFT變換結(jié)束只需要一個(gè)點(diǎn)的運(yùn)算時(shí)間。而FFT運(yùn)算必須在全部點(diǎn)采集結(jié)束后才能開(kāi)始進(jìn)行計(jì)算,因此從某種角度講DFT的實(shí)時(shí)性優(yōu)于FFT。

04數(shù)據(jù)內(nèi)存開(kāi)銷

  對(duì)N點(diǎn)DFT來(lái)講,如只需其中的M個(gè)頻點(diǎn),那么在計(jì)算時(shí)至少需2M個(gè)單元的數(shù)據(jù)內(nèi)存,對(duì)N點(diǎn)FFT來(lái)講則至少需2N個(gè)單元的數(shù)據(jù)內(nèi)存,另外現(xiàn)有的FFT程序一般需要將系數(shù)放在數(shù)據(jù)內(nèi)存區(qū),因此需另選N個(gè)單元的數(shù)據(jù)內(nèi)存,故DFT有可能比FFT更節(jié)省數(shù)據(jù)內(nèi)存。

05程序的復(fù)雜性

  DFT計(jì)算程序非常簡(jiǎn)單而且可以非常方便地在非DFT專用芯片上實(shí)現(xiàn),而FFT程序較為復(fù)雜。

06動(dòng)態(tài)范圍或抗溢出性

  在定點(diǎn)運(yùn)算的場(chǎng)合,DFT較FFT更容易實(shí)現(xiàn)多精度的運(yùn)算, 例如在TI公司的16位定點(diǎn)DSP處理器中,采用的數(shù)據(jù)和系數(shù)為16位,而相乘并累加的結(jié)果可設(shè)為雙字節(jié)即32位,一般來(lái)講設(shè)計(jì)合理的話不會(huì)產(chǎn)生計(jì)算溢出的現(xiàn)象,免去了復(fù)雜的溢出控制,同時(shí)輸入輸出信號(hào)可保持較好的動(dòng)態(tài)范圍,F(xiàn)FT在程序中有防溢出的措施,然而在定點(diǎn)運(yùn)算的場(chǎng)合點(diǎn)數(shù)越多輸入信號(hào)的動(dòng)態(tài)范圍越小。

結(jié)論

  在某些具體的應(yīng)用場(chǎng)合,DFT與它的快速算法FFT相比可能更有優(yōu)勢(shì),而FFT卻存在某些局限性。在只需要求出部分頻點(diǎn)的頻率譜線時(shí)DFT的運(yùn)算時(shí)間大為減少,所需的數(shù)據(jù)內(nèi)存量也大為減小。DFT與FFT相比還具有變換點(diǎn)數(shù)或采樣率選擇更靈活、實(shí)時(shí)性更好、更容易控制溢出和動(dòng)態(tài)范圍、運(yùn)算編程簡(jiǎn)單、可方便地在非DSP芯片中編程實(shí)現(xiàn)等優(yōu)點(diǎn)。因此在實(shí)際應(yīng)用中可以從具體條件出發(fā)來(lái)比較、選擇DFT或FFT,而不應(yīng)片面地由于FFT是所謂的DFT的快速算法而只選用FFT。

  另外FFT運(yùn)算速度快,但是,對(duì)樣本序列的長(zhǎng)度做出了要求,即要求樣本序列的數(shù)量必須是2的N次冪,正確的傅里葉變換,樣本序列應(yīng)該是代表一個(gè)或整數(shù)個(gè)信號(hào)周期。對(duì)于固定頻率的交流電測(cè)量,可以使采樣頻率為信號(hào)頻率的M倍,且M=2^N。

  但是,對(duì)于變頻器輸出測(cè)量,如果測(cè)量前基波未知,那么,就無(wú)法同時(shí)滿足樣本數(shù)為2^N和整周期的要求。DFT運(yùn)算速度遠(yuǎn)遠(yuǎn)低于FFT,但是,對(duì)樣本數(shù)沒(méi)有要求?;谧冾l電量測(cè)量特殊性以及兩種算法的特點(diǎn),湖南銀河電氣有限公司的WP4000變頻功率分析儀采用高性能的嵌入式微處理器,采用DFT算法進(jìn)行諧波分析儀,由于強(qiáng)大的硬件支撐,在保證DFT算法運(yùn)算量的同時(shí),也兼顧了運(yùn)算速度。這樣,對(duì)于被測(cè)對(duì)象的樣本序列長(zhǎng)度要求低,處理起來(lái)更加靈活方便。

 


Copyright 2010-2017 www.zjjiangshan.cn, All Rights Reserved 湖南銀河電氣有限公司 版權(quán)所有 湘ICP備09002592號(hào)-5