基于MATLAB的心电信号滤波处理与特征提取系统
项目介绍
本项目提供了一个集成化的心电信号(ECG)处理方案,能够对含有复杂噪声的原始心电数据进行预处理、波形识别和临床指标计算。系统模拟了真实环境下的信号干扰情况,包括工频干扰、呼吸引起的基线漂移以及肌肉颤动噪声,并采用多级数字滤波器组进行去噪。通过经典的信号处理算法,系统可精准定位心电图中的关键特征点(P、Q、R、S、T),并自动生成心率、心率变异性(HRV)及各项间期时耗的统计报表。
主要功能特性
- 多源噪声抑制:集成陷波器、两级中值滤波器及巴特沃斯低通滤波器,有效消除50Hz干扰、基线漂移和高频噪声。
- 高精度R波检测:基于Pan-Tompkins算法原理,通过微分、平方、移动窗口积分以及动态阈值搜索,在强噪背景下精确定位R峰。
- 全特征波识别:在定位R波的基础上,利用时域窗口搜索算法自动识别P波、T波以及Q、S点。
- 临床指标分析:自动计算平均心率(BPM)、心率变异性指标(SDNN)、QRS时限、PR间期及QT间期。
- 可视化分析界面:多维度展示原始信号与滤波信号对比图、特征点定位标记图以及RR间期序列变化图。
- 自带信号发生器:内置合成ECG信号函数,可模拟产生标准心电波形用于算法验证与演示。
系统要求- 软件环境:MATLAB R2016b 及以上版本。
- 工具箱支撑:需要安装 Signal Processing Toolbox(信号处理工具箱)。
- 硬件要求:标准桌面计算机,建议内存4GB以上。
功能实现逻辑说明系统的代码实现遵循标准的心电处理流程,主要逻辑如下:
- 参数初始化与信号合成:
系统设定采样率为500Hz。通过合成函数生成标准心电波形,并叠加50Hz的正弦波干扰、0.5Hz及0.1Hz的低频基线漂移,以及高斯白噪声产生的肌电干扰。
- 分级滤波处理:
*
工频滤除:使用IIR陷波器(iirnotch)针对性滤除50Hz电源谐波。
*
基线矫正:采用两级中值滤波。第一级提取初步趋势,第二级平滑处理,最后由混合信号减去提取出的基线分量。
*
高频平滑:应用4阶巴特沃斯低通滤波器,截止频率设为45Hz,滤除细微的肌电干扰。
- QRS复合波检测:
* 对滤波后的信号进行微分运算以增强斜率信息。
* 进行平方处理以突出信号能量并使波形归一。
* 利用0.12秒宽度的窗口进行移动平均积分,生成平滑的能量包络。
* 设置峰值阈值,结合最小峰值距离约束查找候选R位置,并在滤波后的信号中进行局部最大值修正。
- 特征点时域搜索:
* 在R点前60ms范围内搜索极小值确定Q点。
* 在R点后60ms范围内搜索极小值确定S点。
* 在R点后100ms至400ms窗口内搜索极大值确定T波。
* 在R点前300ms至80ms窗口内搜索极大值确定P波。
- 统计学指标计算:
系统根据识别出的波形位置,计算相邻R峰之间的时间差得出RR间期,进而求得SDNN和心率。同时根据Q、S、P、T的采样索引差值除以采样频率,得出各项临床间期参数。
关键算法与技术细节分析
系统采用了Pan-Tompkins算法的核心逻辑。微分算子 [ -1 -2 0 2 1]/8 能够有效地抑制P波和T波,同时放大QRS波群的陡峭斜率。平方运算消除了相位偏移问题,并增强了高频QRS成分。
相比于普通的带通滤波,两级中值滤波能更好地保留波形的形态特征图(Morphology),不会在R波附近产生振荡。200ms和600ms的窗口大小设计是基于人体呼吸频率与心电信号周期的典型比例得出的。
系统并非在全局搜索特征点,而是以检测到的R波为基准(Anchor),在生物医学意义上的合理时间窗口内定位P、Q、S、T。这种方法极大降低了误检率,尤其是在处理T波和P波这种幅值较低的特征时表现较好。
在所有滤波环节中均使用了双向滤波(filtfilt),确保处理后的信号不会产生时间轴上的相位延迟,这对于精确测量PR间期、QT间期等时间参数至关重要。
使用方法
- 启动MATLAB软件。
- 将主程序脚本及相关函数文件置于当前工作路径。
- 在命令行窗口输入主函数名称并回车。
- 程序将自动运行并弹出图形窗口,展示去噪效果和特征点识别结果。
- 在MATLAB命令行窗口中查看生成的《心电分析统计报表》,内容包括心率、HRV及各项间期数据。