DFT和FFT的一點思考

2021-10-02 12:43:05 字數 1359 閱讀 7539

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

dft:

其中為什麼不同時刻的幅度值與某一頻率對應時刻的對數值卷積就是頻域資訊?卷積就到了頻域?

對於每乙個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值。

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

關於取樣與DFT的一點點思考

直觀分析 乙個帶限的模擬訊號,要想通過取樣恢復原始訊號,遵守奈奎斯特取樣定理即可。奈奎斯特取樣定理是說,取樣率要不小於最高頻率分量的兩倍,換句話說,就是取樣間隔必須要不大於最高頻率分量對應的週期長度的一半。我們想想,對於單個整週期的余弦訊號,要想完全知道這個余弦訊號,最少要在這個週期上取兩個點 最特...

對於FFT和DFT的理解

此篇文章是對 ministm32f103實現家庭普通電路中的電流諧波檢測 一文的補充 本文參考 快速傅利葉變換學習及c語言實現 形象的介紹 什麼是傅利葉變換?手把手教你理解 fft fft是最重要,也是最難懂的。簡單說下原理 fft 快速傅利葉變換 是dft 離散傅利葉變換 的改進演算法,其將dft...

遞迴的一點思考

廢話不說,直接上 searchtree delete int x,searchtree t else if t left null 沒有兒子的情況也包含了,因為t right 為null else else if x t element t right delete x,t right else t...