基于小波变换与深度学习的ECG心电信号自动诊断系统
项目简介
本项目实现了一个基于MATLAB的集成化心电图(ECG)信号处理与分析平台。系统集成了从数据生成、信号预处理、特征提取到自动诊断的完整流程。通过图形用户界面(App Designer),用户可以直观地观察ECG信号在不同处理阶段的变化,查看心率变异性(HRV)指标,并获取基于模拟卷积神经网络(CNN)的诊断分类结果。该系统主要用于生物医学工程算法的教学演示、验证及辅助诊断原型开发。
功能特性
- 交互式GUI界面:基于MATLAB App Designer构建的现代化界面,包含控制面板、参数显示区及三个动态可视化绘图区。
- 信号模拟与生成:内置ECG信号生成器,能够合成包含P波、QRS波、T波以及模拟噪声(基线漂移、工频干扰、白噪声)的仿真信号。
- 高级信号预处理:
* 集成IIR陷波滤波器去除工频干扰。
* 利用离散小波变换(DWT)进行信号去噪。
* 利用小波重构技术去除基线漂移。
* 实现Pan-Tompkins算法逻辑进行QRS波群检测及R波定位。
* 自动检测P波与T波位置。
* 计算时频分析图(STFT Spectrogram)。
* 计算心率变异性(HRV)时域和频域指标(SDNN, RMSSD, LF/HF)。
- 智能辅助诊断:集成模拟的CNN推理模块,对心律失常类型(正常、PVC、PAC、AFIB)进行分类概率评估。
- 自动报告导出:支持一键将当前信号波形、核心指标、分类概率与时频图导出为PDF格式的诊断报告。
系统要求
- MATLAB R2020a 或更高版本
- Signal Processing Toolbox(信号处理工具箱)
- Wavelet Toolbox(小波工具箱)
- Deep Learning Toolbox(深度学习工具箱,用于潜在的模型扩展)
使用方法
- 确保MATLAB路径中包含
main.m 文件。 - 在MATLAB命令行窗口输入
main 并回车。 - 系统将启动 "智能ECG心电诊断系统 (Deep-ECG)" 界面。
- 按照控制面板的数字引导顺序操作:
* 点击
1. 加载/模拟数据 生成带有噪声的仿真ECG信号。
* 点击
2. 信号预处理 执行去噪和滤波算法。
* 点击
3. 特征提取与CNN诊断 进行波形识别、定位与疾病分类。
* 点击
导出的PDF报告 保存分析结果。
代码实现逻辑与算法细节
本项目的所有核心逻辑均封装在 main.m 文件中,主要包含以下模块:
1. 图形用户界面 (GUI) 架构
程序入口为
main 函数,通过调用
run_gui 构建界面。界面布局采用网格管理器 (
uigridlayout),左侧为操作与数据显示区,右侧为三个绘图坐标轴:
- 原始ECG信号:显示加载或生成的含噪信号。
- 去噪后信号:显示经过滤波处理的洁净信号及标注的特征点。
- 时频分析:显示信号的短时傅里叶变换频谱。
2. 数据源 (模拟生成)
虽然界面按钮提示支持MIT-BIH数据,但当前代码实现主要通过
generate_synthetic_ecg 函数生成仿真数据。该算法通过高斯函数叠加模拟P、Q、R、S、T各波段,并人为特定频率的噪声和基线漂移,以验证去噪算法的有效性。
3. 多级信号预处理流水线
点击“预处理”按钮后,系统按顺序执行以下算法:
- 工频干扰去除:使用
designfilt 设计二阶IIR带阻(陷波)滤波器,阻带频率设定在49Hz-51Hz,有效滤除50Hz电源噪声。 - 小波去噪:
* 选用
sym4 小波基,分解层数为5层。
* 采用软阈值处理方法 (
wthcoef),通过Donoho通用阈值公式计算噪声门限,对高频细节系数进行处理,去除高斯白噪声。
* 采用
wavedec 进行8层小波分解(使用
db6 小波基)。
* 强制将最低频的逼近系数(第8层)置零。
* 使用
waverec 重构信号,从而去除极低频的基线趋势项。
4. 特征提取与时频分析
在“特征提取与CNN诊断”阶段,代码执行以下操作:
- QRS复合波检测:调用
pan_tompkins 算法(经典差分、平方、积分窗逻辑)检测R波大概位置,并通过 correct_r_peaks 进行局部最大值搜索以精确定位。 - PT波检测:基于R波位置,在特定时间窗口内搜索P波和T波的峰值。
- HRV计算:通过R-R间隔序列,计算平均心率、SDNN(全部窦性心搏RR间期的标准差)、RMSSD(相邻RR间期差值的均方根)以及LF/HF(低频高频比)。
- STFT变换:使用
spectrogram 函数(窗口128,重叠120,NFFT 256)生成信号的时频图,展示信号频率随时间的变化特性。
5. 诊断分类与报告
- 模拟推理:调用
simulate_cnn_inference 函数,输入STFT特征和HRV指标。注意:代码中的CNN是一个模拟推理过程,用于演示深度学习模块在系统中的集成方式,输出针对四类心律失常(正常、室早、房早、房颤)的置信度概率。 - 可视化反馈:通过柱状图 (
bar) 实时显示各分类的概率分布。 - PDF导出:利用
exportgraphics 函数,将重组后的波形图、统计文本、分类概率图和时频图合并为一个新的隐藏Figure,并保存为PDF文件。