使用Matlab求功率譜的常見方法有兩種:基于時域的方法和基于頻域的方法。
基于時域的方法:
獲取信號數據并將其存儲在一個向量中。
使用fft函數對信號進行傅里葉變換,將信號從時域轉換為頻域。
計算信號的功率譜密度,即信號的幅度譜的平方。
繪制功率譜圖。
基于頻域的方法:
獲取信號數據并將其存儲在一個向量中。
使用pwelch函數對信號進行功率譜估計,該函數將信號分割成多個重疊的子段,然后對每個子段進行傅里葉變換,最后對所有子段的結果進行平均。
根據需要選擇其他參數,如子段長度、重疊比例等。
繪制功率譜圖。
以下是一個基于頻域的示例代碼:
% 獲取信號數據
Fs = 1000; % 采樣率
T = 1/Fs; % 采樣間隔
L = 1000; % 信號長度
t = (0:L-1)*T; % 時間向量
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); % 信號
% 計算功率譜
window = 512; % 窗口長度
noverlap = 256; % 重疊長度
nfft = 1024; % 快速傅里葉變換點數
[Pxx, f] = pwelch(x, window, noverlap, nfft, Fs); % 計算功率譜
% 繪制功率譜圖
semilogy(f, Pxx); % 繪制半對數功率譜圖
title('Power Spectral Density');
xlabel('Frequency (Hz)');
ylabel('Power');
這段代碼生成一個信號,同時計算并繪制該信號的功率譜圖。可以根據需要修改信號數據和其他參數來適應不同的應用場景。