爲何要進行傅立葉變換,究竟有何意義?如何用MATLAB實現快速傅立葉變換?本文從 FFT 的由來開始講起,而後在 MATLAB 中實現了 FFT 的計算,並給你們詳細地解讀了 FFT 的變換結果,最後還介紹了 FFT 的一個應用實例。html
爲何要進行傅立葉變換,究竟有何意義?如何用MATLAB實現快速傅立葉變換?本文從 FFT 的由來開始講起,而後在 MATLAB 中實現了 FFT 的計算,並給你們詳細地解讀了 FFT 的變換結果,最後還介紹了 FFT 的一個應用實例。html
Y = fft(x) % x 爲一個序列(向量),存放採集信號的數據
Y = fft(x,n) % x 的定義同上,n 定義計算數據的個數
若是n 大於x 的長度,在x 的末尾添加0,使得x 的長度等於n
若是n 小於x 的長度,截取x 中的前n 個數來進行計算
Y 返回fft 的結果,爲一個複數序列(向量)
建議:採用第一種格式的用法,而且保證x 的個數爲偶數
頻譜關於中間位置對稱(序號位置0 和N/2 除外),MATLAB 的FFT 爲對稱譜
看MATLAB 中FFT 的頻譜,只須要看一半
幅值不受影響,可是實部或虛部的值,會出現0 的狀況
看MATLAB 中FFT 的頻譜,應該看幅值
FFT結果的數據長度:時域N個點-->頻域爲N/2+1個點
x軸頻率點的設置:採樣頻率爲Fs時,頻譜圖的最高頻率爲Fs/2(具體請參照採樣定理)
綜合上述兩點:x軸的頻率點爲:(0:1:N/2)*Fs/N
複數的幅值修正:複數序列Y的幅值,須要進行轉換,才能獲得與時域中對應信號的幅值。
複數的相位:計算Y的相位,獲得與時域中對應信號的相位值
進行傅里葉變換FFT的兩個基本問題
採樣頻率爲多少合適?
-根據採樣定理:Fs≥2Fc,實際應用中須要更大的Fs
須要採集多少個點?
-頻譜圖中,頻率的座標間隔(頻率分辨率):Fs/N(Page13)
-Fs=2000Hz,N=100,Fs/N=20
-原信號含有60Hz,72Hz頻率成分,(72–60)<20x
-N增大至1000,Fs/N=2,(72–60)>2√