经验模式分解 (EMD) 全流程自动演示系统
项目介绍
本项目是一个基于 MATLAB 开发的自动化演示平台,旨在直观展示经验模式分解(Empirical Mode Decomposition, EMD)算法的物理意义与数学逻辑。EMD 是一种针对非线性、非平稳信号进行自适应时频分析的方法。本系统通过构建包含不同特征分量的复杂仿真信号,生动模拟了信号从原始状态被逐层剥离为各阶本征模态函数(IMF)及残差项的完整过程,并提供了实时的可视化反馈与重构完备性验证。
功能特性
- 复杂信号自适应生成:合成包含高频振荡、幅度调制、非线性趋势及随机噪声的多维测试信号。
- 自动化筛选流程:完整实现 EMD 核心迭代算法,自动寻找极值点并构建平滑包络线。
- 动态特征提取:根据信号自身的时间尺度特征,自动从高频到低频分离出多个 IMF 分量。
- 可视化分析矩阵:多维度展示信号源组成、分解过程序列以及重构误差分析。
- 算法完备性校验:通过对比原始信号与所有分解分量之和,量化分析分解的数值精度。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 必备工具箱:Signal Processing Toolbox(信号处理工具箱,用于极值点检测)。
核心实现逻辑说明
本系统通过以下四个阶段实现 EMD 的全流程演示:
- 信号合成阶段
系统构造了一个采样频率为 1000Hz、时长 2 秒的复合信号。该信号由 20Hz 的正弦高频分量、包含 5Hz 载波和 1Hz 调幅特征的低频调制分量、一个二次曲线形式的非线性趋势项以及高斯白噪声组成。这模拟了实际工程中常见的复杂干扰信号环境。
- 核心迭代分解阶段(Sifting Process)
系统采用嵌套循环结构实现分解。
外层循环负责提取 IMF 分量,最大设定为 10 阶。
内层循环执行筛选过程:
- 识别极值:通过寻找当前残差信号的局部极大值和极小值。
- 边界处理:在信号的两端加入端点作为辅助极值点,以缓解三次样条插值可能带来的边界效应。
- 包络构建:利用三次样条(Spline)插值法分别拟合极大值包络线和极小值包络线。
- 均值剥离:计算上下包络线的平均值,并从待筛选信号中减去该均值。
- 停止准则:采用标准偏差(Standard Deviation, SD)作为内循环终止条件,当相邻两次筛选结果的改变量(SD 阈值设定为 0.3)满足要求或达到最大筛选次数(20次)时,确定一个 IMF。
- 残差提取与终止
每提取出一个 IMF,便从当前信号中扣除。当提取出的残差信号极值点少于 3 个(无法再构建包络线)或达到最大分解层数时,算法自动停止。
- 重构与评估
系统将所有提取出的 IMF 分量与最后的残差项进行求和,得到重构信号。通过计算重构信号与原始原始信号之间的均方根误差(RMSE),验证算法的数值准确性和完备性。
关键函数与算法分析
- 极值点检测:利用 findpeaks 逻辑精确定位波峰与波谷,这是确定信号特征尺度的基础。
- 基元筛选逻辑:信号被定义为 IMF 必须满足两个条件,即极值点与过零点数目相等或至多差一个,且上下包络线的局部均值为零。代码中通过迭代减去均值包络线来逼近这一状态。
- 三次样条插值:在包络线拟合中确保了包络的高阶连续性与平滑度,使得提取出的 IMF 具有良好的时频特性。
- 自动化绘图机制:程序自动根据提取出的 IMF 数量调整子图布局,确保动态生成的分解结果能够清晰排布。
使用方法
- 启动 MATLAB 环境。
- 确保当前工作目录下包含演示脚本。
- 运行该程序。
- 程序将自动弹出三个分析窗口:
- 窗口一展示原始仿真信号的物理构成。
- 窗口二展示分解出的每一阶 IMF、最终残差以及与原信号的对比。
- 窗口三展示重构结果与原始信号的重合度及微小的误差曲线。
- MATLAB 命令行窗口将实时输出提取的 IMF 总数及重构误差报告。