目录
一、实验目的
二、实验原理
三、实验内容及步骤
四、运行准备
五、算法简介
尾记
一、实验目的
1、编译并理解所提供的心电信号检测程序。
2、能利用MATLAB GUI设计简单GUI程序。
二、实验原理
1、心电信号特点:
心电信号具有近场检测的特点,离开人体表微小的距离,就基本上检测不到信号;心电信号通常比较微弱,至多为mV量级;属低频信号,且能量主要在几百赫兹以下;干扰既来自生物体内,如肌电干扰、呼吸干扰等,也来自生物体外,如工频干扰、信号拾取时因不良接地等引入的其他外来串扰等;干扰信号与心电信号本身频带重叠(如工频干扰等)。
2、工频干扰抑制:
现在使用较多的方法是使用滤波器对工频干扰进行抑制。
3、基线漂移:
基线漂移是因呼吸,肢体活动或运动心电图测试所引起的,故这样使得ECG信号的基准线呈现上下漂移的情况。
三、实验内容及步骤
1、编译、理解所提供的程序,具体要求:
1)对关键语句进行中文注释;
2)对每个程序段的作用做出解释;
3)总结出所用到的信号处理算法,画出处理流程图。
2、利用MATLAB GUI平台设计与本题目相关的简单GUI程序。
四、运行准备
心电2文件夹下载地址:
如图1所示,心电2文件夹下有两个文件,分别是ECG.mat和peakdetect.m。
图1 心电二文件夹
1、数据文件
ECG.mat是心电图信号的模拟数据文件,如图2所示,文件中包含了①五个心电信号向量,分别为EKG1、EKG2、EKG3、EKG4和EKG5,②五个心电信号的采样频率。
图2 心电图信号模拟数据文件
如图3所示,程序将会以EKG1为例。
图3 EKG1前8行数据浏览
如图4所示,五个模拟心电信号的采样频率分别为250Hz、250Hz、360Hz、360Hz、250Hz。
图4 模拟心电信号的采样频率
2、程序文件
peakdetect.m是Hooman Sedghamiz于2014年编写的一段基于状态机逻辑算法的RST波检测程序,用于教学时做了一些小小的改动,不过不影响算法的整体框架。(原程序入口)
该程序实现的是一种R,S,T波检测仪。利用状态机逻辑算法,确定心电信号中的不同峰值,以检测Q波、R波、S波。同时通过高通滤波消除噪声,低通滤波消除基线漂移,具有较强的抗噪声能力。
该程序有三个输入变量,分别是ecg、fs和view,变量说明如表1所示。
表1 输入变量及解释
输入变量 | 变量说明 |
ecg | 心电信号向量 |
fs | 采样频率 |
view | 信号显示范围 |
原程序默认输出变量有R_i,R_amp,S_i,S_amp,T_i,T_amp,Heart_rate,Buffer_plot,变量说明如表2所示,我们可以根据后面的使用情况对变量进行增删操作。
表2 输出变量及解释
输出变量 | 变量说明 |
R_i,R_amp,S_i,S_amp,T_i,T_amp | QRS波的指数和振幅 |
Heart_rate | 计算出的心率 |
Buffer_plot | 处理过后的信号 |
在运行程序前,需要在matlab中先加载心电图信号的mat文件,然后调用函数。原程序默认函数为:
[R_i,R_amp,S_i,S_amp,T_i,T_amp,heart_rate,buffer_plot]=peakdetect(ecg,fs,view);
五、算法简介
该程序提出了使用状态机逻辑算法来检测心电图中的R、S、T波。其中R波峰值检测模块使用了类似Pan-Tompkins的算法,其余峰值都是根据R波的位置实时识别。
1、Pan-Tompkins算法简介
Pan-Tompkins法检测R波峰值的具体步骤如下,流程图如图5所示。
1)将信号通过给定的滤波器;
2)对滤波后的信号求一阶导数;
3)对求导之后的信号进行平方运算;
4)将信号通过滑动窗口进行积分;
5)使用阈值法检测经过处理之后的R波峰值。
图5 Pan-Tompkins算法流程图
2、状态机逻辑算法简介
状态机逻辑如表3所示。
表3 状态机逻辑表
状态 | 模式 | 流程 |
0 | R波检测 | |
1 | R波检测确认 | |
2 | S波检测 | |
3 | S波检测确认 | |
4 | T波检测 | |
5 | 休眠状态 | |
6 | T波检测确认 |
3、程序整体算法简介
在图6中有程序所使用算法的详细说明。先用带通滤波器对信号进行预处理,然后用滑动平均窗对信号进行平均。一旦识别出峰值,系统即进入状态1。如果峰值持续时间超过最小范围,系统将决定峰值是否为R波。接下来的状态是为了识别信号中其余的峰值。算法在识别出与心脏一次跳动相关的一整套R、S和T之后进入休眠状态,以避免识别多个峰值。
图6 状态机逻辑检测RST波算法框图
尾记
该算法是由Hooman Sedghamiz于2014年发表,在任何地方直接或间接使用到该算法都应该标明出处。
程序每一段代码的详细说明,根据该程序设计的matlab gui界面,将会在心电信号处理实验(二)、心电信号处理实验(三)中呈现。