基于某MATLAB的心电信号分析报告

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机信息处理课程设计说明书题目:基于MATLAB的心电信号分析

学院(系):

年级专业:

学号:

学生姓名:

指导教师:

燕山大学课程设计(论文)任务书

院(系):基层教学单位:

说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。

2014年12月 01日

摘要

心电信号是人们认识最早、研究最早的人体生理电信号之一。目前心电检测已经成为重要的医疗检测手段,但是心电信号的相关试验及研究依然是医学工作者和生物医学工程人员的重要议题。

信号处理的基本概念和分析方法已应用于许多不同领域和学科中,尤其是数字计算机的出现和大规模集成技术的高度发展,有力地推动了数字信号处理技术的发展和应用。心电信号是人类最早研究并应用于医学临床的生物电信号之一,它比其他生物电信号便易于检测,并具有较直观的规律性,对某些疾病尤其是心血管疾病的诊断具有重要意义。它属于随机信号的一种,用数字信号处理的方法和Matlab软件对其进行分析后,可以得到许多有用的信息,对于诊断疾病有非常重要的参考价值。

本课题基于matlab对心电信号做了简单的初步分析。直接采用Matlab 语言编程的静态仿真方式、对输入的原始心电信号,进行线性插值处理,并通过matlab语言编程设计对其进行时域和频域的波形频谱分析,根据具体设计要求完成程序编写、调试及功能测试,得出一定的结论。

关键词: matlab 心电信号线性插值频谱分析

目录

一:课题的目的及意义 (1)

二:设计内容与步骤 (1)

1.心电信号的读取 (1)

2.对原始心电信号做线形插值 (3)

3.设计滤波器 (5)

4.对心电信号做频谱分析 (6)

三:总结 (7)

四:附录 (8)

五:参考文献 (12)

一:课题目的及意义

心电信号是人类最早研究并应用于医学临床的生物信号之一,它比其它生物电信号更易于检测,并且具有较直观的规律性,因而心电图分析技术促进了医学的发展。

然而,心电图自动诊断还未广泛应用于临床,从国内外的心电图机检测分析来看,自动分析精度还达不到可以替代医生的水平,仅可以为临床医生提供辅助信息。其主要原因是心电波形的识别不准,并且心电图诊断标准不统一。因此,探索新的方法以提高波形识别的准确率,寻找适合计算机实现又具诊断价值的诊断标准,是改进心电图自动诊断效果,扩大其应用范围的根本途径。如何把心电信号的特征更加精确的提取出来进行自动分析,判断出其异常的类型成了亟待解决的焦点问题。本课题通过matlab语言编程,对原始心电信号进行一定的分析处理。

二:设计内容与步骤

1.心电信号读取

美国麻省理工学院提供的MIT-BIH数据库是一个权威性的国际心电图检测标准库,近年来应用广泛,为我国的医学工程界所重视。MIT-BIH数据库共有48个病例,每个病例数据长30min,总计约有116000多个心拍,包含有正常心拍和各种异常心拍,内容丰富完整。

为了读取简单方便,采用其txt格式的数据文件作为我们的源心电信号数据。利用matlab提供的文件textread或textscan函数,读取txt数据文件中的信号,并且还原实际波形。

Txt格式的心电数据文件如下:

其中文件的第一列为采样时间,第二列是在以MLII这种导联方式所得到的采样数据,第三列式以V5这种导联方式所得到的采样数据,全文件记录了约为10s的心电数据,3600个采样数据,每一行数据之间用Tab符分隔。由于数据文件中后两列数据是对同一种心电信号进行不同的导联方式所得到的采样数据,所以可以只采用其中的一种采样数据,摒弃另外一种,即可完成对此心电信号的分析。全部的心电文件记录时间约为10s,共计12个左右周期的心电信号。

实际设计心电信号数据文件时应注意:

(1)数据文件的前两行为解释说明文字,不是真正的信号数据,读取信号程序要能够自动忽略前两行文字,只读取真正的数字信号数据(严禁自己手动删除源心电数据文件中的前两行数据,必须通过程序来实现忽略前两行文字的目的)。

(2)利用数组函数分别将文件的前两个列分别读入一个一维数组。

(3)最后利用已经转为数值的分别代表心电信号时间和幅值的两个一维

数组,图形化还原原始心电信号波形,在此推荐利用利用plot(x,y)函数对数据做图形化显示。

2.对原始心电信号做线性插值

由于原始心电信号数据并不是由等间隔采样而得到的,也就是说原始的

心电数据并不是均匀的,但是后面肯定要用到数字滤波器对心电信号做处理,而MATLAB 中用数字滤波器被处理的数据应该都是等间隔的,否则处理后会

出现偏差,因此首先对原始心电信号要做的就是做一个线性插值处理,使其

变为等间隔的数据。根据心电信号的特点, 把时间分隔成0.001s 。添加的幅值点采用一次线性插值。对二维数据进行插值,相连幅值间数据的插值根据时间

进行。

其中:

1--=∆i i t t t 001.0/t N ∆=1--=∆i i A A A 001.01+=-j j t t N

A A A j j /1∆+=-1,,,,1,3,2,1,,3,2,11111===-==----j i A A t t N j arraysize i i j i j

时数组 依次排列,即得到了插值后等间隔的新数据。

根据上文中提到的插值公式,以此为原理,设计matlab 程序,对心电信

号数据做线性插值处理。插值完以后的数据应该是时间均匀的、以0.001秒为

间隔的。此步骤的实现主要是基于matlab 中的数组操作函数来实现。 其中一种插值方法的思路是:将第一步中读取的心电信号数据的时间数据和幅值数据分别存放在一个一维数组中。然后利用for 循环结构把所有数据依次读取进来。判断时间数据数组中前后两个相邻的数据间隔是否为0.001s ,如果是则判断下一对相邻两个数据;如果间隔大于0.001s 则进行一维插值做处

理。

注意:对时间数据做插值的同时一定不要忘记对幅值数据同样做插值处

理,时间数据和幅值数据一定是相互对应的。

j j A t ,

相关文档
最新文档