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