fft是離散傅利葉變換的高速演算法。能夠將乙個訊號變換到頻域。
有些訊號在時域上是非常難看出什麼特徵的,可是假設
變換到頻域之後。就非常easy看出特徵了。這就是非常多訊號分析採用
fft變換的原因。
另外,fft
能夠將乙個訊號的頻譜提取出來。這在頻譜分析方面也是經經常使用的。
fft結果的詳細物理意義。乙個模擬訊號。經過
adc取樣之後,就變成了數碼訊號。取樣定理告訴我們。取樣頻率要大於訊號頻率的兩倍。
取樣得到的數碼訊號,就能夠做
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
。如果要提高頻率分辨力,則必須新增取樣點數,也即取樣時間。
頻率解析度和取樣時間是倒數關係。
如果fft
之後某點
n用複數
a+bi
表示,那麼這個複數的模就是
an=根號
a*a+b*b
,相位就是
pn=atan2(b,a)
。 依據以上的結果,就能夠計算出n
點(n≠1
,且n<=n/2
)相應的訊號的表示式為:
an/(n/2)*cos(2*pi*fn*t+pn)
。即2*an/n*cos(2*pi*fn*t+pn)
。 對於n=1
點的訊號,是直流分量,幅度即為
a1/n
。因為fft
結果的對稱性,通常我們僅僅使用前半部分的結果,即小於取樣頻率一半的結果。
如果我們有乙個訊號,它含有
2v的直流分量。頻率為
50hz
、相位為
-30度、幅度為
3v的交流訊號,以及乙個頻率為
75hz
、相位為
90度、幅度為
1.5v
的交流訊號。用數學表示式就是例如以下:
s=2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180)
。式中cos
引數為弧度,所以
-30度和
90度要分別換算成弧度。我們以
256hz
的取樣率對這個訊號進行取樣,總共取樣
256點。依照我們上面的分析,
fn=(n-1)*fs/n
,我們能夠知道,每兩個點之間的間距就是
1hz。第
n個點的頻率就是
n-1。我們的訊號有
3個頻率:
0hz、
50hz
、75hz
。應該分別在第
1個點、第
51個點、第
76個點上出現峰值,其他各點應該接近
0。實際情況怎樣呢?我們來看看
fft的結果的模值如圖所看到的。
從圖中我們能夠看到。在第
1點、第
51點、和第
76點附近有比較大的值。
我們分別將這三個點附近的資料拿上來細看:1點:
512+0i
2點:-2.6195e-14 - 1.4162e-13i
3點:-2.8586e-14 - 1.1898e-13i
50點:-6.2076e-13 - 2.1713e-12i
51點:332.55 - 192i
52點:-1.6707e-12 - 1.5241e-12i
75點:-2.2199e-13 -1.0076e-12i
76點:3.4315e-12 + 192i
77點:-3.0263e-14 +7.5609e-13i
非常明顯,1點、
51點、
76點的值都比較大,它附近的點值都非常小,能夠覺得是
0,即在那些頻率點上的訊號幅度為
0。接著,我們來計算各點的幅度值。
分別計算這三個點的模值。結果例如以下:1點:
512
51點:384
76點:192
依照公式。能夠計算出直流分量為:
512/n=512/256=2
;50hz
訊號的幅度為:
384/(n/2)=384/(256/2)=3
;75hz
訊號的幅度為
192/(n/2)=192/(256/2)=1.5
。可見。從頻譜分析出來的幅度是正確的。
然後再來計算相位資訊。直流訊號沒有相位可言。不用管它。
先計算50hz
訊號的相位,
atan2(-192, 332.55)=-0.5236,
結果是弧度,換算為角度就是
180*(-0.5236)/pi=-30.0001
。再計算
75hz
訊號的相位。
atan2(192, 3.4315e-12)=1.5708
弧度,換算成角度就是
180*1.5708/pi=90.0002
。 可見。相位也是對的。依據fft
結果以及上面的分析計算,我們就能夠寫出訊號的表示式了,它就是我們開始提供的訊號。
相應上圖2中的fft模值
如果取樣頻率為fs,取樣點數為n,做fft之後。某一點n(n從1開始)表示的頻率為:fn=(n-1)*fs/n。該點的模值除以n/2就是相應該頻率下的訊號的幅度(對於直流訊號是除以n);該點的相位即是相應該頻率下的訊號的相位。相位的計算可用函式atan2(b,a)計算。atan2(b,a)是求座標為(a,b)點的角度值,範圍從-pi到pi。要精確到xhz,則須要取樣長度為1/x秒的訊號,並做fft。要提高頻率解析度,就須要新增取樣點數。這在一些實際的應用中是不現實的,須要在較短的時間內完畢分析。解決問題的方法有頻率細分法。比較簡單的方法是取樣比較短時間的訊號,然後在後面補充一定數量的0,使其長度達到須要的點數,再做fft,這在一定程度上可以提高頻率分辨力。
詳細的頻率細分法可參考相關文獻。
Matlab 傅利葉變換 通俗理解(二)
fft是離散傅利葉變換的高速演算法,能夠將乙個訊號變換到頻域。有些訊號在時域上是非常難看出什麼特徵的,可是假設 變換到頻域之後,就非常easy看出特徵了。這就是非常多訊號分析採用 fft變換的原因。另外,fft 能夠將乙個訊號的頻譜提取出來。這在頻譜分析方面也是經經常使用的。fft結果的詳細物理意義...
傅利葉變換的通俗理解
學習數理化,一大堆外國大ka命名的定理性質,看了也不知道實質,所以在懷著對大咖無比崇拜的心情的同時,心理卻要對這些大咖公式 白話化 fourier變換概念太難理解,不知實質說的是什麼 以後我把它稱為時函式f t 和頻函式f 這兩個函式都用於描述同乙個波函式 訊號處理 它們是等效的。或者稱它們可以通過...
傅利葉變換通俗解釋
線性時不變系統可以用單位脈衝響應來描述,下面闡述這樣說的原因。首先,單位脈衝響應是指在初始時刻給系統輸入乙個單位脈衝,得到的響應。單位脈衝在數學上用狄拉克函式描述,其具有無窮小的持續時間,但面積是1。然後,怎樣的系統可以稱為是線性時不變呢?線性的直觀解釋可以是這樣的 用任意x1輸入系統得到響應y1,...