EEMD算法

荒凉一梦 提交于 2020-12-16 10:51:20

 

  • EEMD基本原理
  1. EMD基本原理

希尔伯特黄变换(Hilbert-Huang Ttansform,HHT)作为 一种信号数据分析方法,由经验模态分解(EMD)和希尔伯特谱 分析(Hilbert Spectrum Analysis,HSA)组成。经验模态分解 是希尔伯特黄变换的重要组成部分,能够很好地处理非线性、 非平稳信号,与小波变换等时频分析方法相比,这种方法有许 多优点。小波变换要求输入的信号是平稳的,否则会产生虚假 的谐波,而且小波基函数的选择对结果也是有影响的,而EMD 方法则不存在上述问题。由EMD分解,将信号中不同尺度(频 率)的波动或趋势项逐级分解而得到一系列包含了原信号不同 时间尺度、局部特征信息的固有模态函数(Intrinsic Mode Function,IMF,显示出信号数据内在的振荡模式。目前已有 很多学者从不同方面对EMD进行了研究,应用在信号分析、机 械故障诊断、生物医学、气象环境、降雨径流等方面。但 EMD 仍然存在一定的缺陷,即在分解后的各IMF分量中有模态混 叠现象出现。而集合经验模态分解法(EEMD)作为EMD的改 进方法,对这一缺陷进行了弥补,能更好地对数据进行分析。 作为EMD的改进方法,EEMD的基本原理与 EMD相似。 EEMD的基本思路[ 9]是:在信号中加入高斯白噪声,组成一个 混合序列,加进的白噪声将遍布于整个时频系列之中,且不同 尺度的信号会自动地映射到合适的参考尺度上。而且由于零 均值噪声的特性,将这些多次分解的结果取“平均”后,噪声最 终将会被互相抵消而达到消除。总体平均的结果即被当作真 实的信号处理。加噪声的次数越多,平均后的结果所含的剩余 噪声越小,结果就越接近真实值。EEMD的基本原理虽然简 单,但是效果显著。

经验模态分解(EMD)方法的实质是通过特征时间尺度来识别信号中所内含的所有振动模态( Intrinsic Oscillatory Mode)。在这一过程中,特征时间尺度及IMF的定义都具有一定的经验性和近似性。与其他信号处理方法相比,EMD方法是直观的、间接的、后验的、自适应的,其分解所用的特征时间尺度是源自于原始信号。

EMD分解方法是基于以下假设条件:

数据至少有两个极值,一个最大值和一个最小值;

数据的局部时域特性是由极值点间的时间尺度唯一确定; 

如果数据没有极值点但有拐点,则可以通过对数据微分一次或多次求得极值,然后再通过积分来获得分解结果。这种方法的本质是通过数据的特征时间尺度来获得本征波动模式,然后分解数据。这种分解过程可以形象地称之为筛选(sifting过程。

为了从原始信号中分解出内模函数,经验模态分解方法,过程如下:

(1)找到信号x(t)所有的极值点; 

(2)3次样条曲线拟合出上下极值点的包络线emax(t)emin(t),并求出上下包络线的平均值m(t),在x(t)中减去它:h(t)=x(t)-m(t)

(3)根据预设判据判断h(t)是否为IMF

(4)如果不是,则以h(t)代替x(t),重复以上步骤直到h(t)满足判据,则h(t)就是需要提取的 IMFCK(t)

(5)每得到一阶IMF,就从原信号中扣除它,重复以上步骤;直到信号最后剩余部分rn就只是单调序列或者常值序列

这样,经过EMD方法分解就将原始信号x(t)分解成一系列IMF以及剩余部分的线性叠加;

xt=i=0NCit+rn(t)

  1. EMD的不足

然而,当信号的极值点分布不均时,EMD分解结果会出现过冲

欠冲现象,导致模式混淆。针对以上问题,Zhao2009年提出EEMD方法,通过对信号加入高斯白噪声,改善信号极值点分布,减小模式混淆。EEMD方法已被成功应用于转子、轴承、电机等机械设备的故障诊断中。

  1. EEMD基本原理
  1. 将噪声信号w(t)加入到原始信号xt后得到信号x't

x't= xt+w(t)

  1. 将信号x't进行EMD分解,得到各阶IMF分量,其中rn(t)是分

解后的剩余分量:

x't=j=0Ncjt+rn(t)

  1. 重复步骤ab,每次加入强度相同序列不等的白噪声,如下:

x't=j=0Ncijt+win(t)

  1. 利用白噪声频谱的均值为零,将上述IMF求均值得到最终的

IMF分量cn(t):

cnt=1ni=1Ncin(t)

4.EEMD基本步骤

1)步骤1。通过给目标信号序列 x(t)加上一组有限振幅 的白噪声ω(t)来获得一个总体序列 x(t)

2))步骤2。对x(t)进行EMD分解,得到各个IMF分量。 具体步骤是:计算出序列 x(t)的所有极大值点和极小值点, 用插值法连接这些极值点得到序列 x(t)的上包络和下包络, 从而求出均值包络m1,用序列 x(t)减去均值包络 m1 得到新 的序列。多次重复上述过程,使得平均包络趋近于零,即得到 原序列 x(t)的第1个IMF分量c1,代表原始序列中最高频的 分量。一般IMF分量会满足如下2个条件:信号极值点的个数 与零点数相等或相差为1;信号的极大值定义的上包络和极小 值定义的下包络的局部均值为零。用 x(t)减去 c1,得到去掉 高频成分的残余序列 r1,同理可得到 c2 c3,…, cn ,直到 rn 满足 预先给定的终止准则,分解终止。得到 x(t):

取相应IMF的均值作为最终的IMF:

式中: N为总体的个数。最终分解得到的各IMF分量代表了 不同频率尺度的数据,为下一步的分析计算提供了有力的依据。

核心代码:

from PyEMD import EEMD
def execEEMD(values):
   
"""
    values:
序列
    times:时间
    """
    # Assign EEMD to `eemd` variable
   
eemd = EEMD()
   
# Say we want detect extrema using parabolic method
    # emd = eemd.EMD
    # emd.extrema_detection = "parabol"
    # Execute EEMD on S
   
values_len = len(values)
    e_imf_s = eemd.eemd(values, np.linspace(
0, values_len - 1, values_len))
   
return e_imf_s


 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!