matlab的fft函數(shù)
1.基本功能
FFT是離散傅立葉變換的快速算法,可以將一個信號變換到頻域。通過FFT變換可以對信號進(jìn)行頻譜分析,其對應(yīng)的數(shù)學(xué)表達(dá)式如下:
在MATLAB對信號的頻譜分析中,模擬信號X(t)經(jīng)過采樣后得到含有N個采樣點的數(shù)字信號X(n),取N點進(jìn)行FFT變換后,可以得到對應(yīng)數(shù)量的FFT結(jié)果。
2.函數(shù)調(diào)用
Y = fft(X,n,dim)
其中,X為輸入離散信號的序列,參數(shù)n(可省略)表示采樣點數(shù)量,參數(shù)dim(可省略)影響X中向量的取法,fft函數(shù)將返回快速傅里葉變換結(jié)果Y。
輸入的離散信號X可取向量、矩陣、多維數(shù)組,其在MATLAB中的具體取法如下。
當(dāng)X為向量時,fft(X)將返回該向量的傅里葉變換。
當(dāng)X為矩陣時,fft(X)將在指定的dim維上進(jìn)行傅里葉變換,其中dim=1表示按列,dim =2表示按行。省略dim的情況下,fft(X)將把x的各列視為向量,并返回每列的傅里葉變換。
當(dāng)X為一個多維數(shù)組時,fft(X)將把大小不等于1的第一個數(shù)組維度的值視為向量,并返回每個向量的傅里葉變換。
參數(shù)n為進(jìn)行FFT變換的點數(shù),與X的信號長度關(guān)系如下。
當(dāng)X的長度小于n時,則為 X 補上尾零以達(dá)到長度 n。
當(dāng)X的長度大于n時,則對 X 進(jìn)行截斷以達(dá)到長度 n。
3.參數(shù)n對頻譜分析的影響
幅值:根據(jù)采樣定理,fft能分辨的最高頻率為采樣頻率的一半(即Nyquist頻率),函數(shù)fft返回值Y以Nyqusit頻率為軸對稱的,Y的前一半與后一半是復(fù)數(shù)共軛關(guān)系。將進(jìn)行FFT變換的點數(shù)取做n,F(xiàn)FT后得到為n個復(fù)數(shù),每一個點就對應(yīng)著一個頻率點,只有在有頻率分量處才能在頻譜圖中畫出對應(yīng)的線;該復(fù)數(shù)的模值不等于信號的幅值,n值越大,F(xiàn)FT結(jié)果的模值越大,二者間數(shù)量關(guān)系將在下一部分介紹;不同模值間的比例代表了不同頻率含量的比例,與FFT數(shù)量n無關(guān)。
頻率分辨率:當(dāng)采樣個數(shù)超過FFT變換的個數(shù)時,F(xiàn)FT會自動切斷數(shù)據(jù),此時n值越大,頻率分辨率越高,如果采樣數(shù)據(jù)比較少或n取值較小,則FFT變換后不能很準(zhǔn)確的分辨出其中的頻率成分;當(dāng)采樣個數(shù)低于FFT變換的個數(shù)時,信號在時間域內(nèi)加零,致使振幅譜中出現(xiàn)很多其他成分,其振幅將因此減小。添加零可增加進(jìn)行FFT的數(shù)量,譜的密度增高了,但仍不能分辨其中的頻率成分,還會導(dǎo)致振幅波動,譜的分辨率沒有提高。
4.編程實現(xiàn)
以信號x(n)為例,通過編程可得到該信號的頻譜圖。完整代碼見文末,此處對求頻譜過程的代碼進(jìn)行一些說明。
FFT模值與信號幅值關(guān)系:
FFT幅值與信號幅值關(guān)系:假設(shè)原始信號的幅值為A,窗長取N,F(xiàn)FT輸出的模值為Y,則除了第一個點外的點,信號幅值與FFT模值有如下對應(yīng)關(guān)系:A=2/N*Y,第一個點為直流分量,它的模值就是直流分量的N倍。
原因: FFT結(jié)果除以N得到雙邊譜,再乘以2得到單邊譜。零頻在雙邊譜中本沒有被一分為二,故只需要除N即可。
?fftshift:
對于FFT得到的頻譜,橫軸顯示順序為:由0開始的由小到大的正頻率、0、絕對值由大到小的負(fù)頻率。故要得到正確的結(jié)果,需要以0hz為中心,將右半邊的負(fù)頻率平移至左半邊。通過函數(shù)fftshift可以實現(xiàn)上述變化。
即:為得到與橫坐標(biāo)軸對應(yīng)的頻譜,需要將fft后的結(jié)果通過函數(shù)fftshift進(jìn)行處理。

5.fft相位問題
1.噪聲信號過濾
為了避免輸入信號s(n)經(jīng)matlab求取FFT后,引入的一些幅值極小但對相位有影響的計算量,需要在相位分析前引入如下代碼,實現(xiàn)對FFT結(jié)果的過濾。濾除前后對比圖如下。


2.初相位設(shè)置
中n的取值從1開始時,50Hz信號的初相位為,相位結(jié)果如下圖:

n取值從0開始時,50Hz信號的初相位才是,即:
