FFT變換用於頻譜分析


    FFT就是快速傅里葉變換(Fast Fourier Transform),在Matlab中它是實現離散傅立葉變換DFT(Discrete Fourier Transform)的快速算法。作為對信號進行頻譜分析的有力工具,它的實現很簡單,一條語句就可以:

               Y = fft(x) 或 Y = fft(x, N)

    可以自己指定FFT變換的點數為N,也可以不指定,變換后Y的維數與x完全一致。

    設x的維數為m,若m<N, 則fft函數會在x 序列末尾添加0,增加其長度到N; 若m>N, 則會截取x 的前N個序列元素進行fft變換。

  

    頻率分析的目的是通過分析信號的頻譜組成,實現對信號特性的分析,便於后續的處理。時域信號一般可分為連續和離散信號,在計算機中處理的信號都要求為離散信號,即對於實際系統輸入的連續模擬信號,首先要進行模/數轉換(A/D轉換)變為數字信號,之后才能在計算機中處理分析,這一般通過數據采集卡的A/D轉換模塊來完成。

    對於已經采集到計算機中的離散數字信號,可以通過FFT變換實現原時域信號的頻譜分析。這其中要考慮的幾個重要問題包括:

1)  采樣頻率的設定:

    Nyquist條件給出了采樣頻率設定的基本原則, 即采樣頻率必須大於等於信號頻率的2倍。具體設定時,采樣頻率要能夠大於等於信號中最高頻率分量值的2倍,令fs表示采樣頻率,fh表示信號頻譜的最高頻率,那么要求: fs>=2fh, 否則將出現頻譜混疊現象。一般在工程上選擇采樣頻率為信號最高頻率的5~10倍。

2)  采樣長度的設定:

    在模擬進行頻譜分析時,要自行設定采樣點數N或采樣的時間長度T。

   在FFT變換后,頻譜中能夠區分出的最小頻率刻度就是變換后的頻率分辨率,滿足:df=fs/n, n為FFT 變換的點數;即FFT結果只能表示k*df (k=0,1,2,…)頻率坐標上的信號幅值,如果信號中的頻率分量值不等於k*df,而介於k*df與(k+1)*df之間時,FFT變換的結果會將該頻率分量的幅值泄露到其鄰近的頻率坐標位置上,從而出現FFT分析的信號泄露情況。因此,應當合理設定采樣點數,使得信號中的各頻率分量值能夠被df整除,從而使得變換后的信號頻譜能夠更好地描述信號特性。

3)  FFT變換特性:

     FFT算法特性使得變換后不僅包括正頻率部分,也包括負頻率部分,如設置采樣頻率為120Hz,采樣信號中包括頻率分量10Hz、50Hz,則可知滿足Nyquist采樣定理,不會出現頻譜混疊;經過FFT變換后,在頻率坐標的10Hz和50Hz位置處將出現頻譜峰值,而在110Hz和70Hz位置也同樣出現,其實即是變換后的負頻率成分-10Hz、-50Hz搬移120Hz后的結果。因此在分析上僅使用單邊的變換結果就夠用了。

 

Matlab中FFT變換實現頻譜分析的基本代碼如下:

 

fs = 100;                                 % 設定采樣頻率

N = 100;                                 % 設定采樣的點數

t = [0:(N-1)]*(1/fs);

 

% 生成仿真的時域信號,用采樣頻率fs對其采樣

x = 1/fs*sin(2*pi*25*t);          % 信號頻率為25Hz

 

% 畫出時域波形

figure(1)

plot(t,x);

grid on

title('時域信號x(t)');

xlabel('t')

ylabel('x(t)')

 

% 對x(t)進行FFT變換

Y = fft(x)/N;               

magY = 2*abs(Y(1:1:N/2));     % 求出信號的頻譜幅值

f = (0:N/2-1)*fs/N;                % 設定頻域的頻率坐標軸分量值,頻率分辨率為fs/N

 

figure(2)

plot(f,magY);                          % 繪制連續的幅頻響應曲線

 

figure(3)

h = stem(f,magY,'fill','--');       % 采用stem函數繪制離散的幅頻響應曲線

set(h,'MarkerEdgeColor','red','Marker','*')

grid on

title('x(t)的幅頻響應');

xlabel('頻率(Hz)')

ylabel('幅值')

 

以下結果是我的另一個仿真程序的運行結果,通過設定不同的變換點數,可以發現有效避免了信號泄露現象。

 正確設定變換點數,避免FFT分析的信號泄露情況


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM