1. 为什么需要EEMD?传统信号分析的困境
在工程测量和科学研究中,我们经常遇到这样的信号:它们看似杂乱无章,频率成分随时间变化,传统的傅里叶变换对这类信号往往束手无策。我最早接触这个问题是在分析一组振动传感器数据时——当设备运行状态变化时,频谱图上的峰值的会"漂移",用固定基函数的傅里叶变换根本无法准确捕捉这种动态特性。
这就是所谓的"非平稳信号"典型特征。传统傅里叶分析的核心局限在于:它假设信号在整个时间范围内都是平稳的(统计特性不随时间变化),这就像用一张静态照片去描述一段舞蹈动作。对于心电信号、机械振动、环境噪声这类时变信号,我们需要更智能的分析工具。
经验模态分解(EMD)的提出正是为了解决这个问题。它通过自适应分解,将信号拆解为多个本征模态函数(IMF),每个IMF都代表了信号中一个特定尺度的振动模式。但EMD有个致命缺陷——模态混叠(Mode Mixing),即同一个IMF中包含差异显著的频率成分,或者相似频率成分分散在不同IMF中。这就像把不同乐器的声音错误地归类到了一起。
集合经验模态分解(EEMD)通过引入噪声辅助分析,完美解决了这个问题。其核心思想非常巧妙:通过多次添加白噪声扰动原始信号,利用噪声的均匀分布特性来"填充"信号时频空间的不同区域,使得信号在不同尺度上的特征能够自动分离。最终通过对多次分解结果的集成平均,消除噪声影响,得到更纯净的IMF分量。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. EEMD的Matlab实现:从理论到代码
2.1 算法流程拆解
EEMD的具体实现可以分为以下几个关键步骤:
-
噪声注入:对原始信号x(t)添加高斯白噪声n(t),生成扰动信号x'(t)=x(t)+n(t)。这里噪声幅度通常取原始信号标准差的0.1-0.3倍,我习惯用0.2倍作为起始值。
-
EMD分解:对每个扰动信号执行标准EMD分解,得到一组IMF。EMD的核心是"筛分过程"(Sifting Process):
- 找出信号的所有局部极值点
- 用样条插值拟合上下包络线
- 计算均值曲线m(t)
- 用h(t)=x(t)-m(t)作为新的待处理信号
- 重复直到h(t)满足IMF条件
-
集成平均:将多次分解得到的对应IMF进行平均。例如,第1次分解得到IMF1_1, IMF2_1
