0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python轴承故障诊断之经验模态分解EMD原理介绍

冬至子 来源:建模先锋 作者:小蜗爱建模 2023-12-12 16:28 次阅读

1 经验模态分解EMD原理介绍

1.1 EMD概述

经验模态分解(Empirical Mode Decomposition,EMD)方法是一种自适应信号时频处理方法,特别适用于非线性、非平稳信号的分析处理[1]。其本质是一种对信号进行分解的方法,将信号分解为各个相互独立的成分的叠加,依据数据自身的时间尺度特征来进行信号分解,具备自适应性。

EMD的优点在于它是一种自适应的、数据驱动的分解方法,不需要预先假设信号的分布或结构。这使得它适用于处理各种类型的信号,包括非线性和非平稳信号。

EMD 认为任何一个复杂序列都是由多个单频率信号叠加而成,因此可以分解成若干个 本征模态函数(Intrinsic Mode Functions, IMF),IMF 的各个分量即代表了原始信号中的各频 率分量,并按照从高频到低频的顺序依次排列,这也是 IMF 的物理含义[2]。

1.2 本征模态函数IMF

本征模态函数(Intrinsic Mode Functions, IMF)就是原始信号被 EMD 分解之后得到的各层信号分量。任何信号都可以拆分成若干个 IMF 之和。IMF 有两个假设条件:

  • 在整个数据段内,极值点的个数和过零点的个数必须相等或相差最多不能超过一 个;
  • 在任意时刻,由局部极大值点形成的上包络线和由局部极小值点形成的下包络线 的平均值为零,即上、下包络线相对于时间轴局部对称。

对于上述的条件理解如下:

第一,图线要反复跨越 x 轴,比如:

图片

反复跨越 x 轴

而不能像下面这样某次穿过零点后出现多个极点:

图片

某次穿过零点后出现多个极点

第二,上下包络线要对称,比如:

图片

上下包络线对称

而不能像如下这样,上下包络线不对称

图片

1.3 EMD 分解的基本假设

  • 信号至少有两个极值点:一个极大值点和一个极小值点;
  • 特征时间尺度由极值之间的时间间隔定义;
  • 如果数据完全没有极值,但只包含拐点,那么可以一次或多次划分来揭示极值点,最终的结果可以通过积分得到

2 EMD分解的基本原理和步骤

EMD的分解过程是一个迭代的过程。首先,对原始信号进行极值点的提取,然后通过连接极值点的均值得到第一轮的近似IMF(也叫做“本征模态”)。接下来,将这个近似IMF从原始信号中减去,得到一个新的信号,然后对这个新信号再次进行极值点提取和均值连接,得到第二轮的近似IMF。如此往复,直到得到的近似IMF满足某种停止准则。

对于原始信号 X(t)

图片

第一步,极值点提取:

从待分解的信号中识别局部极值点,包括局部极大值和局部极小值。极值点是信号中的局部特征,能够帮助刻画信号的振荡特性。

图片

第二步,构建上下包络线:

通过连接相邻的局部极大值和局部极小值,构建信号的上包络线和下包络线。上包络线 U(t) 由局部极大值连接而成,下包络线 L(t) 由局部极小值连接而成。包络线用于描述信号的振荡范围。

图片

第三步,提取均值函数:

计算上包络线和下包络线的平均值,得到均值函数 m1。将原始信号减去均值函数,得到一维信号 h1。

m1 = ( U(t) + L(t) ) / 2

h1 = X(t) - m1

图片

第四步,迭代分解:

对减去均值函数后的一维信号 h1,重复步骤1-3的过程,直到得到的剩余信号为“单调信号”,或者满足IMF的两个假设条件。迭代k次的IMF为

hk = h(k-1) - mk

第五步,确定本征模态函数(IMF):

在每一次迭代中,通过极值点提取、构建包络线等步骤,得到的剩余信号被称为一个本征模态函数(IMF)。IMF具有局部特征,并且代表了信号在不同尺度上的振荡模式。使用上述方法得到的第一个IMF记为c1, 然后将c1从原始信号中分离,得到

r1 = X(t) - c1

由于r1仍然包含大量信息,因此将r1作为新的原始信号,再通过步骤1-4的分析,可以得到IMF2,以此类推,得到

r1 - c2 = r2,... ..., r(n-1) -cn = rn

当cn或rn小于某一设定值,或者得到的剩余信号为“单调信号”,无法提取更多的IMF时,迭代终止,得到最终的分解结果为:

图片

图片

第六步,重构信号:

将得到的IMF函数进行逐个提取,直到无法再得到新的IMF为止。最终得到的IMF函数可以被看作是信号在不同时间尺度上的振荡模式,它们的组合可以重构原始信号。

