基于Hilbert变换的信号包络提取与瞬时频率分析系统
项目介绍
本项目是一款基于MATLAB开发的数字信号处理演示系统,专注于探讨Hilbert变换在非平稳信号分析中的应用。系统通过构造解析信号(Analytic Signal),实现了对复杂调制信号(调幅-调频信号)的深度特征提取。该系统能够精确地从合成信号中分离出幅度包络和瞬时频率轨迹,为通信解调、机械设备故障诊断及生物医学信号处理等领域提供了直观的仿真参考。
功能特性
- 信号解析化处理:自动将实值时间序列映射为复数解析信号,有效抑制频谱负频分量,为后续瞬时参数提取提供基础。
- 高精度包络提取:利用解析信号的模(Amplitude Envelope)提取调制包络,并与预设的理想包络进行对比。
- 瞬时频率估计:通过瞬时相位的数值求导,捕捉信号随时间变化的频率特性。
- 多维度频谱分析:包含原始信号频谱分析(双边带特性展示)以及基于解析信号的包络谱分析(低频特征识别)。
- 误差与性能量化:自动计算包络提取误差,并对中心频率进行均值估算。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 工具箱需求:Signal Processing Toolbox(信号处理工具箱),用于调用内置的Hilbert变换及相关滤波函数。
实现逻辑与环节
系统按照标准的信号处理流程进行模块化实现:
- 参数初始化:
设定采样频率 $Fs = 2000$ Hz,总采样时长 2 秒,建立精确的时间轴。
- 复杂信号构造:
生成一个包含多重频率成分的 AM-FM 组合信号。其包络由多个低频余弦/正弦波叠加而成,同时在载波频率 $150$ Hz 的基础上施加正弦规律的频率调制,模拟真实环境中的非平稳特征。
- 解析信号构造:
对输入的实信号执行 Hilbert 变换。根据定义,系统生成的复信号 $z(t) = x(t) + j cdot H[x(t)]$,其中实部为原信号,虚部为其希尔伯特变换结果(正交分量)。
- 幅度与相位计算:
*
包络提取:计算解析信号的模值。
*
相位计算:提取复信号的相位角,并使用相位解包裹(Unwrap)技术处理 $2pi$ 跳变,确保相位连续性。
- 频率特征派生:
对解包裹后的相位进行有限差分运算,基于公式 $f(t) = frac{1}{2pi} cdot frac{dphi}{dt}$ 计算瞬时频率,并进行时间轴对齐补偿。
- 频域变换分析:
应用快速傅里叶变换(FFT)分析信号的频谱结构。对于包络信号,执行去均值处理后计算频谱,以突出调制频率成分。
- 结果可视化:
通过五组子图同步展示时域包络对比、复数分量波形、瞬时频率演变轨道、信号全频谱及低频包络谱。
关键算法与技术细节
- Hilbert 变换核心:利用 MATLAB 内置
hilbert 函数实现。该函数在内部通过 FFT 变换、零频分量处理及 IFFT 变换完成信号的正交化转换。 - 相位稳定性处理:采用
unwrap 函数。由于 angle 函数返回值的范围在 $[-pi, pi]$ 之间,直接求导会导致尖峰噪声。解包裹处理是获取平滑瞬时频率的关键。 - 数值微分补偿:由于
diff 运算会导致输出长度减少 1,系统采用首增法 [inst_freq(1), inst_freq] 对瞬时频率向量进行修正,确保其与时间轴向量长度匹配。 - 包络谱去直流处理:在进行包络谱分析前减去包络的平均值,有效抑制了频谱图中 0Hz 处的直流分量巨大峰值,使得低频调制特征(如 3Hz、0.5Hz 成分)在谱图中清晰可见。
使用方法
- 启动 MATLAB 软件。
- 将系统代码文件放置在当前工作路径下。
- 在命令行窗口输入执行指令启动分析。
- 系统将自动弹出可视化窗口,展示所有分析图表。
- 在命令行查看平均包络误差及载波中心频率估计值的文本报告。