基于小波变换的ECG心电信号去噪与心律失常自动分类系统
项目简介
本项目是一个基于MATLAB构建的医疗信号处理与分析平台,专注于心电图(ECG)数据的自动解析与诊断。系统集成了数字信号处理技术与机器学习算法,能够完成从原始信号去噪、QRS波群定位、特征提取到心律失常类型识别的全流程处理。
该代码通过生成高质量的合成ECG数据进行模型训练与仿真测试,无需依赖外部数据集即可运行。系统能够模拟真实环境下的噪声干扰(基线漂移、工频干扰、肌电噪声),并最终生成包含波形对比、分类统计及HRV指标的诊断报告。
主要功能特性
- 高保真数据仿真:自动生成正常心律(Normal)、室性早搏(PVC)和房颤(AFib)的合成心电信号,支持自定义时长与噪声水平。
- 小波阈值去噪:采用离散小波变换(DWT)有效去除复杂环境噪声,同时保留ECG信号的关键形态特征。
- 精准R波定位:实现经典的Pan-Tompkins算法,通过多级滤波与自适应阈值逻辑,精确检测QRS波群位置。
- 智能心律分类:基于支持向量机(SVM)构建多分类模型,通过分析时域形态与频域特征自动识别心律失常类型。
- 心率变异性分析:自动计算BPM、RR间期均值、SDNN及RMSSD等关键心脏健康指标。
- 可视化诊断报告:生成包含原始/去噪对比图、R波检测标记图、分类统计柱状图及文本诊断结论的综合图表。
详细系统流程与算法实现
本项目的主程序严格遵循以下三个核心处理阶段:
1. 模型构建与训练阶段
系统首先初始化环境并固定随机种子以保证结果可复现。
- 数据生成:循环生成正常心律、PVC和AFib三类合成信号。
- 预处理:对生成的训练数据应用小波去噪,并检测R波位置以分割心跳。
- 特征工程:提取每个心跳片段的形态学特征和频域特征,包括:
* R波幅度
* QRS波群能量
* QRS波宽度(半高宽)
* 前向RR间期(瞬时心率)
* 谱熵(频域复杂度)
- 分类器训练:将特征数据标准化(Z-score),使用高斯核函数的支持向量机(SVM)作为学习器,训练纠错输出编码(ECOC)多分类模型,并计算交叉验证准确率。
2. 仿真测试与信号处理阶段
系统生成一段长达10秒的混合信号(包含正常、PVC、AFib片段),并注入严重的基线漂移(0.2Hz)、工频干扰(50Hz)和高斯白噪声(肌电模拟)。
* 选用
sym8 小波基进行5层分解。
* 使用无偏风险估计(Rigrsure)准则获取阈值。
* 对细节系数进行软阈值处理,重构信号以去除高频噪声和基线漂移。
*
带通滤波:使用5-15Hz巴特沃斯滤波器隔离QRS频带。
*
微分与平方:增强高频斜率成分并抑制低频波。
*
移动窗口积分:使用150ms窗口进行积分,生成包络。
*
回溯搜索:在积分信号峰值附近,回到去噪后的原始信号中寻找精确的R波顶点。
* 根据检测到的R波位置切割单拍信号。
* 实时提取当前心跳的5维特征向量。
* 利用训练好的SVM模型预测当前心跳的类别(Normal/PVC/AFib)。
3. 可视化与评估阶段
系统最后创建一个综合图形窗口展示结果:
- 信号对比:在同一时间轴上绘制含噪原始信号与去噪后信号,直观展示信噪比提升效果。
- 检测标记:在洁净信号上用红色倒三角标记出算法识别到的R波位置。
- 分类统计:统计各类心律失常出现的次数。
- 诊断面板:计算并显示平均心率(BPM)、RR间期均值、SDNN(标准差)、RMSSD(均方根差),并根据分类结果给出“正常”、“发现室性早搏”或“疑似房颤”的最终诊断结论。
关键技术点分析
- 小波变换策略:代码中使用了 MATLAB 小波工具箱的
wavedec 和 wthresh 函数,或封装的 wden 函数。相比传统滤波器,小波去噪在去除宽带噪声的同时能更好地保留QRS波的尖锐边缘,避免波峰衰减。 - Pan-Tompkins 鲁棒性设计:实现中包含了完整的预处理链路(带通->微分->平方->积分),并加入了自适应搜索窗口和延迟校正机制,确保了在噪声残留情况下的检测稳定性。
- 特征融合:分类模型不仅利用了RR间期(时间节律),还融合了波形形态(宽度、能量)和频域特征(谱熵),这使得模型对于区分形态相似但节律不同的心律失常(如AFib)更加有效。
系统要求
要运行本项目的 main 函数,您的 MATLAB 环境需要安装以下工具箱:
- MATLAB Base (基础环境)
- Signal Processing Toolbox (信号处理工具箱 - 用于滤波和窗函数)
- Wavelet Toolbox (小波工具箱 - 用于小波分解与去噪)
- Statistics and Machine Learning Toolbox (统计与机器学习工具箱 - 用于SVM模型训练与预测)
使用方法
- 确保 MATLAB 路径中包含主程序文件。
- 在 MATLAB 命令窗口输入
main 并回车。 - 程序将自动执行数据生成、模型训练、信号处理及绘图流程。
- 等待几秒钟后,系统将弹出“ECG智能诊断系统”结果窗口。