superzju 发表于 2008-10-15 14:11:51

谐波叠加法模拟路面谱

最近一直在看如何用谐波叠加发法模拟路面谱,然后自己尝试用matlab做了一下,发现结果总是有问题,希望大家探讨一下,谢谢。附件中包含相关1篇相关论文和自己用matlab模拟的过程(包括程序代码)。本来准备多发几篇相关论文上来的,但是文件太大了,后来就选了一篇。

superzju 发表于 2008-10-15 14:15:07

图一为空间路面谱。
图二为路面谱PSD。

superzju 发表于 2008-10-15 15:37:23

完整代码如下:
%======================================================%
x=(0:0.1:409.6);%离散路面点
n0=0.1;
Gq_n0=64e-6;
delt_n=0.0024;
thta=2*pi*(rand(1,3/0.0024));
q=0;
for j=1:3/0.0024
   n= delt_n *j;   
   Gq_n=Gq_n0*n0^2/n^2;
   Ai=sqrt(2*Gq_n*delt_n);
   q= q + Ai*sin( 2*pi*n*x+thta(j) );
end
%plot(x,q); %可画出空间路面谱图
%hold on;
%========================================================%
%求功率谱密度
Fs=10;
Hs=spectrum.welch;
hpsd=psd(Hs,q,'Fs',Fs);
Pw = hpsd.Data;
Fw = hpsd.Frequencies;
h1=loglog(Fw,Pw,'color','blue');
hold on;
%====================================================%
Gq_n0=32e-6;
n=(0.01:0.1:10);
Gq_n=Gq_n0*n0^2./n.^2;
loglog(n,Gq_n,'color','red');

hold on;
Gq_n0=64e-6;
n=(0.01:0.1:10);
Gq_n=Gq_n0*n0^2./n.^2;
loglog(n,Gq_n,'color','green');

hold on;
Gq_n0=128e-6;
n=(0.01:0.01:10);
Gq_n=Gq_n0*n0^2./n.^2;
loglog(n,Gq_n,'color','red');
%=====================================================%
从结果上可以看出,所模拟的路面波在高频段和理论上的是一致的,而在低频段有很大误差。不知是在求功率谱时有问题,还是在其他过程中不对,希望大家探讨一下。谢谢。

hjs2141 发表于 2008-10-15 23:37:40

我以前也做过,我的理解误差的原因主要在谐波叠加法和matlab的一些函数的计算上面(尤其是PSD函数),不过这样的路面谱用来做仿真可以了

superzju 发表于 2008-10-16 09:16:27

另外,对以下求PSD时的函数不是很清楚:
hpsd=psd(Hs,q,'Fs',Fs);
Pw = hpsd.Data;
Fw = hpsd.Frequencies;
h1=loglog(Fw,Pw,'color','blue');
为什么Pw和Fw的维数是129x1,有办法设置这两个参数吗?
直接用psd(Hs,q,'Fs',Fs);也能画出图形来,但结果与psd(Fw,Pw)不同,还不知道具体原因;

jiangsh1984 发表于 2009-2-27 22:18:19

看看
我也在弄

bravekaijiang 发表于 2010-6-8 15:12:11

多谢,很有用

AN817 发表于 2011-8-30 09:55:32

有用的东东,谢谢哈!

www85522 发表于 2012-4-18 10:44:04

谢谢了!

clannand 发表于 2017-5-2 16:04:04

有用的东东,谢谢哈!

HYFWQG 发表于 2018-7-5 11:08:16

谢谢分享

Matcha- 发表于 2021-12-12 17:04:36

学习学习
页: [1]
查看完整版本: 谐波叠加法模拟路面谱