目录

一、实验目的

二、实验原理

三、实验内容及步骤

四、运行准备

五、算法简介

尾记


一、实验目的

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。


python心电信号处理 心电信号处理实验报告_Pan

图1 心电二文件夹

1、数据文件

ECG.mat是心电图信号的模拟数据文件,如图2所示,文件中包含了①五个心电信号向量,分别为EKG1、EKG2、EKG3、EKG4和EKG5,②五个心电信号的采样频率。


python心电信号处理 心电信号处理实验报告_python心电信号处理_02

图2 心电图信号模拟数据文件

如图3所示,程序将会以EKG1为例。


python心电信号处理 心电信号处理实验报告_python心电信号处理_03

图3 EKG1前8行数据浏览

如图4所示,五个模拟心电信号的采样频率分别为250Hz、250Hz、360Hz、360Hz、250Hz。


python心电信号处理 心电信号处理实验报告_采样频率_04

图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波峰值。


python心电信号处理 心电信号处理实验报告_状态机_05

图5 Pan-Tompkins算法流程图

2、状态机逻辑算法简介

状态机逻辑如表3所示。

表3 状态机逻辑表

状态

模式

流程

0

R波检测

python心电信号处理 心电信号处理实验报告_python心电信号处理_06

1

R波检测确认

2

S波检测

3

S波检测确认

4

T波检测

5

休眠状态

6

T波检测确认

3、程序整体算法简介

在图6中有程序所使用算法的详细说明。先用带通滤波器对信号进行预处理,然后用滑动平均窗对信号进行平均。一旦识别出峰值,系统即进入状态1。如果峰值持续时间超过最小范围,系统将决定峰值是否为R波。接下来的状态是为了识别信号中其余的峰值。算法在识别出与心脏一次跳动相关的一整套R、S和T之后进入休眠状态,以避免识别多个峰值。


python心电信号处理 心电信号处理实验报告_状态机_07

图6 状态机逻辑检测RST波算法框图

尾记

该算法是由Hooman Sedghamiz于2014年发表,在任何地方直接或间接使用到该算法都应该标明出处。

程序每一段代码的详细说明,根据该程序设计的matlab gui界面,将会在心电信号处理实验(二)、心电信号处理实验(三)中呈现。