Matlab 傅利葉變換 通俗理解(二)

2021-09-07 13:17:58 字數 3933 閱讀 8544

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,...