基于MATLAB的心电信号全流程滤波及QRS波特征提取系统
项目介绍
本项目针对心电信号(ECG)在采集过程中极易受干扰的特性,提供了一套从信号净化到特征识别的完整自动化处理方案。系统集成了信号仿真、多级数字滤波、增强型QRS波检测算法以及心率统计分析功能。通过该系统,用户可以直观地观察到心电信号由含双重干扰(工频与基线漂移)及噪声的状态,逐步净化为平滑波形,并精准锁定每个心动周期的R峰位置,为临床诊断或生理研究提供准确的数据基础。
功能特性
- 多维度干扰模拟:系统能够自主生成包含标准P-QRS-T生理结构的纯净心电信号,并人为注入50Hz工频干扰、低频基线漂移(0.2Hz-0.5Hz)以及高频肌电噪声(高斯白噪声),用于算法验证。
- 全流程数字滤波:
-
工频陷波:利用高品质因数的IIR陷波器精确剔除50Hz电力噪声。
-
基线纠正:通过二阶巴特沃斯高通滤波器消除呼吸及电极接触引起的缓慢漂移,使波形回归零电位。
-
噪声平滑:采用四阶巴特沃斯低通滤波器抑制高频毛刺,提升信号信噪比。
- 改进型Pan-Tompkins检测算法:结合导数变换、平方增强和移动窗口积分,极大提高了在复杂背景下对QRS波群的识别灵敏度。
- 精确R峰标定:系统在积分能量峰值的基础上,回溯滤波信号寻找精确极值点,确保时间域定位的准确性。
- 动态特征分析:自动统计心搏总数,计算瞬时心率(BPM)、RR间期、平均心率及心率标准差。
- 多维度可视化报告:提供信号处理阶段对比图、滤波器幅频特性图、QRS检测轨迹图以及心率统计分布图四大分析维度。
系统实现逻辑
本系统的核心逻辑在主执行流程中按顺序分为五个阶段:
- 信号准备阶段:定义采样率为1000Hz,分析时长为10秒。通过生理建模函数生成周期性心跳波形,并按比例叠加正弦干扰和随机噪声。
- 三级滤波阶段:
- 首先应用陷波频率为50Hz的陷波器,带宽比设为35,使用双向滤波技术确保零相位失真。
- 其次设计截止频率为0.5Hz的高通滤波器,去除直流偏置和低频漂移。
- 最后通过40Hz低通滤波器截断肌电噪声。
- QRS波提取阶段:
-
微分处理:使用五点导数算子增强R波的陡峭边缘信息。
-
非线性增强:对微分结果取平方,拉大QRS波与P、T波的幅值差距。
-
能量积分:应用150ms宽度的移动窗口进行均值处理,将震荡的脉冲转化为平滑的能量包络。
- 阈值决策阶段:基于前2秒信号的最大能量值设定初始动态阈值,配合最小心搏间距(0.3秒)约束,利用峰值搜索算法定位。
- 精细化搜索阶段:在每个能量峰值所在的100ms局部区域内,对滤波后的原始信号进行二次极值搜索,补偿积分环节带来的时间滞后,锁定真实R峰位置。
关键函数与算法分析
- 合成心电信号生成函数:
该函数通过数学建模方式模拟人体心电图中P波、QRS波群和T波的生理特征。P波采用小幅值高斯脉冲,QRS波利用紧凑且大幅值的正负向指数衰减函数模拟,T波则采用较宽的低幅值函数。通过周期性的索引偏移,构建出符合生理节律的基础波形。
- Butterworth滤波器设计:
系统选用巴特沃斯滤波器是因为其通带内具有最大平坦特性,能够最大限度地避免对心电信号核心频带产生幅度畸变。利用双向滤波(zero-phase filtering)消除了数字滤波带来的群延迟,保证了R峰时间位置的物理真实性。
- Pan-Tompkins能量转换机制:
通过导数运算捕捉ECG中斜率最大的R波上升沿,平方运算则将由于呼吸等影响引起的信号极性翻转统一为正向,并起到显著抑制低幅P/T波的作用。移动平均窗口的宽度(150ms)是系统参数的核心,旨在覆盖典型QRS波的最长持续时间。
- 自适应峰值检索逻辑:
采用动态阈值技术应对不同个体或环境下信号幅值的波动,通过设置最小峰值间距防止单个QRS复合波内的多重误检测(如将高耸的T波误诊为R波)。
使用方法
- 确保您的计算机已安装MATLAB。
- 将主程序代码及相关子函数脚本放置在同一工作目录下。
- 在MATLAB命令行窗口中直接运行该系统的主函数。
- 系统会自动弹出四个图形窗口,通过图形交互观察滤波效果及检测出的R峰标记(红色圆圈)。
- 查看命令行输出的“心电分析报告”,其中包含总时长、检出总数、平均心率、心率标准差及RR间期极限值。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 必要工具箱:Signal Processing Toolbox(信号处理工具箱)。
- 硬件配置:标准PC环境即可,算法计算效率高,支持实时或近实时分析。