声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3325|回复: 16

[综合] periodogram求功率谱的疑问

  [复制链接]
发表于 2012-3-20 13:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
QQ截图20120320130712.png
直接法又称周期图法,它是把随机序列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));
[Pxx,f]=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('周期图法功率谱估计');
回复
分享到:

使用道具 举报

发表于 2012-11-9 23:19 | 显示全部楼层
同求,我做得也是,不知道是什么原因,有没有高手教一下
发表于 2012-11-10 14:13 | 显示全部楼层
same i!!!!!!!!!!!
发表于 2012-12-31 21:48 | 显示全部楼层
连续信号功率谱Pxx为离散功率谱CXk的1/Fs=delta_t.由periodogram计算的是连续信号功率谱(程序设计时就考虑是计算连续信号功率谱,不需使用者转化)=离散信号功率谱(上自己公式)/Fs。故两者相差1024倍,反映到分贝,正好就是30分贝。

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

点评

赞成: 3.0
赞成: 3
  发表于 2013-1-1 17:05
发表于 2013-4-22 18:00 | 显示全部楼层

那就是说离散信号的功率谱只能用公式来推导了?  用其他函数结果不对?
发表于 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倍。我觉得不是偶然的,是有其确切的理由的。

评分

1

查看全部评分

发表于 2013-4-23 10:36 | 显示全部楼层
hcharlie 发表于 2013-4-22 20:31
我以为用《Matlab在振动信号处理中的应用》中提出的计算功率谱的公式:
Pxx_1=abs(fft(x,nfft)).^2/length ...

主任  我现在算的是高斯白噪声的功率谱密度  按照你说的物理学的功率谱算法的公式 PSD理论值为接近0.4左右和结果 PSD.png 和接近   但是这个功率谱的波动太厉害了  怎么能减缓呢   是不是要多算几次这样的功率谱密度再取平均呢?非常感谢
发表于 2013-4-23 11:28 | 显示全部楼层
嘘低调 发表于 2013-4-23 10:36
主任  我现在算的是高斯白噪声的功率谱密度  按照你说的物理学的功率谱算法的公式 PSD理论值为接近0.4左右 ...

平均50~100次
发表于 2013-4-23 12:48 | 显示全部楼层

恩  谢谢   我还有个疑问  我看了篇论文  用有限元软件分析得到一个应力时间历程的数据就开始做应力响应PSD   然后就对这应力响应的PSD进行分析  没有取平均  这有没有道理啊
发表于 2013-4-23 14:19 | 显示全部楼层
嘘低调 发表于 2013-4-23 12:48
恩  谢谢   我还有个疑问  我看了篇论文  用有限元软件分析得到一个应力时间历程的数据就开始做应力响应P ...

我没有看到他的论文,无可评论。
看到你的结果了,你必须要平均。
发表于 2013-4-23 17:38 | 显示全部楼层
hcharlie 发表于 2013-4-23 14:19
我没有看到他的论文,无可评论。
看到你的结果了,你必须要平均。

恩 谢谢  我自己在想想
发表于 2013-4-23 18:03 | 显示全部楼层
嘘低调 发表于 2013-4-23 10:36
主任  我现在算的是高斯白噪声的功率谱密度  按照你说的物理学的功率谱算法的公式 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
介绍一个随机PSD估计的误差公式:当平均次数n>>1时,σ/m = 1/sqrt(n)
σ/m 为误差的均方根值与平均值之 ...


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

点评

赞成!其实,现在除PSD函数外,还有很多函数,如welch等画出的图形比PSD更好,能近似水平线。以前我是对比过的。  发表于 2013-4-24 21:37
发表于 2013-4-24 15:06 | 显示全部楼层
嘘低调 发表于 2013-4-23 18:14
恩  非常感谢  你说的很有用  
取50次作出的图形很接近了      
再请教一个问题  壳体受随机载荷作用 ...

按我的公式计算,50次平均结果在0.23到0.57之间的概率应该是99.27%,果然正确!
功率谱密度已经丢失相位信息,无法再还原成时域信号。
发表于 2013-4-24 15:57 | 显示全部楼层
hcharlie 发表于 2013-4-24 15:06
按我的公式计算,50次平均结果在0.23到0.57之间的概率应该是99.27%,果然正确!
功率谱密度已经丢失相位 ...

恩   对    但是我也得到一组频域位移数据实位是振幅、虚位应该是相位吧  我能根据这个来恢复吗  对其组成的复数位移进行逆变换?     还有有限元软件里面如ANSYS的谱分析得到的PSD是经过平均了的吗还是一次计算得到的?  新手问题比较多  非常感谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-26 19:32 , Processed in 0.086898 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表