haijungfs 发表于 2012-3-20 13:27

periodogram求功率谱的疑问


直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为能量有限序列,直接计算x(n)的离散傅里叶变换,然后取其幅值的平方,并除以N,作为序列x(n)的真实功率谱估计。
      但是我用periodogram得出的图形与按公式编的程序的到得图形差接近30dB,这是为什么?
clear all
Fs=1000;
n=0:1/Fs:1;
x=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n));
nfft=1024;
window=boxcar(length(n));
=periodogram(x,window,nfft,Fs);
P=10*log10(Pxx);
plot(f,P);
hold on;
Pxx_1=abs(fft(x,nfft)).^2/length(n);
t=0:round(nfft/2-1);
f=t*Fs/nfft;
P_1=10*log10(Pxx_1(t+1));
plot(f,P_1,'r');
legend('periodogram','公式');
title('周期图法功率谱估计');

mingyue423 发表于 2012-11-9 23:19

同求,我做得也是,不知道是什么原因,有没有高手教一下

wujx 发表于 2012-11-10 14:13

same i!!!!!!!!!!!

wuzhijun117420 发表于 2012-12-31 21:48

连续信号功率谱Pxx为离散功率谱CXk的1/Fs=delta_t.由periodogram计算的是连续信号功率谱(程序设计时就考虑是计算连续信号功率谱,不需使用者转化)=离散信号功率谱(上自己公式)/Fs。故两者相差1024倍,反映到分贝,正好就是30分贝。

补充内容 (2013-1-6 20:42):
在学校写论文时曾经学习过。嘿嘿!

嘘低调 发表于 2013-4-22 18:00

wuzhijun117420 发表于 2012-12-31 21:48 static/image/common/back.gif
连续信号功率谱Pxx为离散功率谱CXk的1/Fs=delta_t.由periodogram计算的是连续信号功率谱(程序设计时就考虑 ...

那就是说离散信号的功率谱只能用公式来推导了?用其他函数结果不对?

hcharlie 发表于 2013-4-22 20:31

本帖最后由 hcharlie 于 2013-4-22 20:43 编辑

我以为用《Matlab在振动信号处理中的应用》中提出的计算功率谱的公式:
Pxx_1=abs(fft(x,nfft)).^2/length(n);
计算得到的功率谱(反正不是功率谱密度),是所谓的没有密度的功率谱,我一直对这个功率谱的物理意义十分怀疑,它比频谱的平方就是要大n倍,这个计算就证明了我的想法。
两种算法不是差30dB而是大概27dB,具体说不是差1024倍,而是512倍。我觉得不是偶然的,是有其确切的理由的。

嘘低调 发表于 2013-4-23 10:36

hcharlie 发表于 2013-4-22 20:31 static/image/common/back.gif
我以为用《Matlab在振动信号处理中的应用》中提出的计算功率谱的公式:
Pxx_1=abs(fft(x,nfft)).^2/length ...

主任我现在算的是高斯白噪声的功率谱密度按照你说的物理学的功率谱算法的公式 PSD理论值为接近0.4左右和结果和接近   但是这个功率谱的波动太厉害了怎么能减缓呢   是不是要多算几次这样的功率谱密度再取平均呢?非常感谢

hcharlie 发表于 2013-4-23 11:28

嘘低调 发表于 2013-4-23 10:36 static/image/common/back.gif
主任我现在算的是高斯白噪声的功率谱密度按照你说的物理学的功率谱算法的公式 PSD理论值为接近0.4左右 ...

平均50~100次

嘘低调 发表于 2013-4-23 12:48

hcharlie 发表于 2013-4-23 11:28 static/image/common/back.gif
平均50~100次

恩谢谢   我还有个疑问我看了篇论文用有限元软件分析得到一个应力时间历程的数据就开始做应力响应PSD   然后就对这应力响应的PSD进行分析没有取平均这有没有道理啊

hcharlie 发表于 2013-4-23 14:19

嘘低调 发表于 2013-4-23 12:48 static/image/common/back.gif
恩谢谢   我还有个疑问我看了篇论文用有限元软件分析得到一个应力时间历程的数据就开始做应力响应P ...

我没有看到他的论文,无可评论。
看到你的结果了,你必须要平均。

嘘低调 发表于 2013-4-23 17:38

hcharlie 发表于 2013-4-23 14:19 static/image/common/back.gif
我没有看到他的论文,无可评论。
看到你的结果了,你必须要平均。

恩 谢谢我自己在想想

hcharlie 发表于 2013-4-23 18:03

嘘低调 发表于 2013-4-23 10:36 static/image/common/back.gif
主任我现在算的是高斯白噪声的功率谱密度按照你说的物理学的功率谱算法的公式 PSD理论值为接近0.4左右 ...

介绍一个随机PSD估计的误差公式:当平均次数n>>1时,σ/m = 1/sqrt(n)
σ/m 为误差的均方根值与平均值之比,也就是相对误差的均方根值,它与平均次数n的平方根值成反比。
比如 n = 100次,则psd相对误差的σ值为10%,最大误差按3倍计,为正负30%。你的原值0.4,测量值在0.28与0.52之间,比现在的图好看多了。
统计次数少了,误差会加大。

嘘低调 发表于 2013-4-23 18:14

本帖最后由 嘘低调 于 2013-4-23 22:19 编辑

hcharlie 发表于 2013-4-23 18:03 http://forum.chinavib.com/static/image/common/back.gif
介绍一个随机PSD估计的误差公式:当平均次数n>>1时,σ/m = 1/sqrt(n)
σ/m 为误差的均方根值与平均值之 ...

恩非常感谢你说的很有用
取50次作出的图形很接近了      
再请教一个问题壳体受随机载荷作用得到频域的位移数据(因为是壳体所以有实位和虚伪)和得到位移功率谱 我应该怎么得到时域的位移啊我想直接对其位移幅值作傅里叶逆变换可行吗

hcharlie 发表于 2013-4-24 15:06

嘘低调 发表于 2013-4-23 18:14 static/image/common/back.gif
恩非常感谢你说的很有用
取50次作出的图形很接近了      
再请教一个问题壳体受随机载荷作用 ...

按我的公式计算,50次平均结果在0.23到0.57之间的概率应该是99.27%,果然正确!
功率谱密度已经丢失相位信息,无法再还原成时域信号。

嘘低调 发表于 2013-4-24 15:57

hcharlie 发表于 2013-4-24 15:06 static/image/common/back.gif
按我的公式计算,50次平均结果在0.23到0.57之间的概率应该是99.27%,果然正确!
功率谱密度已经丢失相位 ...

恩   对    但是我也得到一组频域位移数据实位是振幅、虚位应该是相位吧我能根据这个来恢复吗对其组成的复数位移进行逆变换?   还有有限元软件里面如ANSYS的谱分析得到的PSD是经过平均了的吗还是一次计算得到的?新手问题比较多非常感谢
页: [1] 2
查看完整版本: periodogram求功率谱的疑问