EMD算法实现轨道不平顺检测数据预处理[亲测有效]

EMD算法实现轨道不平顺检测数据预处理[亲测有效]本程序复现了论文中的改进的经验模态分解(EMD)方法对信号进行分解,该方法根据信号本身的固有特性进行分解,具有自适应性强的特点。

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

EMD算法实现轨道不平顺检测数据预处理

1.需求简介

高速综合检测车对轨道水平不平顺的检测是通过对超高进行25 m 高通滤波的方法,但由于标定误差、曲线超高、仪器漂移等原因使超高信号包含明显的非平稳趋势项,而对其进行滤波并不能消除该趋势项;此外,轨距不平顺由于陀螺漂移、曲线段不均匀磨耗等原因也存在着非线性的趋势项。而这些趋势项的存在,使得对信号进行时域的相关分析或频域的功率谱分析产生较大误差,特别是使得低频段的信号严重失真。因此,消除轨道不平顺测试数据中的趋势项是预处理中一项重要的工作。

本程序复现了论文中的改进的经验模态分解(EMD)方法对信号进行分解,该方法根据信号本身的固有特性进行分解,具有自适应性强的特点,从而避免了采用小波分析方法中小波基函数选择的难题,从而提高了检测数据处理的准确性和有效性。

2.实现过程

  • 利用 EMD 将轨道不半顺检测信号分解解为若干个本征模函数信号
    c a ( t ) c_a(t)
    和一个残余项
    r b ( t ) r_b(t)
    之和即


    • q ( t ) = a = 1 b c a ( t ) + r b ( 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;
     for i=1:emdMaxIndex
         % 希尔伯特变换
         z=hilbert(qt(:,i));   
         % 确定平均波长
         wavelength = abs(1/mean(fs/(2*pi)*diff(unwrap(angle(z)))));
         if wavelength<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;
     for i=1:emdMaxIndex
         % 希尔伯特变换
         z=hilbert(qt(:,i));   
         % 确定平均波长
         wavelength = abs(1/mean(fs/(2*pi)*diff(unwrap(angle(z)))));
         if wavelength<passWave
             output = output+z;
         end
     end
 end

对于测试数据,效果如下:

截屏2022-10-09 10.59.34

4.参考资料

Matlab官方说明文档如下

原始论文

  • 轨道不平顺检测数据的预处理方法分析

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13061.html

(0)

相关推荐

  • TcaplusDB君的小知识之TcaplusDB的高可用性和数据安全性介绍

    TcaplusDB君的小知识之TcaplusDB的高可用性和数据安全性介绍随着信息化的发展,数据库已经是企业正常运营必不可少的工具,企业的所有数据都存储在数据库上,因此可以说数据库的可靠与否关系着企业的生死存亡。 因此,数据的保护和备份是数据库业务的重中之重,系统的可用性…

    2023-04-10
    153
  • random_shuffle(python中shuffle函数)

    random_shuffle(python中shuffle函数)

    2023-09-21
    131
  • Redis服务之常用配置(二) – Linux

    Redis服务之常用配置(二) – Linux上一篇博客我们聊了下redis的INCLUDE、NETWORK、GENERAL配置段相关配置和说明,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/133831

    2023-03-29
    162
  • (10)MySQL进阶篇SQL优化(InnoDB锁-间隙锁)[通俗易懂]

    (10)MySQL进阶篇SQL优化(InnoDB锁-间隙锁)[通俗易懂]1.概述 当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)”,InnoDB也

    2023-04-15
    136
  • SQL 语句执行很慢的原因「建议收藏」

    SQL 语句执行很慢的原因「建议收藏」大多数情况是正常的,只是偶尔会出现很慢的情况 网络问题 数据库在刷新脏页 获取锁失败,我们可以用 show processlist这个命令来查看当前的状态 刷脏页有下面4种场景(后两种不用太

    2023-02-19
    144
  • androidv1v2v3签名_签名状态v1 v2

    androidv1v2v3签名_签名状态v1 v2签名是摘要与非对称密钥加密相相结合的产物,摘要就像内容的一个指纹信息,一旦内容被篡改,摘要就会改变,签名是摘要的加密结果,摘要改变,签名也会失效。Android APK签名也是这个道理,如果APK签名跟内容对应不起来,Android系统就认为APK内容被篡改了,从而拒绝安装,以…

    2023-08-04
    117
  • 优雅地使用Python条件嵌套语句

    优雅地使用Python条件嵌套语句Python是一种动态解释型的高级编程语言,它的语法简洁易懂,代码简洁易读,在很多场景下都可以替代复杂的编程语言。Python的语言特性之一是条件嵌套语句,它可以根据不同的判断条件执行不同的代码块,使得程序执行更加灵活。本文将从多个方面来详细地讲解如何优雅地使用Python条件嵌套语句,帮助读者更好地理解条件嵌套语句的使用方法。

    2024-03-24
    75
  • 干掉mapper.xml!MyBatis新特性动态SQL真香!「建议收藏」

    干掉mapper.xml!MyBatis新特性动态SQL真香!「建议收藏」当我们使用MyBatis的时候,需要在mapper.xml中书写大量的SQL语句。当我们使用MyBatis Generator(MBG)作为代码生成器时,也会生成大量的mapper.xml文件。其实从MBG 1.3.6版本以后,MyBatis官方已经推荐使用Dynamic SQ…

    2023-08-18
    112

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注