基于MATLAB的心电信号(ECG)自适应噪声处理系统
本项目是一个集成化的心电信号处理平台,旨在解决心电监测中常见的工频干扰、基线漂移和肌电噪声问题。通过结合经典滤波算法与现代多尺度分析技术,系统实现了从原始含噪信号到纯净特征信号的高质量转换,并集成了生理特征提取与性能量化评价功能。
项目核心功能特性
- 合成心电信号生成:系统内置高仿真心电建模功能,利用高斯脉冲函数模拟真实的P波、QRS复合波及T波,可自定义采样频率和信号时长,提供标准化的实验基准。
- 多源噪声模拟:支持在纯净信号中叠加三种典型干扰:50Hz工频正弦噪声、低频正弦及线性趋势构成的基线漂移、以及高斯随机白噪声(肌电干扰)。
- 工频干扰精准滤除:采用IIR陷波器阻断特定频率的背景噪声,通过设置高品质因数(Q值)在滤除50Hz干扰的同时最大限度保留邻近频率的有用信息。
- 级联中值滤波算法:利用两个不同长度窗口(200ms与600ms)的中值滤波器分级提取信号中的低频包络,通过从原始信号中扣除该包络,有效矫正由呼吸或电极移动引起的基线漂移。
- 改进的小波阈值去噪:基于db4小波进行9层多尺度变换,采用自适应阈值估计算法(基于中值绝对偏差Sigma估计与通用阈值准则),对细节系数执行软阈值处理,彻底抑制高频随机噪声。
- 自动R波检测与心率分析:集成Pan-Tompkins算法核心逻辑,通过带通滤波、差分、平方及移动窗口积分,定位心搏位置,并实时计算瞬时心率与平均心率。
- 全方位性能评估与可视化:系统自动计算信噪比(SNR)与均方根误差(RMSE),并生成包含时域对比、功率谱分析及心搏识别结果的多维可视化看板。
算法实现流程与逻辑分析
1. 信号初始化与模型构建
系统首先定义采样频率为500Hz。通过内部函数,在一个心电周期内利用不同方差和均值的高斯函数构建P-QRS-T特征。随后,根据物理特性分别生成50Hz正弦信号(工频)、0.2Hz正弦加线性分量(基线漂移)以及随机正态分布序列(肌电噪声),并将它们合成到纯净波形中。
2. 陷波处理阶段
针对50Hz干扰,系统设计了基于iirnotch函数的数字阻陷滤波器。代码计算了归一化角频率,并利用35的高品质因数,确保中心频率处的降噪深度,从而在频域上有效削弱工频窄带干扰。
3. 基线矫正阶段
该部分采用非线性滤波方案。首先使用0.2秒的轻量级中值滤波平滑波形,随后使用0.6秒的大窗口中值滤波提取完整的漂移曲线。将经过陷波处理后的信号减去该漂移曲线,使心电轴重新找回零基准。
4. 多尺度小波变换阶段
这是系统的核心去噪环节:
- 分解:使用db4小波执行9层深度分解。
- 阈值计算:对每一层细节系数,利用系数绝对值的中值除以0.6745来估计噪声标准差(Sigma),并基于Universal Threshold公式计算自适应阈值。
- 阈值处理:实施软阈值操作(Soft Thresholding),保留大于阈值的特征并按比例缩放,将小于阈值的微弱噪声置零,从而在保护QRS尖峰的同时滤除毛刺。
- 重构:通过逆变换合成最终的清洁信号。
5. 心搏特征提取阶段
系统实现了经典的Pan-Tompkins检测逻辑:
- 预处理:5-15Hz的带通滤波滤除残留干扰,增强QRS波群。
- 变换:通过一阶差分强化斜率信息,随后通过自乘平方运算突出高频QRS分量并使所有幅值变为正向。
- 积分:利用0.15秒宽度的移动平均窗口产生平滑的积分包络。
- 决策:通过自适应峰值搜索(MinPeakHeight设定为均值的2倍)定位R波,并以此序列差值计算心率。
6. 指标评估
系统通过对比原始纯净信号与最终去噪信号的能量比(SNR)以及逐点的偏差(RMSE),给出去噪效果的定量反馈,验证算法对待处理信号特征修复的完整度。
系统要求
- 开发软件:MATLAB 2018b 或更高版本。
- 必要工具箱:
- Signal Processing Toolbox(用于滤波器设计、中值滤波及Pwelch分析)。
- Wavelet Toolbox(用于小波多尺度的分解与重构)。
使用说明
- 启动MATLAB并进入项目工作目录。
- 在命令行窗口直接调用运行主控制程序。
- 系统将自动执行从信号仿真到去噪处理的全过程。
- 程序执行完毕后,将弹出一个包含三个子图的综合分析窗口,分别展示:
- 原始含噪信号与深加工后的去噪波形对比。
- 去噪前后的功率谱密度对比(可观察50Hz陷波及高频噪声抑制效果)。
- 处理后信号的R波定位点及其计算出的平均心率。
- 具体的SNR、RMSE和心率指标将同步在MATLAB控制台中打印输出。