经验模式分解(EMD)信号处理与IMF提取系统
项目介绍
经验模式分解(Empirical Mode Decomposition, EMD)是一种先进的自适应信号处理方法,专门设计用于处理非线性和非平稳时间序列。与传统的傅里叶变换或小波变换不同,该系统不需要预先设定任何基函数,而是根据信号自身的局部时间尺度特征,将复杂的信号分解为一系列具有物理意义的固有模态函数(Intrinsic Mode Functions, IMF)和一个残余分量(Residue)。
本系统通过 MATLAB 实现了完整的 EMD 算法逻辑,包括信号生成、筛选迭代过程、瞬时特征分析以及多维度的结果可视化展示。
功能特性
- 自适应分解能力:通过递归筛选过程自动从复杂信号中提取不同频率尺度的模式。
- 多模式信号模拟:系统内置了包含高频正弦波、频率调制信号(FM)、二阶线性趋势项以及随机高斯噪声的复合测试信号。
- 高精度包络拟合:采用三次样条插值技术精确构建上下包络线,并针对端点效应进行了初步优化。
- 瞬时频率分析:集成希尔伯特变换(Hilbert Transform),实时计算每个 IMF 分量的瞬时振幅和瞬时频率。
- 完备性验证:系统自动计算分解结果的重构误差,确保所有 IMF 分量与残余分量的总和能完美复现原始信号。
- 全方位可视化:提供时域分解图、瞬时频率演变图以及模拟希尔伯特时频谱(能量-时频分布)。
系统要求
- MATLAB R2016b 或更高版本
- Signal Processing Toolbox(信号处理工具箱,用于 hilbert 函数和 movmean 函数)
核心实现逻辑
1. 模拟信号构建
系统首先建立一个采样频率为 1000Hz 的时间序列,并人工合成四个特征分量:
- s1:50Hz 的高频纯简谐波。
- s2:以 10Hz 为中心频率并受 1Hz 调制信号控制的频率调制信号(FM)。
- s3:二阶抛物线形式的趋势项,模拟非平稳过程。
- noise:服从正态分布的随机噪声。
这些分量相加后形成了待处理的复杂原始信号。
2. EMD 分解流程(筛选过程)
算法核心通过嵌套循环实现:
- 外层循环:负责控制 IMF 的分量提取。通过检查残余信号的极值点数量来判断分解是否结束(当极值点少于 3 个,即信号接近单调时停止)。
- 内层循环(Sifting Process):对每一个分量进行多次迭代筛选。通过计算当前信号的上下包络均值并将其减去,直到满足预设的标准差(SD)停机准则或达到最大迭代次数(50次)。
- 停机准则:系统使用相邻两次筛选步骤之间的标准差(Sum of Differences)作为收敛判据,默认阈值为 0.3,保证分量满足均值为零的对称性要求。
3. 特征提取与分析
- 极大值与极小值识别:系统利用一阶微分的变化规律手动定位信号中的所有局部极值点。
- 包络线构建:在极值点之间使用三次样条插值(Spline Interpolation)生成平滑的包络。为了缓解端点发散问题,系统在信号的首尾边界强行加入了端点值进行约束。
- 解析信号分析:对提取出的 IMF 分量应用希尔伯特变换,获得解析信号。通过计算相位的变化率推导出瞬时频率,并应用滑动平均平滑处理以消除边缘频率抖动。
4. 统计与可视化
- 误差记录:在终端打印提取的 IMF 数量以及重构信号与原始信号之间的最大绝对误差。
- 图形输出:
-
时域图:垂直排列显示原始信号、各个顺序提取的 IMF 以及最终残余项。
-
瞬时频率图:在同一坐标系下展示不同分量的频率随时间波动的曲线。
-
时频谱预览:利用散点图模拟 HHT 谱,其中横轴为时间,纵轴为频率,点的色彩代表频率高低,点的大小代表该时刻的信号振幅(能量)。
关键算法细节说明
- 极值寻找算法:系统通过
diff 函数计算一阶导数,识别导数从正变负(极大值)或从负变正(极小值)的索引位置。 - 标准差计算公式:系统采用 $SD = sum frac{(h_{prev} - h)^2}{(h_{prev}^2 + epsilon)}$ 来量化筛选过程的稳定性。
- 边缘效应处理:在进行包络线插值前,人为将时间序列的第一个点和最后一个点加入极值序列中,确保生成的包络线能够覆盖整个信号长度。
- 瞬时频率修正:由于希尔伯特变换在信号边缘存在不稳定性,可视化模块专门剔除了头部和尾部各 10 个采样点的数据,以保证频率显示的准确性。
使用方法
- 确保您的 MATLAB 环境已正确配置。
- 直接运行主入口函数。
- 运行结束后,系统将在控制台输出分解概览信息。
- 随后将自动弹出三个独立的可视化窗口,供研究者对比分析信号在不同频率尺度下的演化过程。