这些基本步骤构成了EMD方法的核心流程,通过这些步骤,EMD可以将复杂的信号分解成不同尺度和频率的本征模态函数,从而揭示信号的局部特征和振荡模式。

3 基于Python的EMD实现

在 Python 中,使用 PyEMD 库来实现经验模态分解(EMD)

2.1 代码示例

import numpy as np
import matplotlib.pyplot as plt
from PyEMD import EMD


# 生成一个示例信号
t = np.linspace(0, 1, 1000)
s = np.sin(11*2*np.pi*t*t) + 6*t*t


# 创建 EMD 对象
emd = EMD()


# 对信号进行经验模态分解
IMFs = emd(s)


# 绘制原始信号和每个本征模态函数(IMF)
plt.figure(figsize=(15,10))
plt.subplot(len(IMFs)+1, 1, 1)
plt.plot(t, s, 'r')
plt.title("Original signal")


for num, imf in enumerate(IMFs):
    plt.subplot(len(IMFs)+1, 1, num+2)
    plt.plot(t, imf)
    plt.title("IMF "+str(num+1))


plt.show()

图片

2.2 轴承故障数据的分解

选择 0.021英寸滚珠故障信号数据来做EMD分解

2.2.1 凯斯西储大学轴承数据的加载

第一步,导入包,读取数据

import numpy as np
from scipy.io import loadmat
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')


# 读取MAT文件
data = loadmat('21_2.mat') # 0.021英寸 滚珠
# 注意,读取出来的data是字典格式,可以通过函数type(data)查看。

第二步,数据集中读取 驱动端加速度数据,取一个长度为1024的信号进行后续观察和实验

# DE - drive end accelerometer data 驱动端加速度数据
data_list = data['X222_DE_time'].reshape(-1)
# 划窗取值(大多数窗口大小为1024)
data_list = data_list3[0:1024]
#  进行数据可视化
plt.figure(figsize=(20,10))
plt.plot(data_list)
plt.title("滚珠")
plt.show()

图片

2.2.2 滚珠故障信号EMD分解

import numpy as np
import matplotlib.pyplot as plt
from PyEMD import EMD


t = np.linspace(0, 1, 1024)
data = np.array(data_list)
# 创建 EMD 对象
emd = EMD()


# 对信号进行经验模态分解
IMFs = emd(data)


# 绘制原始信号和每个本征模态函数(IMF)
plt.figure(figsize=(15,10))
plt.subplot(len(IMFs)+1, 1, 1)
plt.plot(t, data, 'r')
plt.title("Original signal", fontsize=10)


for num, imf in enumerate(IMFs):
    plt.subplot(len(IMFs)+1, 1, num+2)
    plt.plot(t, imf)
    plt.title("IMF "+str(num+1), fontsize=10)
    # 增加第一排图和第二排图之间的垂直间距
plt.subplots_adjust(hspace=0.4, wspace=0.2)
plt.show()

图片

2.3 信号分量的处理

通过经验模态分解(EMD)得到了信号的分量,可以进行许多不同的分析和处理操作,以下是一些常见的对分量的利用方向:

(1)信号重构:将分解得到的各个本征模态函数(IMF)相加,可以重构原始信号。这可以用于验证分解的效果,或者用于信号的重建和恢复。

(2)去噪:对于复杂的信号,可能存在噪声或干扰成分。通过分析各个IMF的频率和振幅,可以识别和去除信号中的噪声成分。

(3)频率分析:分析每个IMF的频率成分,可以帮助理解信号在不同频率上的振荡特性,从而揭示信号的频域特征。

(4)特征提取:每个IMF代表了信号的局部特征和振荡模式,可以用于提取信号的特征,并进一步应用于机器学习或模式识别任务中。

(5)信号预测:通过对分解得到的各个IMF进行分析,可以探索信号的未来趋势和发展模式,从而用于信号的预测和预测建模。

(6)模式识别:分析每个IMF的时域和频域特征,可以帮助对信号进行模式识别和分类,用于识别信号中的不同模式和特征。

(7)异常检测:通过分析每个IMF的振幅和频率特征,可以用于探测信号中的异常或突发事件,从而用于异常检测和故障诊断。

在得到了信号的分量之后,可以根据具体的应用需求选择合适的分析和处理方法,以实现对信号的深入理解、特征提取和应用。对于后续的研究,主要利用IMF分类来对故障信号做模式识别,即故障分类。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 信号处理
    +关注

    关注

    48

    文章

    1020

    浏览量

    103255
  • EMD
    EMD
    +关注

    关注

    1

    文章

    43

    浏览量

    20029
  • 机器学习
    +关注

    关注

    66

    文章

    8401

    浏览量

    132534
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84613
  • 频率分析
    +关注

    关注

    0

    文章

    4

    浏览量

    4950
