1. 程式人生 > >matlab 功率譜分析函式psd用法

matlab 功率譜分析函式psd用法

psd簡介

PSD(power spectrum analysis)功率譜分析,PSD在給定頻帶上的積分計算訊號在該頻帶上的平均功率。與均值-平方譜相反,這個光譜中的峰值並沒有反映出給定頻率的能量。

單邊PSD包含了訊號的總功率在頻率間隔從DC到一半的奈奎斯特速率。雙側PSD包含從直流到奈奎斯特頻率區間的總功率。

Hpsd = dspdata.psd(Data)使用資料中包含的功率譜密度資料,該資料可以是向量或矩陣的形式,其中每一列都是一組單獨的資料。物件的其他屬性的預設值如下:

psd函式用法:

Hpsd = dspdata.psd(Data)

使用包含在資料和頻率向量中的功率譜密度估計資料。如果使用包含在資料和頻率向量中的功率譜密度估計資料。

Hpsd = dspdata.psd(Data,Frequencies)

計算功率譜密度的頻率向量。這個向量的範圍取決於譜型值。對於單側,如果指定為偶數,則預設範圍為[0,pi)或[0,Fs/2],而[0,pi]或[0,Fs/2]。對於雙面,它是[0,2]或[0,Fs]。

Hpsd = dspdata.psd(...,'Fs',Fs)

使用取樣頻率Fs。指定Fs使用基於Fs的預設線性頻率集(在Hz中),並將規範頻率設定為false。

Hpsd = dspdata.psd(...,'SpectrumType',SpectrumType)

使用譜串指定計算功率譜密度的間隔。對於範圍為[0 pi]或[0 pi]的資料,將光譜型別設定為單層;對於範圍為[0 2pi]的資料,將光譜型別設定為雙向。

Hpsd = dspdata.psd(...,'CenterDC',flag)

使用標誌的值來指示零頻率(DC)元件是否居中。如果標誌為真,則表示直流分量位於雙側譜的中心。如果直流分量位於頻譜的左邊緣,則將標誌設定為false。

Matlab裡提供了很多PSD工具,比如:週期圖法、Welch法、Yule-Walker法、Burg法、協方差法。

週期圖法函式:

spectrum.periodogram

periodogram

Welch法函式:

spectrum.welch

pwelch

cpsd

tfestimate

mscohere

Yule-Walker法函式:

       spectrum.yulear

pyulear

Burg法函式:

       spectrum.burg

       pburg

協方差法函式:

spectrum.cov

pcov

fs = 5000;
t = (0 : fs/10) ./ fs;
A = [1 2];
f = [150; 140];
xn = A * sin(2 * pi * f * t) + 0.1*randn(size(t));

subplot(321)%原訊號
plot(t, xn)
Hrect = spectrum.periodogram;
%2 3 4比較,3最好,2 4 差不多
subplot(322)%週期圖估計
psd(Hrect, xn, 'Fs', fs, 'NFFT',1024);
Hhamm = spectrum.periodogram('Hamming');

subplot(323)%hamming窗估計週期圖
psd(Hhamm, xn, 'Fs', fs, 'NFFT',1024 );
Hs = spectrum.periodogram('rectangular');

subplot(324)%矩形窗週期圖估計
psd(Hs, xn, 'Fs', fs, 'NFFT',1024);
Hs = spectrum.welch('rectangular', 150, 50);
%5和6比較,6好
subplot(325)%welch法週期圖估計,使用150點,重合50點
psd(Hs, xn, 'Fs', fs, 'NFFT',512);
Hs = spectrum.welch('rectangula', 100, 75);

subplot(326)%welch法週期圖估計,使用100點,重合75點
psd(Hs, xn, 'Fs', fs, 'NFFT',512);