基于希尔伯特-黄变换(HHT)的信号分析系统
项目介绍
本项目设计并实现了一个基于希尔伯特-黄变换(HHT)的信号分析工具,主要用于处理非平稳和非线性信号。系统通过经验模态分解(EMD)将复杂信号自适应地分解为一系列本征模态函数(IMF),随后利用希尔伯特变换提取各分量的瞬时物理特征。该工具能够提供比传统傅里叶变换更高的时频分辨率,揭示信号在时间轴上的局部频率演变规律,广泛适用于机械故障诊断、生物医学信号处理及科研仿真等领域。
功能特性
- 合成信号仿真:内置非平稳信号生成器,支持同时包含定频正弦波、调幅(AM)信号、线性调频(Chirp)信号以及高斯白噪声的混合信号分析。
- 自定义经验模态分解:实现了完整的EMD筛分算法,支持包络线提取、均值估计及IMF准则判定。
- 瞬时参数提取:能够精准计算每个IMF分量的解析信号,进而获取随时间变化的瞬时幅值和瞬时频率。
- 高分辨率时频分析:构建Hilbert能量谱,以三维视图(时间-频率-能量)展示信号的动态特征。
- 统计特征分析:计算信号的边际谱,从能量累积角度分析跨时域的频率分布。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 必备工具箱:
- Signal Processing Toolbox(用于希尔伯特变换
hilbert 函数)。
- Image Processing Toolbox(用于谱图平滑处理
imgaussfilt 函数)。
核心实现逻辑
项目逻辑由五个主要阶段组成,严格遵循HHT的理论架构:
- 信号初始化:系统预设采样率为1000Hz,生成一段包含多重成分的2秒复合信号。
- 信号分解阶段:
- 采用递归的方式从原始信号中提取IMF。
- 对每一个分量执行筛分(Sifting)过程,上限为10次迭代或满足IMF条件。
- 通过极值点检测,利用三次样条插值生成上下包络线,并计算包络均值进行剔除。
- 希尔伯特变换阶段:
- 对分解出的IMF分量进行解析信号构造。
- 瞬时频率通过计算展开后的相位导数并进行归一化处理($f = frac{1}{2pi} cdot frac{dphi}{dt}$)获得。
- 谱计算阶段:
- 构建一个预定义频率格点(Bins)的矩阵。
- 根据计算出的瞬时频率和幅值,将能量映射到相应的时频坐标点上。
- 应用高斯滤波对生成的Hilbert谱进行平滑,以提高视觉连续性。
- 对Hilbert谱在时间轴上求和,得到边际能量分布。
- 多维度可视化:系统输出四张图表,分别展示分解过程、瞬时频率曲线、三维时频能量分布以及累计边际谱。
关键算法与函数分析
经验模态分解算法实现
- 该算法通过寻找局部极值点来确定信号的包络分布。
- 采用
spline 函数进行三次样条插值,确保包络线的平滑性和连续性。 - 分解终止条件基于残差项的极值点数量,当残差项呈单调性或极值点不足3个时,分解自动停止。
IMF判定逻辑
- 内部函数通过对比信号的极值点总数与过零点数来验证IMF的定义。
- 符合标准的IMF要求两者之差在数值上不超过1。
瞬时频率计算
- 算法利用
unwrap 处理相位跳转问题。 - 使用差分法
diff 近似相位变化率,结合采样频率 Fs 还原出物理频率分量。
Hilbert谱映射
- 系统通过频率轴离散化的方法,将不连续的瞬时参数映射到稠密的格点矩阵中。
imgaussfilt 的引入弥补了离散点在视觉上的断层,增强了时频分布的可读性。
使用方法
- 启动MATLAB软件,将工作路径切换至项目所在目录。
- 在命令行窗口直接运行主程序脚本。
- 程序将自动执行信号生成、分解、变换及绘图。
- 用户可通过弹出的四个图形窗口交互式地查看各阶分量及其时频分布情况。