快速傅里葉變換在信號處理中的應用

傅里葉變換FT(Fourier Transform)是一種將信號從時域變換到頻域的變換形式。它在聲學、信號處理等領域有廣泛的應用。計算機處理信號的要求是:在時域和頻域都應該是離散的,而且都應該是有限長的。而傅里葉變換僅能處理連續信號,離散傅里葉變換DFT(Discrete Fourier Transform)就是應這種需要而誕生的。它是傅里葉變換在離散域的表示形式。但是一般來說,DFT的運算量是非常大的。在1965年首次提出快速傅里葉變換算法FFT(Fast Fourier Transform)之前,其應用領域一直難以拓展,是FFT的提出使DFT的實現變得接近實時。DFT的應用領域也得以迅速拓展。除了一些速度要求非常高的場合之外,FFT算法基本上可以滿足工業應用的要求。由於數字信號處理的其它運算都可以由DFT來實現,因此FFT算法是數字信號處理的重要基石。

傅立葉原理表明:任何連續測量的時序或信號,都可以表示爲不同頻率的正弦波信號的無限疊加。而根據該原理創立的傅立葉變換算法利用直接測量到的原始信號,以累加方式來計算該信號中不同正弦波信號的頻率、振幅和相位。如圖1所示,即爲時域信號與不同頻率的正弦波信號的關係,這是最近翻閱文獻看到的對於時域頻域表示的最簡單明瞭的圖,原處爲參考文獻中的第二個鏈接,有興趣的朋友可以去原文查閱。圖中最右側展示的是時域中的一個信號,這是一個近似於矩形的波,而圖的正中間則是組成該信號的各個頻率的正弦波。從圖中我們可以看出,即使角度幾乎爲直角的正弦波,其實也是由衆多的弧度圓滑的正弦波來組成的。在時域圖像中,我們看到的只有一個矩形波,我們無從得知他是由這些正弦波組成。但當我們通過傅里葉變換將該矩形波轉換到頻域之後,我們能夠很清楚的看到許多脈衝,其中頻域圖中的橫軸爲頻率,縱軸爲振幅。因此可以通過這個頻域圖像得知,時域中的矩形波是由這麼多頻率的正弦波疊加而成的。

圖1   時域頻域關係圖

這就是傅里葉變換的最基本最簡單的應用,當然這是從數學的角度去看傅立葉變換。在信號分析過程中,傅里葉變換的作用就是將組成這個回波信號的所有輸入源在頻域中按照頻率的大小來表示出來。傅里葉變換之後,信號的幅度譜可表示對應頻率的能量,而相位譜可表示對應頻率的相位特徵。經過傅立葉變換可以在頻率中很容易的找出雜亂信號中各頻率分量的幅度譜和相位譜,然後根據需求,進行高通或者低通濾波處理,最終得到所需要頻率域的回波。

傅里葉變換在圖像處理過程中也有非常重要的作用,設信號f是一個能量有限的模擬信號,則其傅里葉變換就表示信號f的頻譜。從純粹的數學意義上看,傅里葉變換是將一個函數轉換爲一系列周期函數來處理的。從物理效果看,傅里葉變換是將圖像從空間域轉換到頻率域,其逆變換是將圖像從頻率域轉換到空間域。換句話說,傅里葉變換的物理意義是將圖像的灰度分佈函數變換爲圖像的頻率分佈函數。傅里葉逆變換是將圖像的頻率分佈函數變換爲灰度分佈函數。傅里葉頻譜圖上我們看到的明暗不一的亮點,其意義是指圖像上某一點與鄰域點差異的強弱,即梯度的大小,也即該點的頻率的大小。一般來講,梯度大則該點的亮度強,否則該點亮度弱。這樣通過觀察傅里葉變換後的頻譜圖,也叫功率圖,我們就可以直觀地看出圖像的能量分佈:如果頻譜圖中暗的點數更多,那麼實際圖像是比較柔和的,這是因爲各點與鄰域差異都不大,梯度相對較小;反之,如果頻譜圖中亮的點數多,那麼實際圖像一定是尖銳的、邊界分明且邊界兩邊像素差異較大的。

