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);

猜你喜欢

转载自blog.csdn.net/weixin_41649786/article/details/81156685