本文將以餘弦信號為例,介紹使用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('幅度');
運行結果:
用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得到的。
運行結果:
用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處的兩個峰值。
運行結果:
注意事項
由於本文對實信號作FFT,得到的頻譜幅度是關於頻率軸對稱的;若對覆信號作頻譜分析,則得到的譜線不一定關於頻率軸對稱。