PSD(power spectrum analysis)功率谱分析,PSD在给定频带上的积分计算信号在该频带上的平均功率。与均值-平方谱相反,这个光谱中的峰值并没有反映出给定频率的能量。
单边PSD包含了信号的总功率在频率间隔从DC到一半的奈奎斯特速率。双侧PSD包含从直流到奈奎斯特频率区间的总功率。
Hpsd = dspdata.psd(Data)使用数据中包含的功率谱密度数据,该数据可以是矢量或矩阵的形式,其中每一列都是一组单独的数据。对象的其他属性的默认值如下:
使用包含在数据和频率向量中的功率谱密度估计数据。如果使用包含在数据和频率向量中的功率谱密度估计数据。
计算功率谱密度的频率矢量。这个矢量的范围取决于谱型值。对于单侧,如果指定为偶数,则默认范围为[0,pi)或[0,Fs/2],而[0,pi]或[0,Fs/2]。对于双面,它是[0,2]或[0,Fs]。
使用采样频率Fs。指定Fs使用基于Fs的默认线性频率集(在Hz中),并将规范频率设置为false。
使用谱串指定计算功率谱密度的间隔。对于范围为[0 pi]或[0 pi]的数据,将光谱类型设置为单层;对于范围为[0 2pi]的数据,将光谱类型设置为双向。
使用标志的值来指示零频率(DC)组件是否居中。如果标志为真,则表示直流分量位于双侧谱的中心。如果直流分量位于频谱的左边缘,则将标志设置为false。
Matlab里提供了很多PSD工具,比如:周期图法、Welch法、Yule-Walker法、Burg法、协方差法。
spectrum.periodogram
periodogram
spectrum.welch
pwelch
cpsd
tfestimate
mscohere
spectrum.yulear
pyulear
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);