✅作者简介热爱科研的Matlab仿真开发者擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。完整代码获取 定制创新 论文复现点击Matlab科研工作室 关注我领取海量matlab电子书和数学建模资料个人信条做科研博学之、审问之、慎思之、明辨之、笃行之是为博学慎思明辨笃行。 内容介绍一、引言心电图ECG信号包含了丰富的心脏生理信息对其准确分析有助于诊断各种心脏疾病。然而实际采集的 ECG 信号常受到噪声干扰影响后续分析。MIT - BIH 心律失常数据库包含了大量临床 ECG 记录为研究提供了良好的数据基础。本文将基于该数据库探讨 ECG 信号去噪、R 峰检测及心率变异性HRV分析的方法与实现。二、ECG 信号去噪噪声来源工频干扰由电力系统产生频率通常为 50Hz 或 60Hz会在 ECG 信号上叠加周期性干扰使波形产生畸变。肌电干扰人体肌肉活动产生的电信号其频率范围较宽一般在几 Hz 到几百 Hz 之间表现为不规则的高频噪声使 ECG 信号变得模糊。基线漂移由于呼吸运动、电极与皮肤接触不良等原因导致 ECG 信号的基线发生缓慢变化影响信号的准确分析。去噪方法带通滤波设计合适的带通滤波器如巴特沃斯带通滤波器以去除工频干扰和部分肌电干扰。对于以 1000Hz 采样的 ECG 信号可设置通带范围为 0.5 - 40Hz有效滤除 50Hz 的工频干扰及高频肌电干扰同时保留 ECG 信号的主要频率成分。小波变换去噪小波变换能将信号分解到不同频率子带通过对小波系数进行处理实现去噪。具体步骤为对含噪 ECG 信号进行小波分解得到不同尺度的小波系数根据噪声特性采用阈值量化方法处理小波系数如软阈值法将小于阈值的系数置零大于阈值的系数进行收缩处理最后通过小波逆变换重构去噪后的 ECG 信号。小波基的选择很关键如 db4 小波在 ECG 信号去噪中常能取得较好效果。三、R 峰检测常用算法原理基于阈值的检测方法利用 R 峰幅值相对较高的特点设定一个幅值阈值。当 ECG 信号幅值超过该阈值且满足一定的斜率条件如信号上升沿斜率较大时判定为 R 峰。然而该方法对噪声敏感在噪声较大时易产生误判。Pan - Tompkins 算法是一种经典的 R 峰检测算法。首先对去噪后的 ECG 信号进行差分运算增强 R 峰的特征然后通过积分器进行平滑处理进一步突出 R 峰接着设定动态阈值来检测 R 峰该阈值会根据信号的统计特性实时调整有效提高了检测的准确性和鲁棒性。实现步骤数据预处理对去噪后的 ECG 信号进行归一化处理将信号幅值映射到 [0, 1] 区间方便后续算法处理。特征提取与检测以 Pan - Tompkins 算法为例先对归一化后的信号进行差分运算得到信号的变化率再通过积分器对变化率信号进行积分得到平滑后的信号根据平滑后信号的统计特性如均值和标准差动态调整阈值当平滑后的信号超过阈值时判定为 R 峰。验证与校正对检测到的 R 峰进行验证如检查 R 峰之间的时间间隔是否在合理范围内正常心率范围对应的时间间隔若出现异常采用邻近搜索等方法进行校正提高检测精度。四、心率变异性HRV分析HRV 基本概念HRV 指逐次心跳周期之间的微小差异反映了心脏自主神经系统对心脏调节的动态变化。HRV 分析能为心血管疾病的诊断、治疗及预后评估提供重要信息。分析方法时域分析计算 RR 间期相邻 R 峰之间的时间间隔的统计参数如均值、标准差SDNN、相邻 RR 间期差值的均方根RMSSD等。SDNN 反映了 HRV 的总体变化RMSSD 主要反映迷走神经对心脏的调节作用。例如在一组 ECG 数据中计算得到的 SDNN 值越大说明 HRV 越大心脏自主神经系统的调节能力越强。频域分析通过快速傅里叶变换FFT或 Welch 方法等将 RR 间期序列转换到频域得到功率谱密度。主要关注低频LF0.04 - 0.15Hz和高频HF0.15 - 0.4Hz频段的功率。LF 频段反映交感和迷走神经的共同作用HF 频段主要反映迷走神经的活动。LF/HF 比值可用于评估交感神经与迷走神经的平衡状态。五、基于 MIT - BIH 数据库的实验验证实验设置从 MIT - BIH 心律失常数据库中选取若干条 ECG 记录按照上述去噪、R 峰检测和 HRV 分析方法进行处理。将处理结果与数据库提供的标注信息进行对比验证。结果分析去噪效果通过对比去噪前后的 ECG 信号波形直观观察到噪声明显减少信号更加清晰。采用信噪比SNR等指标定量评估去噪后信号的 SNR 显著提高表明去噪方法有效。R 峰检测精度将检测到的 R 峰位置与数据库标注的 R 峰位置进行比较计算检测准确率。结果显示Pan - Tompkins 算法在该数据库上的检测准确率较高误检率和漏检率较低能满足临床分析的基本要求。HRV 分析结果通过时域和频域分析得到的 HRV 参数与正常生理状态及不同心律失常情况下的参考值进行对比。例如对于患有心律失常的 ECG 记录其 SDNN 值可能低于正常范围LF/HF 比值可能出现异常为心律失常的诊断提供了有力依据。⛳️ 运行结果 部分代码function [ecg_dc, ecg_hp, ecg_notch, ecg_filt] preprocess_ecg(ecg, fs)%dc offsetecg_dc ecg - mean(ecg);%high pass filtering of 0.5Hz[b_hp,a_hp] butter(4, 0.5/(fs/2), high);ecg_hp filtfilt(b_hp,a_hp,ecg_dc);%notch filtering of 60Hz powerline intereferencewo 60/(fs/2);bw wo/30;[b_notch,a_notch] iirnotch(wo,bw);ecg_notch filtfilt(b_notch,a_notch,ecg_hp);%bandpass filtering(5 to 40Hz)[b_bp,a_bp] butter(4, [5 45]/(fs/2), bandpass);ecg_filt filtfilt(b_bp,a_bp,ecg_notch);end 参考文献[1]李羽翠.基于LabVIEW的心电采集分析系统设计[D].兰州理工大学,2015.DOI:10.7666/d.D01027970.更多免费数学建模和仿真教程关注领取