用Python如何处理整车路躁结果

2018-07-09 08:18:43·  来源:误入CAE的程序员  
 
整车路躁仿真,是使用虚拟路谱作为激励,得到整车噪声和振动响应。所谓的虚拟路谱,就是路面不平度的功率谱密度(有自谱和互谱),是一种随机激励信号。由于激励为随机信号,所以响应也为随机信号,是一种统计意义上的数值。对于噪声响应,应该确切的说是声压的功率谱密度,单位为Pa^2/Hz,如果是振动响应,应该是加速度的功率谱密度,单位为(mm/s^2)^2/Hz。
整车路躁仿真,是使用虚拟路谱作为激励,得到整车噪声和振动响应。所谓的虚拟路谱,就是路面不平度的功率谱密度(有自谱和互谱),是一种随机激励信号。由于激励为随机信号,所以响应也为随机信号,是一种统计意义上的数值。对于噪声响应,应该确切的说是声压的功率谱密度,单位为Pa^2/Hz,如果是振动响应,应该是加速度的功率谱密度,单位为(mm/s^2)^2/Hz。



说完了仿真,现在大致说一下实验。一般整车路躁实验采集的是时域的麦克声压数据,通过傅里叶变化变成频域,然后再处理成dB(A),所以最后得到的曲线是一条横坐标为频率,纵坐标为dB(A)的曲线。同时,会求一个给定频域段内的RMS(root meam square),就是均方根值,也就是这个频域段内的有效值,这个值就是我们常说的噪声大小。



路躁仿真结果的处理就是要把仿真曲线处理成同实验规格一致,方便理解也方便同实验对标。这就要求两个:后处理的曲线纵坐标应该是A记权的声压级以及在给定频率段的RMS值。

首先第一个,就是要把输出的声压的功率谱密度最终转化成dB(A)。这个还是比较简单的,声压的功率谱密度乘以频率间隔即得到声压的平方(Pa^2),然后开方得到声压大小(Pa),到这个地步应该就比较容易了,采用基准声压2E-5Pa取20倍的log,得到无量纲的声压级——dB,再转成A记权的声压级——dB(A)。

第二个,如何求解给定频域段内的RMS值。这个稍微有点复杂,首先看看LMS test.lab关于RMS的算法的解释:
输出的是线性谱,即:



如果是功率谱,即:



其实本质是一样的,所谓线性谱,就是单位为Pa(或者dB或者dB(A)),所谓功率谱,就是Pa^2,但是至于你处理的是线性谱还是功率谱,其实在"Channel Processing"设置即可,AutoPowers Linear代表线性谱,AutoPowers PSD代表功率谱。

不管是线性谱还是功率谱,其求解的RMS本质来说都是一样的,就是求解曲线与横坐标围城的面积,也就是最终能量功率的概念,抓住这个本质,就很好理解这两者之间的关系,求解RMS(均方根值或者说有效值)也很简单了。那么你会问了,CAE仿真得到的是线性谱还是功率谱呢?首先来看输出的DISPLACEMENT的解释:



和随机响应输出的有关的定义红色圈圈已经标记出来,默认的输出格式为PSDF,即为功率谱密度,当然,也可以输出ATOC自相关函数,CRMS即累加的均方根值,RALL即把前三者全部输出。这样搞清楚了吧,有且只能输出功率谱密度。其实,早最终的结果*.pch文件中可以看到,输出的是功率谱密度:



算法大致搞清楚了,不嫌麻烦可以使用商业软件HyperGraph处理了,但是步骤繁琐,还得自己写脚本,计算两小时,你要花30分钟来处理这个结果,显然不太理想,这个时候Python的数据处理就能排上用场了,简直就是简单又暴力。

这是处理出来的数据,实际实验中声压常用dB(A),振动响应常用加速度幅值,所以处理出来的结果如下(随便找了Altair模型做的,请忽视实际结果大小):





分享到:
 
反对 0 举报 0 收藏 0 评论 0
沪ICP备11026620号