收藏 人收藏

    评论

    相关推荐

    Python轴承故障诊断—基于EMD-CNN的故障分类

    很多同学安装失败,不是pip install EMD,也不是pip install PyEMD, 如果 pip list 中 已经有 emdemd-signal,pyemd包的存在,要先 pip uninstall 移除相关包
    的头像 发表于 12-12 16:41 1765次阅读
    <b class='flag-5'>Python</b><b class='flag-5'>轴承</b><b class='flag-5'>故障诊断</b>—基于<b class='flag-5'>EMD</b>-CNN的<b class='flag-5'>故障</b>分类

    基于labview的轴承故障诊断与健康监测

    毕S做基于labview的轴承故障诊断与健康监测,但是感觉无从下手,没有实物进行数据采集,想来也只能模拟采集振动信号,但这个振动信号又该如何产生,看网上有凯斯西储大学轴承数据,但又不知如何利用,,求教各位labview前辈大佬给
    发表于 03-18 23:33

    DSP的滚动轴承实时故障诊断系统设

    。据统计,在使用滚动轴承的旋转机械中,由于滚动轴承损坏而引起的故障约占30%。由此可见,滚动轴承故障诊断在工程中还是有其重要意义的
    发表于 09-29 16:54

    经验模态分解

    各位大神,谁能支持基于labview编程的经验模态分解程序,感谢各位的大神。江湖救急呀
    发表于 12-02 20:23

    基于DSP+MCU的列车滚动轴承故障诊断系统研究

    ,对于列车的安全有着重大的影响。因此,开展列车滚动轴承故障诊断的研究对避免重大事故、促进经济发展具有相当大的意义。
    发表于 07-09 06:30

    电机轴承故障诊断与分析

    很多工程师都在网上向我咨询电机轴承故障诊断与分析的问题。面对五花八门的问题,有时候我可以根据一些信息进行判断,有时候什么信息也没有,这样的情况下我的所谓判断只能是猜测,恐怕距离真相,也十分遥远。大家
    发表于 09-01 09:01

    叶片的故障诊断模态分析

    叶片的故障诊断模态分析叶片结构简述:汽轮机叶片是汽轮机的关键部件,它的加工量占总加工量的35%,典型的叶片结构和在叶轮上的安装位置:叶片损坏形式:损坏(报
    发表于 12-13 15:51 10次下载

    滚动轴承故障诊断的实用技巧

      摘要:本文主要介绍滚动轴承区别于实验室诊断的生产实用技巧。关键词:滚动轴承故障诊断、振动分析、实用技巧滚动
    发表于 10-29 14:44 1602次阅读

    基于EMD和SVM的柴油机气阀故障诊断

    针对 柴油机 振动信号的非平稳特性和在现实条件下难以获得大量故障样本的实际情况,提出了一种经验模式分解和支持向量机相结合的故障诊断方法。运用经验
    发表于 07-27 16:42 40次下载
    基于<b class='flag-5'>EMD</b>和SVM的柴油机气阀<b class='flag-5'>故障诊断</b>

    基于EMD与Duffing振子的风机轴承早期故障诊断研究

    基于EMD与Duffing振子的风机轴承早期故障诊断研究_吕跃刚
    发表于 01-02 15:36 2次下载

    基于CUDA加速的高速振动信号故障诊断方法

    为解决传统高铁振动信号故障诊断方法速度慢、难以满足实时处理的要求,提出一种基于计算统一设备架构( CUDA)加速的高铁振动信号故障诊断方法。首先利用CUDA架构对高铁数据进行经验模态
    发表于 01-02 16:17 3次下载
    基于CUDA加速的高速振动信号<b class='flag-5'>故障诊断</b>方法

    轴承故障诊断方法

    )的故障诊断方法。该方法将数字图像处理的频率分辨率方法与LMD相结合,首先确定振动信号中所有局部极值点的频率分辨率,将振动信号分为低频率分辨率区域和高频率分辨率区域;然后对高频率分辨率区域进行LMD分解,可得若干乘积函数(PF)分量;最后
    发表于 01-04 16:56 0次下载
    <b class='flag-5'>轴承</b><b class='flag-5'>故障诊断</b>方法

    PMSM局部退磁故障诊断

    模态分解EMD)于一体,基于分形维数的永磁体局部退磁故障诊断方法。最后,通过PMSM驱动系统稳态和动态运行工况对所提出的永磁体局部退磁故障诊断
    发表于 02-10 10:12 1次下载

    基于变分模态分解优化的轴承故障诊断

    为解决变分模态分解方法在提取齿轮箱滚动轴承故障特征频率时受模态个数和惩罚项系数影响的问题,提出了种基于人工鱼群算法优化变分
    发表于 06-01 10:27 6次下载

    基于经验模态分解等的齿轮故障诊断分析

    基于经验模态分解等的齿轮故障诊断分析
    发表于 06-22 11:09 16次下载