DFT和FFT的一點思考

很多文章都側重於從理論理解傅里葉變換,從公式理解的比較少,我們都知道傅里葉變換的思想來源於所有信號都可以由整數倍的基頻正弦信號組合而成(OFDM調製的原理),那麼其公式和實現是不是也要重點理解一下呢?

DFT:

大家有沒有問過這個問題:

 

其中,易知WNnk有以下特性:


爲什麼不同時刻的幅度值與某一頻率對應時刻的對數值卷積就是頻域信息?卷積就到了頻域?
對於每一個k值,表示當前頻率下,採樣信號在不同時刻的值乘以e的對數值,累加之後得到一個複數結果,表徵整體信號在該頻率下的信號分量(整體的譜線高度是個相對值,受採樣值的大小影響)。
其思想源自於:所有信號都可以由不同幅度和相位的基頻信號疊加而成(傅里葉公式)。
因此在時域:某點採樣值是由不同頻率的信號該時刻幅度疊加結果。
時轉頻:所有時刻的採樣值與某頻率下信號相位值卷積的幅度相位值,就是該頻率對整體信號的貢獻,其他頻率信號相同。得到的結果各個頻率分量幅度呈比例關係、相位呈加減偏移關係,並且保證擬合結果在採樣點與採樣值相同
因此,傅里葉是一種規則,認爲信號剛好是由其中的信號按某種比例關係組合而成,且具有對稱性。傅里葉公式則是一種提取頻譜的擬合計算方法。
在實際中,受限採樣精度和時間,影響擬合精度。(連續譜、離散譜、譜密度)

由於連續譜到離散譜,採樣的頻率和點數對信號頻譜的還原精度影響很大,他們決定了基頻信號及頻譜間隔,即信號是由哪些頻率分量構成。理論上採樣率越高,點數越多,還原更好。

另外:採樣頻率==帶寬。


基2 FFT:
計算某頻率下的卷積時,根據下標位置,拆分成奇偶兩部分(每部分N/2個),則可以認爲是兩個週期爲N/2的DFT結果之和,兩部分的指數部分,N/2+1:N的指數可以將常數抽取後,剩餘與0:N/2相同。 
由於是N/2個乘積之和,則m範圍縮小一半,又由於DFT共軛對稱性,另一半的DFT結果也容易得到,僅僅是中間乘以的旋轉因子不同。層層遞歸,最後一級是兩個採樣點的蝶形運算。

按照這種思路,邏輯實現的時候,旋轉因子都是按照精度存儲在RAM中的常數,需要考慮每一級運算中,取相應地址的數據參與運算,再存回對應的地址,爲了提升性能,可以增加邏輯資源,並行計算每一級的數據(每一級都是兩個點參與運算,不影響其他點:並行計算成爲可能)。

FFT加速

在實際應用中,對於高速邏輯處理模塊,一般FFT邏輯處理方案已無法滿足大數據量和延時的需求,因此考慮FFT加速方案,其本質上也非常簡單,就是利用FFT的線性和e的對數特性,將FFT卷積序列分段處理。對於每段採樣信號,分段求FFT,然後每段卷積,之所以是卷積不是直接求和,是因爲每段的項與原序列中位置的值相比,需要乘以exp(-1j*k/N*2*pi)。而時域採樣的值是不變的,分佈在每段FFT中,卷積相應的對數因子,則得到原序列的FFT值。

在本子上推導一下即可,非常簡單,然後再考慮邏輯實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章