深入探析快速傅利葉變換 FFT

2022-12-01 17:48:02 字數 5040 閱讀 1498

摘要:fft(fast fourier transform,快速傅利葉變換)是離散傅利葉變換的快速演算法,也是我們在數字訊號處理技術中經常會提到的乙個概念。在大學的理工科課程中,在完成高等數學的課程後,數字訊號處理一般會作為通訊電子類專業的專業基礎課程進行學習,原因是其中涉及了大量的高等數學的理論推導,同時又是各類應用技術的理論基礎。

關於傅利葉變換的經典著作和文章非常多,但是看到滿篇的複雜公式推導和

羅列,我們還是很難從直觀上去理解這一複雜的概念,我想對於普通的測試工程師來說,掌握fft的概念首先應該搞清楚這樣幾個問題:(1) 為什麼需要fft (2) 變換究竟是如何進行的 (3) 變換前後訊號有何種對應關係(4) 在使用測試工具(示波器或者其它軟體平台)進行fft的方法和需要注意的問題 (5) 力科示波器與泰克示波器的fft計算方法的比較

在這篇文章中我嘗試用更加淺顯的講解,盡量不使用公式推導來說一說fft的那些事兒。

一, 為什麼需要fft?

首先fft(快速傅利葉變換)是離散傅利葉變換的快速演算法,那麼說到fft,

我們自然要先講清楚傅利葉變換。先來看看傅利葉變換是從**來的?

傅利葉是一位法國數學家和物理學家的名字,英語原名是jean baptiste

joseph fourier(1768-1830), fourier對熱傳遞很感興趣,於2023年在法國科學學會上發表了一篇**,運用正弦曲線來描述溫度分布,**裡有個在當時頗具爭議性的命題:任何連續週期訊號可以由一組適當的正弦曲線組合而成。當時審查這個**的人,其中有兩位是歷史上著名的數學家拉格朗日(joseph louis lagrange, 1736-1813)和拉普拉斯(pierre simon de laplace, 1749-1827),當拉普拉斯和其他審查者投票通過並要發表這個**時,拉格朗日堅決反對,在近50年的時間裡,拉格朗日堅持認為傅利葉的方法無法表示帶有稜角的訊號,如在方波**現非連續變化斜率。

法國科學學會屈服於拉格朗日的權威,拒絕了傅利葉的工作,幸運的是,傅利葉還有其它事情可忙,他參加了政治運動,隨拿破崙遠征埃及,法國大革命後因為怕被推上斷頭台而一直在逃難。直到拉格朗日死後15年這個**才被發表出來。

誰是對的呢?拉格朗日是對的:正弦曲線無法組合成乙個帶有稜角的訊號。

但是,我們可以用正弦曲線來非常逼近地表示它(稜角),逼近到兩種表示方法不存在能量差別,基於此,傅利葉是對的。

為什麼我們要用正弦曲線來代替原來的曲線呢?如我們也還可以用方波或

三角波來代替,分解訊號的方法是無窮的,但分解訊號的目的是為了更加簡單地處理原來的訊號。用正余弦來表示原訊號會更加簡單,因為正余弦擁有其他訊號所不具備的性質:正弦曲線保真度。

乙個正弦曲線訊號輸入後,輸出的仍是正弦曲線,只有幅度和相位可能發生變化,但是頻率和波的形狀仍是一樣的,且只有正弦曲線才擁有這樣的性質,正因如此我們才不用方波或三角波來表示。

傅利葉變換的物理意義在**?

傅利葉原理表明:任何連續測量的時序或訊號,都可以表示為不同頻率

的正弦波訊號的無限疊加。而根據該原理創立的傅利葉變換演算法利用直接測量到的原始訊號,以累加方式來計算該訊號中不同正弦波訊號的頻率、振幅和相位。當然這是從數學的角度去看傅利葉變換。

那麼從物理的角度去看待傅利葉變換,它其實是幫助我們改變傳統的時間

域分析訊號的方法轉到從頻率域分析問題的思維,下面的一幅立體圖形可以幫助我們更好得理解這種角度的轉換:

所以,最前面的時域訊號在經過傅利葉變換的分解之後,變為了不同正弦波

