MATLAB實現信號頻譜分析(以餘弦信號的FFT為例)?

本文將以餘弦信號為例,介紹使用MATLAB進行數字信號頻譜分析的方法,主要使用了fft函數與fftshift函數,並對結果作出分析。

工具/原料

MATLAB軟件

方法/步驟

產生餘弦信號以作頻譜分析:

餘弦信號y=cos(2π*f*t);

信號頻率為f=10Hz;

時寬:1s

採樣率為fs=100Hz;

MATLAB程序:

f=10;

fs=100;

T=1;

n=round(T*fs);%採樣點個數

t=linspace(0,T,n);

y=cos(2*pi*f/fs*[0:n-1]);

figure;

plot(t,y);

title('餘弦信號時域');

xlabel('t/s');

ylabel('幅度');

運行結果:

MATLAB實現信號頻譜分析(以餘弦信號的FFT為例)

用fft函數對產生的餘弦信號作頻譜分析:

注意:該步驟得到的是0~fs內的頻譜。

MATLAB代碼:

fft_y=fft(y);

f=linspace(0,fs,n);

figure;

plot(f,abs(fft_y));

title('餘弦信號頻譜');

xlabel('f/Hz');

ylabel('幅度');

可以看到10Hz處有峰值,90Hz的峰值是-10Hz的峰值向右頻譜搬移fs=100Hz得到的。

運行結果:

MATLAB實現信號頻譜分析(以餘弦信號的FFT為例)

用fftshift函數得到-fs/2~fs/2內的頻譜:

MATLAB代碼:

fftshift_y=fftshift(fft_y);

f=linspace(-fs/2,fs/2,n);

figure;

plot(f,abs(fftshift_y));

title('餘弦信號頻譜');

xlabel('f/Hz');

ylabel('幅度');

由於實信號頻譜幅度關於原點對稱,可以看到10Hz與-10Hz處的兩個峰值。

運行結果:

MATLAB實現信號頻譜分析(以餘弦信號的FFT為例)

注意事項

由於本文對實信號作FFT,得到的頻譜幅度是關於頻率軸對稱的;若對覆信號作頻譜分析,則得到的譜線不一定關於頻率軸對稱。

相關問題答案