下面我們以信號處理過程中的一個例子來詳細說明FFT的效果:假設採樣頻率爲Fs,信號頻率爲F,採樣點數爲N。那麼FFT處理之後的結果就是一個點數爲N點的複數。每一個點就對應着一個頻率點,而每個點的模值,就是該頻率值下的幅度特性。假設原始信號的峯值爲A,那麼在處理後除第一個點之外的其他點的模值就是A的N/2倍。而第一個點就是直流分量,它的模值就是直流分量的N倍。而每個點的相位呢,就是在該頻率下的信號的相位。第一個點表示直流分量(即頻率爲0Hz),而最後一個點N的再下一個點(實際上這個點是不存在的,這裏是假設的第N+1個點,也可以看做是將第一個點分做兩半分,另一半移到最後)則表示採樣頻率Fs,這中間被N-1個點平均分成N等份,每個點的頻率依次增加。例如某點n所表示的頻率爲:Fn=(n-1)*Fs/N。由上面的公式可以看出,Fn 所能分辨到的最小頻率爲Fs/N,如果採樣頻率Fs爲1024Hz,採樣點數N爲1024點,則最小分辨率可以精確到1Hz。1024Hz的採樣率採樣1024點,剛好是1秒,也就是說,採樣1秒時間的信號並做FFT處理,則結果可以分析到1Hz;如果採樣2秒時間的信號並做FFT處理,則結果可以精確到0.5Hz。

假設現在我們有一個輸入信號,該信號總共包含3種成分信號,其一是5V的直流分量;其二是頻率爲50Hz、相位爲-60度、幅度爲10V的交流信號;第三個成分信號是頻率爲100Hz、相位爲90度、幅度爲5V的交流信號。該輸入信號用數學表達式表示如下:

                                            S=5+10*cos(2*pi*50*t-pi*60/180)+5*cos(2*pi*100*t+pi*90/180)

圖2 輸入信號

圖2即爲S信號的圖像表示。現在,我們以256Hz的採樣率Fs對這個信號進行採樣,採樣點數N同樣爲256點。根據公式我們可以算出其頻譜圖中的頻率精度爲1Hz。因此對於輸入信號頻率包含0Hz、50Hz和100hz的複合信號,在其經過FFT處理之後,應該會在頻譜圖中出現3個峯值,而且頻率分別爲0Hz、50Hz和100Hz,處理結果如圖3所示:

圖3 信號頻譜全圖

結果正如我們所預料的,對輸入信號’S’做FFT處理之後,圖3中出現了5個峯值,這是因爲對輸入信號做256點的FFT處理之後並沒有第257個頻點信息,這也是前文中所提到的第一個點的模值是N倍的原因。因此,信號的 FFT結果具有一定的對稱性。一般情況下,我們只使用前半部分的結果,即小於採樣頻率一半的結果。對於圖像進行簡單處理後,我們的前半部分的FFT結果如圖4所示:

圖4  處理後的頻譜圖

從圖4中可以看出,三個輸入信號頻點的幅值依次爲1280、1280、640;其他頻率所對應的幅值均爲0。按照公式,可以計算直流分量(頻率爲0Hz)的幅值爲:1280/N= 1280/256=5;頻率爲50Hz的交流信號的幅值爲:1280/(N/2)= 1280/(256/2)=10;而75Hz的交流信號的幅值爲640/(N/2)=640/(256/2)=5。這也正是我們輸入信號中的三個分量的直流分量值,由此可見,從頻譜分析出來的幅值是正確的。

通過上面的例子我們可以看出,對於一個輸入信號,假如我們不能確定該輸入信號的頻率組成,我們對其進行FFT處理之後,便可以很輕鬆的看出其頻率分量,並且可以通過簡單的計算來獲知該信號的幅值信息等。另外,如果想要提高頻率分辨率,我們根據計算公式首先想到的就是需要增加採樣點數,但增加採樣點數也就意味着計算量增加,這在工程應用中增加了工程難度。解決這個問題的方法有頻率細分法,比較簡單的方法是採樣較短時間的信號,然後在後面補充一定數量的0,使其長度達到需要的點數(一般爲2的冪次方的點數),然後再做FFT,就能在一定程度上提高頻率分辨率。

 

參考文獻

https://blog.csdn.net/guyuealian/article/details/72817527

https://blog.csdn.net/Best_Coder/article/details/39560287

https://blog.csdn.net/wordwarwordwar/article/details/68951605

https://wenku.baidu.com/view/aa227c1e650e52ea55189866.html

https://wenku.baidu.com/view/c33302126edb6f1aff001f04.html

https://blog.csdn.net/xz_wang/article/details/24926415

https://blog.csdn.net/djzhao/article/details/78333996

https://blog.csdn.net/liuuze5/article/details/40051395

 

 

 

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