声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2097|回复: 1

[结构振动] matlab中功率谱密度的计算是否存在真实值的问题

[复制链接]
发表于 2016-1-11 19:41 | 显示全部楼层 |阅读模式

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

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

x
因为自己需要根据结构跨中加速度功率谱密度函数频率计权后计算均方根加速度,所以希望知道功率谱密度是否存在真实值的问题。在计算幅值的时候存在真实值的问题,即
真实值=abs(fft(x,N))*2/N
但是在计算功率谱密度时,看到的计算方式大多为:
   y=fft(x,N);
   p=y.*conj(y)/N;
这种方式好像计算得到的功率谱密度并不是一个实际值,那么该如何计算得到实际值呢?
以下面程序为例,请帮忙写出功率谱密度的计算程序

  1. clc
  2. clear
  3. %读入数据,第一列赋予列向量t,第三列赋予列向量a,第二列丢弃
  4. <span style="line-height: 1.5;">[t,a]=textread('aa.txt','%f%*f%f');</span>
  5. %以下命令为显示加速度时程曲线
  6. figure(1)
  7. <span style="line-height: 1.5;">plot(t,a);</span>
  8. xlabel('时间(s)');
  9. ylabel('加速度(m/s^2)');
  10. title('跨中加速度时程曲线');
  11. grid;
  12. %进行FFT变换并做频谱图
  13. nfft=2^nextpow2(length(t));%找出大于t的个数的最大的2的指数值
  14. y=fft(a,nfft);%进行fft变换,得到频率的幅值分布
  15. mag=abs(y)*2/length(t); %求幅值
  16. del=t(3)-t(2);%时间步长
  17. fs=1/del;
  18. f=(0:nfft-1)'*fs/nfft;%频率序列
  19. figure(2);
  20. <span style="line-height: 1.5;">plot(f,mag);%做频谱图</span>
  21. axis([0,10,0,200]);
  22. xlabel('频率(Hz)');
  23. ylabel('幅值');
  24. title('跨中加速度频谱图');
  25. grid;
复制代码


本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2016-1-16 16:15 | 显示全部楼层
1)请注意你这两个公式计算得到的都是所谓功率谱,不带密度,所谓功率谱的因次是g^2,功率谱密度因次是g^2/Hz,相差频率因次,从数字上计算密度还要除以频率分辨率。
2)你的两个公式都有道理,前者说的是物理功率谱(密度),后者是所谓带负频率的数学功率谱(密度),后者为前者之半,你应该用前者。
3)调试程序都必须有自己正确的标准算例来验证结果,万不能靠任何别人出来指出正误。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-20 21:28 , Processed in 0.052044 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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