基于MATLAB的ECG心电信号预处理与心率检测系统
项目介绍
本项目是一个集成化的心电信号(ECG)处理方案,旨在解决临床心电监测中常见的噪声干扰与人工识别效率低的问题。通过MATLAB平台,系统实现了从原始含噪信号加载、多级数字滤波降噪、QRS波群特征提取到心率变异性(HRV)分析的历史全流程模拟。系统不仅能有效滤除工频、基线漂移及肌电噪声,还能精准定位R波峰值,为心脏健康状态的量化分析提供数据支持。
功能特性
- 多维度信号降噪:集成陷波器、高低通滤波器及中值滤波,针对性消除多种环境与生理噪声。
- 强化R波检测:基于改进的Pan-Tompkins算法思想,通过变换与积分操作提升复杂背景下的特征识别精度。
- 自动化参数评估:实时计算瞬时心率、平均心率、SNR(信噪比)改善情况以及HRV关键指标。
- 直观数据可视化:提供原始与滤波信号对比图、R峰定位图以及心率动态趋势图。
使用方法
- 环境配置:确保计算机安装有MATLAB软件及信号处理工具箱(Signal Processing Toolbox)。
- 参数自定义:支持在代码初始化阶段修改采样频率(fs)、信号时长(T)或预设的模拟心率。
- 运行分析:执行主程序脚本,系统将自动生成仿真信号并执行预处理与检测算法。
- 结果解读:通过查阅图形窗口的标注及命令行窗口打印的分析报告,获取SNR、SDNN、RMSSD等量化数据。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 必备工具箱:信号处理工具箱(用于执行filter、butter、findpeaks等核心指令)。
- 硬件建议:标准个人电脑即可,建议内存4GB以上以确保绘图流畅。
实现逻辑说明
- 信号仿真与噪声模拟
系统首先构造了一个包含P波、QRS波群和T波的标准ECG信号,通过指数极值函数模拟生理特征。随后向信号中叠加了三种典型干扰:50Hz工频干扰(正弦波)、基线漂移(低频正弦与线性趋势结合)以及高频肌电噪声(随机高斯噪声)。
- 数字滤波预处理流程
第一阶段使用IIR陷波器精准消除50Hz工频噪声。第二阶段通过三阶巴特沃斯高通滤波器(截止频率0.5Hz)初步抑制基线漂移,接着结合移动中值滤波进一步平滑残留的慢速波动。最终通过四阶巴特沃斯低通滤波器(截止频率40Hz)滤除高频肌电成分。
- R波检测算法实现
系统采用了Pan-Tompkins算法的核心逻辑。首先对滤波后的信号进行五点差分求导以增强QRS波斜率,随后进行平方处理以突出高频成分并消除极性影响。接着使用150ms的移动窗口进行积分平滑,将波群转化为能量包。最后通过自适应阈值检测能量包峰值,并在原信号的一定窗口范围内回溯寻找真实的R波最大值。
- 生理指标计算
根据识别出的R波索引计算相邻心跳的时间差(RR间期)。基于此计算瞬时心率与平均心率。同时,系统计算了反映自律神经活动的HRV指标:SDNN(RR间期标准差)和RMSSD(相邻RR间期差值的均方根)。
关键函数与算法分析
- 数字滤波器设计:利用butter函数生成巴特沃斯系数,并配合filtfilt进行零相位滤波,确保处理后的信号相位不失真,这对于R波的准确定位至关重要。
- 差分与积分变换:五点差分器(h_diff)有效放大了R波的陡峭边缘,移动平均积分(movmean)则起到了平滑包络的作用,使阈值判定更加稳健。
- 自适应阈值判定:系统根据积分信号的最大值动态设定检测阈值(0.3倍最大值),结合最小峰值距离限制(0.4fs),有效防止了T波检测过灵敏或误检。
- 信噪比(SNR)评估:通过对比仿真纯净信号与处理前后的含噪信号,量化评估了滤波系统的性能提升,体现了系统在噪声抑制方面的有效性。