訊號的疊加,我們再去分析這些正弦波的頻率,可以將乙個訊號變換到頻域。有些訊號在時域上是很難看出什麼特徵的,但是如果變換到頻域之後,就很容易看出特徵了。這就是很多訊號分析採用fft變換的原因。

另外,fft可以將乙個訊號的頻譜提取出來,這在頻譜分析方面也是經常用的。

傅利葉變換提供給我們這種換乙個角度看問題的工具,看問題的角度不同

了,問題也許就迎刃而解!

二、 變換是如何進行的?

首先,按照被變換的輸入訊號型別不同,傅利葉變換可以分為 4種型別:

1非週期性連續訊號傅利葉變換(fourier transform)

2週期性連續訊號傅利葉級數(fourier series)

3非週期性離散訊號離散時域傅利葉變換(discrete time fourier transform)

4週期性離散訊號離散傅利葉變換(discrete fourier transform)

下面是四種原訊號圖例:

這裡我們要討論是離散訊號,對於連續訊號我們不作討論,因為計算機只能處理離散的數值訊號,我們的最終目的是運用計算機來處理訊號的。所以對於離散訊號的變換只有離散傅利葉變換(dft)才能被適用,對於計算機來說只有離散的和有限長度的資料才能被處理,對於其它的變換型別只有在數學演算中才能用到,在計算機面前我們只能用dft方法,我們要討論的fft也只不過是dft的一種快速的演算法。

dft的運算過程是這樣的:

其中,x(k)—頻域值

x(n)—時域取樣點

n—時域取樣點的序列索引

k—頻域值的索引

n—進行轉換的取樣點數量

可見,在計算機或者示波器上進行的dft,使用的輸入值是數字示波器經過adc後採集到的取樣值,也就是時域的訊號值,輸入取樣點的數量決定了轉換的計算規模。變換後的頻譜輸出包含同樣數量的取樣點,但是其中有一半的值是冗餘的,通常不會顯示在頻譜中,所以真正有用的資訊是n/2+1個點。

fft的過程大大簡化了在計算機中進行dft的過程,簡單來說,如果原來計算dft的複雜度是n2次運算(n代表輸入取樣點的數量),進行fft的運算複雜度是nlg10(n),因此,計算乙個1,000取樣點的dft,使用fft演算法只需要計算3,000次,而常規的dft演算法需要計算1,000,000次!

我們以乙個4個點的dft變換為例來簡單說明fft是怎樣實現快速演算法的:

計算得出:

其中的紅色部分在fft中是必須計算的分量,其他藍色部分不需要直接計算,可以由紅色的分量直接推導得到,比如:

x(1)e-j0 = -1*x(1)e-jπ

x(2)e-j0 = x(2)e-j2π

… …這樣,已經計算出的紅色分量只需要計算機將結果儲存下來用於之後計算時呼叫即可,因此大大減少了dft的計算量。

三、 變換前後訊號有何種對應關係?

我們以乙個實際的訊號為例來說明:

示波器取樣得到的數碼訊號,就可以做fft變換了。n個取樣點,經過fft之後,就可以得到n個點的fft結果。為了方便進行fft運算,通常n取2的整數次方。

假設取樣頻率為fs,訊號頻率f,取樣點數為n。那麼fft之後結果就是乙個為n點的複數。每乙個點就對應著乙個頻率點。

這個點的模值,就是該頻率值下的幅度特性。具體跟原始訊號的幅度有什麼關係呢?假設原始訊號的峰值為a,那麼fft的結果的每個點(除了第乙個點直流分量之外)的模值就是a的n/2倍。

而第乙個點就是直流分量,它的模值就是直流分量的n倍。而每個點的相位呢,就是在該頻率下的訊號的相位。第乙個點表示直流分量(即0hz),而最後乙個點n的再下乙個點(實際上這個點是不存在的,這裡是假設的第n+1個點,也可以看做是將第乙個點分做兩半分,另一半移到最後)則表示取樣頻率fs,這中間被n-1個點平均分成n等份,每個點的頻率依次增加。

例如某點n所表示的頻率為:fn=(n-1)*fs/n。由上面的公式可以看出,fn所能分辨到頻率為為fs/n,如果取樣頻率fs為1024hz,取樣點數為1024點,則可以分辨到1hz。

