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

问题描述 投票:1回答:2

我试图生成一条随机道路,它将被用作四分之一汽车模型的输入。

我使用了这篇文章中描述的程序 http:/link.springer.comarticle10.1007%2Fs12544-013-0127-8fulltext.html。 .

在图2中,生成的道路绘制了A-B类的最大标高为15毫米,D-E为100毫米。我的问题是,我从他们报告的那些振幅高得多。

我不知道我做错了什么,任何指导都会感激不尽。

道路长度=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
matlab gaussian psd
2个回答
1
投票

本文:Josef Melcer "车辆沿道路结构运动的数值模拟",2012年(google一下)

只给出了道路高度的最终公式(公式4),并且与Agostinacchio论文中的公式不同。不同之处在于余弦项中的2*pi。删除2*pi项后,振幅就会 "好 "得多(好在 "脚本情节与Agostinacchio论文中的情节更吻合 "的意义上)。但我不确定这在物理和数学上是否正确。

你有其他的解决办法吗?


1
投票

我设法联系了文章的作者,让他检查我的代码,他说这是正确的。看来文章中'k'的数值是错误的,k=6实际上是k=5,k=5是k=4,以此类推,这`就是为什么振幅比预期的高。当然,各篇文章的公式略有不同,有的用sin()代替cos(),有的用角空间频率(已经包含2*pi项)代替空间频率。

© www.soinside.com 2019 - 2024. All rights reserved.