车辆信号震动信号的滤波、幅值与能量分析——基于测试台采集文件ssjlbpp.m等的研究
车辆信号的震动信号的滤波、幅值以及能量分析信号是利用测试台采集回来的 文件列表 ssjlbpp.m cxssjlbpp.m ssj.m fuzhissj.m翻了翻硬盘里压箱底的车辆测试台数据哦对还有那堆当时随手起的.mat之外的.m文件ssjlbpp、cxssjlbpp、ssj、fuzhissj——这几个拼音缩写现在看还挺乐ssj肯定是「初始测试信号」了fuzhissj顺理成章是「幅值测信号」lbpp嘛…大概是「滤波包处理」不管了能用就行。先从原始信号开刀。先看ssj.m里的开头% 读原始震动信号——哦不对ssj本身就是初始处理可能连了图 load(vehicle_vib_test1.mat); Fs 2560; % 当年选的采样率挺高啊高速轴承振动都能抓吧 t (0:length(vib)-1)/Fs; figure; plot(t, vib); title(刚从台架拿下来的裸数据); xlabel(时间(s)); ylabel(振动加速度(g));对台架模拟的是车辆在搓板路以30km/h跑的状态搓板路嘛裸数据跳得那叫一个欢连毛刺带小碎波还有明显的周期性大颠簸——不用想搓板路的基频嘛。这时候得靠lbpp来“洗个澡”哦不对是ssjlbpp初始数据滤波包处理绕口但严谨当年可能是想严格区分阶段。搓板路这种有用的是车身/关键部件的响应频率高频的毛刺大概率是传感器或者采集线的干扰低频的呢哦对有时候台架的地脚螺栓也会晃所以这里用了带通滤波。直接贴代码片段加操作% ssjlbpp.m核心带通——当年用的是巴特沃斯哦看变量名butter_order对 butter_order 4; % 4阶够了太高怕把有用的谐波干掉 cut_low 2; % 地脚螺栓晃一般低于2Hz当年大概算过的经验值 cut_high 200; % 这个搓板模拟的主要是车身悬架200Hz顶破天覆盖轮辋的小响应了 [bb, aa] butter(butter_order, [cut_low cut_high]/(Fs/2), bandpass); vib_filtered filtfilt(bb, aa, vib); % filtfilt比filter香多了零相位失真当年这点小细节还挺注意 figure; plot(t, vib_filtered); title(洗完澡的初始数据); xlabel(时间(s)); ylabel(振动加速度(g));哦对洗前洗后对比图记得插可惜现在没法直接贴图但脑补一下裸数据是密密麻麻带锯齿的山脉洗完澡锯齿全没了山脉轮廓搓板路周期颠簸清晰中间的小起伏轮辋、轴承的小振动也保留得刚好巴特沃斯这点过渡平滑的优势很明显。车辆信号的震动信号的滤波、幅值以及能量分析信号是利用测试台采集回来的 文件列表 ssjlbpp.m cxssjlbpp.m ssj.m fuzhissj.m接下来得做幅值分析吧对fuzhissj.m。幅值最直观的是时域的最大值最小值峰峰值搓板路嘛峰峰值肯定很大。但有没有更细一点的比如均方根值这个最能反映能量大小时域波形的“平均震动程度”。还有峭度峭度大于3说明有冲击比如轮辋碰到了模拟的小坑当年台架搓板上会不会撒了点小石子忘了扫有意思。% fuzhissj.m核心 peak_val max(abs(vib_filtered)); % 绝对最大值有时候加速度是负的 peak_to_peak max(vib_filtered) - min(vib_filtered); rms_val rms(vib_filtered); kurtosis_val kurtosis(vib_filtered); fprintf(洗后振动信号分析结果\n); fprintf(绝对峰值%.2f g\n, peak_val); fprintf(峰峰值%.2f g\n, peak_to_peak); fprintf(均方根值%.2f g\n, rms_val); fprintf(峭度%.2f\n, kurtosis_val);当年跑出来的结果大概是绝对峰值1.8g峰峰值3.5g均方根0.7g峭度4.2——哦对峭度真的大于3绝对扫小石子的时候漏了两颗然后呢光时域不够频域的幅值谱和能量谱功率谱密度归一化或者积分当年选的是功率谱密度更直观各频段占多少能量是重点cxssjlbpp.m哦对「初始处理完的信号的频谱分析」绕死了但逻辑链不能断嘛。% cxssjlbpp.m核心用pwelch避免直接FFT的能量泄露 window hamming(1024); % 汉明窗主瓣宽旁瓣低平衡了频率分辨率和泄露 noverlap 512; % 50%重叠平滑度好 nfft 2048; % 补零提高显示精度实际频率分辨率还是Fs/1024≈2.5Hz [pxx, f] pwelch(vib_filtered, window, noverlap, nfft, Fs); figure; subplot(2,1,1); plot(f, pxx); title(功率谱密度PSD); xlabel(频率(Hz)); ylabel(功率谱密度(g²/Hz)); xlim([cut_low cut_high]); % 只看洗过澡的范围 subplot(2,1,2); plot(f, cumsum(pxx)/sum(pxx)); title(归一化累积功率谱); xlabel(频率(Hz)); ylabel(累积功率占比); xlim([cut_low cut_high]);当年PSD图里最亮的峰在5Hz左右——搓板路基频验证一下30km/h换成米每秒是8.33m/s假设搓板间距是1.66m那8.33/1.66≈5Hz完全对得上然后累积功率谱图里大概60%的能量都集中在20Hz以下——主要是车身和悬架的响应剩下的40%在20-200Hz之间那就是轮辋、小石子的冲击还有一点点轮胎花纹的摩擦声了。后来这四个.m文件帮了大忙找到了台架模拟参数的微调点也验证了当年那款新悬架的舒适性。现在再看这些拼音缩写虽然土但全是当年敲代码敲到手软的回忆啊。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2454928.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!