1024hz的取樣率取樣1024點,剛好是1秒,也就是說,取樣1秒時間的訊號並做fft,則結果可以分析精確到1hz,如果取樣2秒時間的訊號並做fft,則結果可以分析精確到0.5hz。如果要提高頻率解析度,則必須增加取樣點數,也即取樣時間。

頻率解析度和取樣時間是倒數關係。

下面這幅圖更能夠清晰地表示這種對應關係:

變換之後的頻譜的寬度(frequency span)與原始訊號也存在一定的對應關係。根據nyquist取樣定理,fft之後的頻譜寬度(frequency span)最大只能是原始訊號取樣率的1/2,如果原始訊號取樣率是4gs/s,那麼fft之後的頻寬最多只能是2ghz。時域訊號取樣週期(sample period)的倒數,即取樣率(sample rate)乘上乙個固定的係數即是變換之後頻譜的寬度,即 frequency span = k*(1/δt),其中δt為取樣週期,k值取決於我們在進行fft之前是否對原始訊號進行降取樣(抽點),因為這樣可以降低fft的運算量。

如下圖所示:

可見,更高的頻譜解析度要求有更長的取樣時間,更寬的頻譜分布需要提高對於原始訊號的取樣率,當然我們希望頻譜更寬,解析度更精確,那麼示波器的長儲存就是必要的!它能提供您在高取樣率下採集更長時間訊號的能力!值得強調的是,力科示波器可以支援計算128mpts的fft,而其它某品牌則只有3.

2mpts。

四、 在使用測試工具(示波器或者其它軟體平台)進行fft的方法和需要注意的問題?

我們先來看乙個簡單的例子---

problem:在示波器上採集乙個連續的,週期性的訊號,我們希望在示波器上進行fft計算之後,觀察到訊號中心頻率(center frequency)在2.48ghz,頻寬(frequency span)為5mhz,頻譜解析度(bandwidth resolution)為10khz的頻譜圖,應該如何設定示波器的採集?

首先,根據頻譜解析度(bandwidth resolution)10khz可以推算出,至少需要採集訊號的時間長度為 1/10khz=100us,因此至少要設定示波器時基為10us/div;為了盡量保證fft之後頻譜圖在各個頻點的訊號能量精度,測量時需要時域訊號幅值佔滿整個柵格的90%以上;取樣率設定應至少滿足nyquist取樣率,即至少設定 >5gs/s取樣率才能夠看到中心頻率在2.48ghz的頻率譜線;選擇合適的窗函式(von hann漢寧窗)和頻譜顯示方式(power spectrum);使用zoom工具,將頻譜移動到center 2.48ghz,scale 500khz/div 位置,zoom設定方法如下圖所示:

在力科示波器中進行fft的運算有幾種不同的輸出型別:

linear magnitude(volts),

phase(degrees),

power spectrum(dbm),

power spectral density(dbm)

這幾種輸出型別都是由fft計算之後的結果換算而來,我們知道fft計算之後的結果包含實部(real)和虛部(imaginary)成分,它們的單位都是volts。

具體的換算方式如下:

linear magnitude(volts)=

快速傅利葉變換 FFT 原理介紹

fft是離散傅利葉變換的快速演算法,可以將乙個訊號變換 到頻域。有些訊號在時域上是很難看出什麼特徵的,但是如 果變換到頻域之後,就很容易看出特徵了。這就是很多訊號 分析採用fft變換的原因。另外,fft可以將乙個訊號的頻譜 提取出來,這在頻譜分析方面也是經常用的。雖然很多人都知道fft是什麼,可以用...

傅利葉變換

傅利葉變換能將滿足一定條件的某個函式表示成三角函式 正弦和 或余弦函式 或者它們的積分的線性組合。在不同的研究領域,傅利葉變換具有多種不同的變體形式,如連續傅利葉變換和離散傅利葉變換。最初傅利葉分析是作為熱過程的解析分析的工具被提出的。目錄1概念 1.1 定義 1.2 中文譯名 1.3 應用 1.4...

小波變換he傅利葉變換

如果有人問我,如果傅利葉變換沒有學好 深入理解概念 是否能學好小波。答案是否定的。如果有人還問我,如果第一代小波變換沒學好,能否學好第二代小波變換。答案依然是否定的。但若你問我,沒學好傅利葉變換,能否操作 程式設計 小波變換,或是沒學好第一代小波,能否操作二代小波變換,答案是肯定的。一 一 基的概念...