经验模态分解 EMD。
参考资料
为什么要用EMD
在信号处理方面我们了解了时域处理方法(如有效值、峭度)、频域处理方法(如频谱、功率谱)以及一些时频域处理方法(如小波分析)。时域和频域有各种的优势和适用范围,就不多说了,EMD
(Empirical Mode Decomposition
)作为时频域的处理方法,相对于同样是时频域方法的小波分析有什么好处呢?
EMD
最显著的特点,就是其克服了基函数无自适应性的问题。啥意思呢?回忆小波分析部分的内容,我们会知道小波分析是需要选定某一个小波基的,小波基的选择对整个小波分析的结果影响很大,一旦确定了小波基,在整个分析过程中将无法更换,即使该小波基在全局可能是最佳的,但在某些局部可能并不是,所以小波分析的基函数缺乏适应性。
通俗的说,用EMD
有什么好处呢?对于一段未知信号,不需要做预先分析与研究,就可以直接开始分解。这个方法会自动按照一些固模式按层次分好,而不需要人为设置和干预。
再通俗一点,EMD
就像一台机器,把一堆混在一起的硬币扔进去,他会自动按照1元、5毛、1毛、5分、1分地分成几份。
内涵模态分量
内涵模态分量(Intrinsic Mode Functions
, IMF
)就是原始信号被EMD
分解之后得到的各层信号分量。EMD的提出人黄锷认为,任何信号都可以拆分成若干个内涵模态分量之和。而内涵模态分量有两个约束条件:
- 在整个数据段内,极值点的个数和过零点的个数必须相等或相差最多不能超过一个。
- 在任意时刻,由局部极大值点形成的上包络线和由局部极小值点形成的下包络线的平均值为零,即上、下包络线相对于时间轴局部对称。
啥意思?
用不严谨的语言和灵魂画师来解释一下:
图线要反复跨越 x
轴
上图,在整个数据段内,极值点的个数和过零点的个数必须相等或相差最多不能超过一个。
而不能像这样某次穿过零点后出现多个极点:
上图,极点数目偏多。
包络线要对称
而不能像这样:
洗洗眼睛,看个正常点的例子吧:
上图由7
张图片组成,其中第1张为原始信号,后边依次为EMD
分解之后得到的6
个分量,分别叫做IMF1~IMF5
,最后一张图为残差,每一个IMF
分量代表了原始信号中存在的一种内涵模态分量。可以看出,每个IMF
分量都是满足这两个约束条件的。
EMD分解步骤
EMD
的分解过程是简单直观的:
- 根据原始信号上下极值点,分别画出上、下包络线。
- 求上、下包络线的均值,画出均值包络线。
- 原始信号减均值包络线,得到中间信号。
- 判断该中间信号是否满足IMF的两个条件,如果满足,该信号就是一个
IMF
分量;如果不是,以该信号为基础,重新做1~4
的分析。IMF
分量的获取通常需要若干次的迭代。
使用上述方法得到第一个IMF
后,用原始信号减IMF1
,作为新的原始信号,再通过1~4
的分析,可以得到IMF2
,以此类推,完成EMD
分解。
你可以参考下面的 ppt
。这个 ppt
有点问题,用 wps
打开是空的,但是,里面是有内容的,我在 MacBook
使用自带的软件打开的。
IMF 物理含义
首先我们生成一段信号,它是由4Hz
的正弦波、10Hz
的正弦波和白噪声叠加而成的。如下图:
现在我们将合成后的信号进行EMD
分解,结果如下图:
5张图分别为:
- 原始信号
- IMF1
- IMF2
- IMF3
- 残差
从EMD
分解图中可以看出,IMF1
为10Hz
的分量,IMF2
为4Hz
的分量。所以简单(且理想化)地说,IMF
的各个分量分别代表了原始信号中的各频率分量,并按照从高频到低频的顺序依次排列。这也就是(非常简单的情况下的)IMF
的物理含义。
那IMF3
等分量又代表了什么呢?在这个例子里,它们没有意义,属于EMD
端点效应等带来的副作用。
通过这个例子的说明,我们可以得到EMD
的一大特点:自适应地进行信号主要成分分析(不是PCA
)。也就是说,EMD分解信号不需要事先预定或强制给定基函数,而是依赖信号本身特征而自适应地进行分解。
当然,现实中的信号分量(IMF
)不会像例子中一样保持完全稳定的频率和振幅,也常常无法从各分量中直接看出信号规律。EMD分解经常被用作信号特征提取的一个预先处理手段,将各IMF
分量作为后续分析方法的输入,以完成更加复杂的工作。
python 的关于 EMD 的库
目前,我找到有三个 EMD
库
其中,第二个和第三个冲突,不要同时安装。
相关项目
- ECG_Denoising
- 用的是 EMD-signal
补充
IMF
并不能指定,而是EMD
自己分解的「残差达到终止条件后停止分解」。但是VMD
可以指定。