在MATLAB中做FFT,首先編寫函數,對不同的采樣頻率和采樣點數,計算FFT後的頻率序列及其對應的幅值:
function?[f amplitude]?=?yopheeFFT(sampleRate,FFT_points)?
n?=?0:FFT_points-1;?
t?=?n/sampleRate;?%采樣時間序列?
f_All?=?n*sampleRate/FFT_points;?%頻率序列 %構造混有噪聲的周期信號並采樣?
signal?=?2*sin(2*pi*10*t)+1*sin(2*pi*20.25*t)+0.2*randn(size(t));? %對信號進行快速Fourier變換,並求振幅?
amplitude_All?=?abs(fft(signal,FFT_points))*2/FFT_points;?
f?=?f_All(1:FFT_points/2);?
amplitude?=?amplitude_All(1:FFT_points/2);
擴展資料
MATLAB中FFT函數的意義:
FFT是離散傅立葉變換的快速算法,可以將壹個信號變換到頻域。有些信號在時域上是很難看出什麽特征的,但是如果變換到頻域之後,就很容易看出特征了。這就是很多信號分析采用FFT變換的原因。另外,FFT可以將壹個信號的頻譜提取出來,這在頻譜分析方面也是經常用的。
模擬信號經過ADC采樣之後變成數字信號,可對此數字信號做FFT變換。N個采樣點經過FFT之後就可以得到N個點的FFT結果。為了方便進行FFT運算,通常N取2的整數次冪。
假設采樣頻率為Fs,信號頻率為F,采樣點數為N。則FFT之後結果為N點復數,其中每壹個點對應著壹個頻率點,該點復數的模值為原始信號在該頻率值下的幅度特性。
具體為:假設原始信號在某頻率點的幅值為A,則該頻點對應的FFT點復數的模值為A的N/2倍。而FFT第壹點為原始信號的直流分量,其模值為原始信號模值的N倍。對於相位,FFT復數的相位即為原始信號在該頻率點處的相位。