从功率谱密度产生随机振动

时间:2014-03-18 00:41:14

标签: matlab gaussian psd

我试图生成一条随机道路,用作季度汽车模型的输入。

我使用了本文http://link.springer.com/article/10.1007%2Fs12544-013-0127-8/fulltext.html中描述的过程。

在图2中,绘制了生成的道路,A-B类别的最大高度为15 mm,D-E的最大高度为100 mm。我的问题是,我从他们报道的那些中获得了更高的振幅。

我不确定自己做错了什么,任何指导都会受到赞赏。

道路长度= 250米

空间频带= 0.004 - > 4

我使用了公式(8),文章中的简化版本(9)都给了我相同的结果。

我的matlab代码:

clear all;close all;
% spatial frequency (n0) cycles per meter
Omega0 = 0.1;
% psd ISO (used for formula 8)
Gd_0 =  32 * (10^-6);
% waveviness
w = 2; 
% road length
L = 250;

%delta n 
N = 1000;
Omega_L = 0.004;
Omega_U = 4;

delta_n =  1/L; % delta_n = (Omega_U - Omega_L)/(N-1);

% spatial frequency band
Omega = Omega_L:delta_n:Omega_U;

%PSD of road
Gd = Gd_0.*(Omega./Omega0).^(-w);

% calculate amplitude using formula(8) in the article
%Amp = sqrt(2*Gd*delta_n);

%calculate amplitude using simplified formula(9) in the article
k = 3;
Amp = sqrt(delta_n) * (2^k) * (10^-3) * (Omega0./Omega);

%random phases 
Psi = 2*pi*rand(size(Omega)); 

% x abicsa from 0 to L
x = 0:0.25:250;
% road sinal
h= zeros(size(x));

for i=1:length(x)
    h(i) = sum( Amp.*cos(2*pi*Omega*x(i) + Psi) );
end

plot(x, h*1000 );
xlabel('Distance m');
ylabel('Elevation (mm)');

grid on

2 个答案:

答案 0 :(得分:1)

在本文中: Josef Melcer“沿道路结构的车辆运动的数值模拟”,2012年(只是google it)

仅给出了道路高度的最终公式(公式4),并且与Agostinacchio的论文中的公式不同。差异是余弦项中的2 * pi。删除2 * pi项可以产生更大的“更好”振幅(在“Agostinacchio论文”中,“脚本图更适合于情节”的意义更好)。但我不确定这是否是物理和数学上正确的。

你有其他解决方案吗?

答案 1 :(得分:1)

我设法联系文章的作者来检查我的代码,他说这是正确的。似乎'k'的值在文章中是错误的,k = 6实际上是k = 5,k = 5是k = 4等等,这就是振幅高于预期的原因。 当然,公式与文章略有不同,有些使用sin()而不是cos()或角度空间频率(已经包含2 * pi项)而不是空间频率。