FFT-Matlab初步實現
/****************************************************/
/****************************************************/
/****************************************************/
下面是具體說明
1、FFT:頻譜關於中間位置對稱,只需要觀察 0:1:N/2(這N/2+1個點)(時域採集N個點,頻域只需要觀察N/2+1個點)
2、MATLAB中FFT的頻譜,應該看幅值
3、X軸頻率點的設定:取樣頻率為Fs,頻譜圖顯示的最高頻率為Fs/2(取樣定理)
:X軸頻率點:(0:1:N/2)*Fs/N
4、複數幅值修正
5、
/****************************************************/
/****************************************************/
/****************************************************/
栗子及實踐部分
一、訊號
1 2 3 4 5 6 7 8 9 10 11 12 |
|
二、繪製時域訊號
1 2 3 4 5 6 |
|
三、FFT變換、並繪製-幅值、實部、虛部
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
可以看出頻域中的點關於(N/2)對稱,所以只需要觀察(0:1:N/2)
四、更改相位
幅值不受影響,但實部或虛部的值,會出現0的情況==>看MATLAB中FFT的頻譜,應該看幅值
繪製半譜圖(幅值的)後--我們發現-幅值-相位-頻率---均和時域對應不上。
==>進行幅值-修正
五、進行幅值-修正--並繪製圖形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
放大後可以看到,此時,幅值-頻率都和時域一致
此時FFT的相點陣圖是雜亂無章的--不用擔心,沒有頻率處的相位是無意義的--我們只需要放大看各個(實際存在的)頻率點的相位即可
可以看到--f1=33Hz處為45度,即pi/4--是正確的
六、實際操作:請分析一個未知的採集訊號 (example.mat),並確定該採集訊號的頻率成分。其中, 訊號的採集頻率 Fs = 2500 Hz
程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|