本文已参与「新人创造礼」活动,一同敞开创造之路。
EMD算法完成轨道不平顺检测数据预处理
1.需求简介
高速综合检测车对轨道水平不平顺的检测是通过对超高进行25 m 高通滤波的办法,但因为标定差错、曲线超高、仪器漂移等原因使超高信号包含显着的非平稳趋势项,而对其进行滤波并不能消除该趋势项;此外,轨距不平顺因为陀螺漂移、曲线段不均匀磨耗等原因也存在着非线性的趋势项。而这些趋势项的存在,使得对信号进行时域的相关剖析或频域的功率谱剖析发生较大差错,特别是使得低频段的信号严峻失真。因此,消除轨道不平顺测验数据中的趋势项是预处理中一项重要的工作。
本程序复现了论文中的改善的经历模态分化(EMD)办法对信号进行分化,该办法依据信号自身的固有特性进行分化,具有自适应性强的特点,然后避免了采用小波剖析办法中小波基函数挑选的难题,然后提高了检测数据处理的准确性和有效性。
2.完成进程
-
运用 EMD 将轨道不半顺检测信号分化解为若干个本征模函数信号ca(t)c_a(t)和一个残余项rb(t)r_b(t)之和即
- q(t)=∑a=1bca(t)+rb(t)q(t) = \sum_{a=1}^b{c_a(t)+r_b(t)}
% EMD经历模态分化
qt=emd(data);
-
去掉检测信号的低频部分,运用剩余高频部分的本征模函数重量对信号进行重构,就得到消 除趋势项后的真实检测信号。因为 200km/h提速干线铁路轨道不平顺办理波长为110m,所以,只需将波长大于110m的低频本征模函数重量和残余项去除即可。
- 判别重量的波长需求运用希尔伯特改换,关于本案例 采样率fs为最小采样间隔的倒数,单位1/m。
[~,emdMaxIndex] =size(qt);
output=qt(:,1)*0;
fori=1:emdMaxIndex
% 希尔伯特改换
z=hilbert(qt(:,i));
% 确认均匀波长
wavelength=abs(1/mean(fs/(2*pi)*diff(unwrap(angle(z)))));
ifwavelength<passWave
output=output+z;
end
end
3.完好函数及作用测验
将该模块封装成以下函数。
function[output] =emdLimit(fs,data,passWave)
% fs 采样精度 单位 1/m
% data 数据
% passWave 波长阈值
% EMD经历模态分化
qt=emd(data);
[~,emdMaxIndex] =size(qt);
output=qt(:,1)*0;
fori=1:emdMaxIndex
% 希尔伯特改换
z=hilbert(qt(:,i));
% 确认均匀波长
wavelength=abs(1/mean(fs/(2*pi)*diff(unwrap(angle(z)))));
ifwavelength<passWave
output=output+z;
end
end
end
关于测验数据,作用如下:
4.参考资料
Matlab官方说明文档如下
-
ww2.mathworks.cn/help/signal…
-
ww2.mathworks.cn/help/signal…
原始论文
- 轨道不平顺检测数据的预处理办法剖析