快速傅里葉變換在信號處理中的應用
傅里葉變換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,就能在一定程度上提高頻率分辨率。
聲明:本文由登峰科技
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















