MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 高精度ECG心电信号检测与分析系统

高精度ECG心电信号检测与分析系统

资 源 简 介

本项目提供了一套完整且鲁棒的算法流程,用于对心电(ECG)信号进行自动化检测与特征分析。程序的主要功能涵盖了从信号预处理到核心特征提取的各个环节。首先,针对ECG信号中常见的噪声干扰,实现了基于数字信号处理技术的预处理模块,包括去除基线漂移的高通滤波器、消除工频干扰的陷波器以及抑制肌电噪声的低通滤波器,显著提高了信号的信噪比。其次,核心检测逻辑采用了经典的Pan-Tompkins算法或改进的差分阈值法,通过对滤波后的信号进行微分、平方、移动窗口积分等操作,精确增强QRS波群特征,并通过自适应阈值策略准确识别R波峰值位置,即使在信号质量不佳或存在运动伪影的情况下也能保持较高的检测准确率。此外,程序利用检测到的R波位置计算R-R间期,进而得出瞬时心率和平均心率。最后,系统通过MATLAB绘图功能输出直观的可视化结果,将原始信号、滤波过程信号、积分波形以及标记了R波峰值的最终结果在同一窗口中显示,便于用户验证算法效果和分析心电特征。

详 情 说 明

基于MATLAB的高精度ECG心电信号检测与分析系统

项目简介

本项目是一个基于MATLAB开发的完整心电(ECG)信号处理与分析平台。系统集成了从数据生成、信号预处理、特征增强到R波精确检测与心率计算的全套流程。核心算法基于经典的Pan-Tompkins方法并进行了针对性的优化,特别是引入了自适应阈值更新机制和双层回溯搜索策略,能够在存在工频干扰、基线漂移和肌电噪声的复杂环境下,实现对QRS波群的精准定位。

功能特性

  • 模拟数据生成:内置基于高斯模型的心电信号生成器,可模拟P、Q、R、S、T波特性,并自动叠加基线漂移、工频干扰和随机高斯白噪声。
  • 稳健的预处理流程:采用级联滤波方案(陷波滤波器+带通滤波器),有效分离有效信号与环境噪声。
  • Pan-Tompkins特征提取:完整复现了经典的微分、平方和移动窗口积分(MWI)步骤,显著增强QRS波群能量。
  • 自适应R波检测:通过动态更新信号电平和噪声电平来调整检测阈值,并结合“回溯搜索”策略,将MWI检测到的粗略位置修正为原始信号中的精确R波峰值。
  • 不应期处理:包含基于幅度判决的不应期逻辑,有效消除误检。
  • 多维可视化展示:单窗口集成显示原始信号、滤波信号、微分信号、积分波形以及最终标记结果。

系统要求

  • MATLAB R2016b 或更高版本
  • Signal Processing Toolbox(信号处理工具箱)

使用方法

  1. 运行程序:直接在MATLAB中运行 main 函数即可启动系统。
  2. 默认模式:程序默认 use_synthetic = true,使用内置算法生成长度为10秒的模拟加噪ECG信号进行演示。
  3. 加载外部数据
* 如需处理真实数据,请在代码中将 use_synthetic 设置为 false。 * 取消相关代码块的注释,并修改数据加载路径。 * 确保输入数据为单列向量,并根据实际采样率修改 fs 参数。

算法实现细节与核心逻辑

本系统的实现严格遵循 main.m 中的逻辑,具体流程如下:

1. 参数设置与数据获取

  • 设定采样率(默认为360Hz)。
  • 根据标志位选择数据源。如果使用模拟数据,系统会通过高斯函数合成各个波段,并叠加0.3Hz的正弦基线漂移、50Hz的正弦工频干扰以及随机肌电噪声。

2. 信号预处理

代码采用了两级IIR滤波器结构,利用 filtfilt 函数实现零相位滤波,防止波形发生相位失真:
  • 去工频干扰:设计50Hz的IIR陷波器(Notch Filter),带宽系数设置为中心频率的1/35,精准滤除电源线干扰。
  • 去基线与高频噪声:设计4阶巴特沃斯(Butterworth)带通滤波器,通带范围设定为0.5Hz至45Hz。这不仅去除了低频的呼吸基线漂移,也抑制了高频的肌电干扰。

3. Pan-Tompkins 特征增强

该模块旨在最大化QRS复合波的信噪比:
  • 微分变换:使用特定的5点差分滤波器(系数为 [1, 2, 0, -2, -1]),突出信号中斜率变化剧烈的QRS波部分,同时进行了相应的延迟校正。
  • 非线性平方:对微分信号进行逐点平方操作,将所有数据转换为正值,并非线性地放大幅值较大的高频成分(即QRS波)。
  • 移动窗口积分 (MWI):使用宽度约为150ms(0.150 * fs)的矩形窗口对平方信号进行平滑积分。此步骤将离散的波峰融合成平滑的波包,便于后续阈值检测,同样进行了窗口延迟校正。

4. 自适应阈值与R波精确定位

这是本系统的核心检测逻辑:
  • 初始候选点:使用 findpeaks 函数在MWI信号中寻找距离间隔大于200ms的局部峰值。
  • 自适应阈值判决
* 维护两个电平变量:信号电平(Signal Level)和噪声电平(Noise Level)。 * 如果MWI波峰超过当前阈值,判定为QRS波,更新信号电平(更新权重为0.125)。 * 如果未超过阈值,判定为噪声,更新噪声电平。 * 阈值动态公式:阈值 = 噪声电平 + 0.25 × (信号电平 - 噪声电平)
  • 回溯精确搜索:由于滤波器和积分过程会造成峰值位置偏移,一旦在MWI信号上确认了波峰,算法会以此为中心,在预处理后的滤波信号(ecg_filtered)的一定范围内(向前0.15秒)回溯搜索最大值。这一步确保了R波标记位置的绝对精确。
  • 不应期(Refractory Period)处理:检测完成后,代码会对所有检测到的R波位置进行校验。如果两个R波的时间间隔小于200ms,系统会比较两者在滤波信号中的幅值,仅保留幅值较大的一个,从而剔除T波误检或重复检测。

5. 心率计算

  • 系统根据最终确认的R波位置索引计算RR间期(秒)。
  • 基于RR间期计算瞬时心率(BPM)向量。
  • 计算整个数据段的平均心率,并在控制台输出统计结果(R波数量、平均BPM、最小/最大RR间期)。

6. 结果可视化

程序会生成一个包含6个子图的图形窗口:
  • 原始信号:展示带有显著噪声和基线漂移的输入数据。
  • 预处理信号:展示经过去噪后的清晰波形。
  • 微分信号:展示斜率特征提取结果。
  • MWI积分波形:展示特征融合后的波包及最终采用的自适应阈值线。
  • 最终检测结果:在预处理信号上用红色圆圈标记确定的R波峰值,并标注部分瞬时心率数值,便于直观验证算法准确性。