完整版基于MATLAB的心音信号的采集和分析本科毕业设计.docx
- 文档编号:23411421
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:14
- 大小:26.11KB
完整版基于MATLAB的心音信号的采集和分析本科毕业设计.docx
《完整版基于MATLAB的心音信号的采集和分析本科毕业设计.docx》由会员分享,可在线阅读,更多相关《完整版基于MATLAB的心音信号的采集和分析本科毕业设计.docx(14页珍藏版)》请在冰豆网上搜索。
完整版基于MATLAB的心音信号的采集和分析本科毕业设计
本科毕业论文
题目基于MATLAB的心音信号的采集和分析
专业
作者
学号
单位
指导教师
2015年5月
教务处编
原创性声明
本人郑重声明:
所提交的学位论文是本人在导师指导下,独立进行研究取得的成果。
除文中已经引用的内容外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得聊城大学或其他教育机构的学位证书而使用过的材料。
对本文的研究作出重要贡献的个人和集体,均在文中以明确的方式表明。
本人承担本声明的相应责任。
学位论文作者签名:
日期:
指导教师签名:
日期:
目录
前言1
1.概述1
1.1MATLAB的应用背景简介1
1.2心音信号的基础理论2
1.3MATLAB环境采集和分析心音信号的可行性3
2.心音信号的采集与预处理5
2.1心音信号的采集5
2.2心音信号样本采集图6
2.3心音信号的预处理8
2.3.1时域加窗频域滤波8
2.3.2小波软阈值滤波8
3.心音信号的分析9
3.1心音信号的时域分析9
3.1.1希尔伯特变化提取包络9
3.1.2小波分析求时域分布11
3.2心音信号的频域分析12
3.2.1频域分析12
3.2.2小波分解12
结论13
参考文献15
附录16
代码1fft变换16
代码2sfft变换16
代码3小波分解及软阈值滤波16
致谢18
摘要
随着现代物质生活水平的提高,心血管疾病的死亡率居于各类疾病死亡率之首,严重威胁着人们的身体健康,心音信号的采集和处理是心血管疾病无创诊断的基础和前提。
本文提出了采用基于MATLAB软件的心音信号的小波去噪的解决方法,首先对MATLAB软件的特点和心音信号的基础理论进行了简要的介绍,从理论和MATLAB仿真两方面进行了分析,然后介绍了在对心音信号进行AD转换之前对信号进行预处理的必要性,并提出一种基于希尔伯特变换的心音包络提取方法。
最后通过对心音信号在时域和频域上的分析,利用小波去噪的方法滤除了信号的噪声,最终达到了预期的效果,对某些心血管疾病的发生和防治具有十分重要的意义。
关键词:
MATLAB;心音信号;滤波;时域;频域
Abstract
Withtheimprovementofmodernmateriallifelevel.Themortalityinallkindsofdiseasemortalityofcardiovasculardisease.Cardiovasculardiseaseseriousthreattopeople'sandprocessingisthepreconditionandfoundationofnoninvasivediagnosisofcardiovasculardisease.AnanalysismethodisproposedforthewaveletdenoiseofMATLABsoftwareinthispaper.Inthispaper,wegiveabriefintroductionofthecharacteristicsoftheMATLABsoftwareandthebasictheoryof.Andthenintroducedthenecessityofsignalpreprocessingbeforethe.ThisstudyputforwardamethodbasedontheHilberttransform.Theresultsweobtainedisthatthenoiseofthesignalisfilteredusingthemethodofwaveletdenoisingthroughtothetimeandfrequencydomainanalysis.Theresultachievedanticipatesresult.Itoccurrenceandpreventioninpatientswithcardiovasculardisease.
Keywords:
MATLAB;Heartsoundsignals;Thefilter;Thetimedomain;Frequencydomain
基于MATLAB的心音信号的采集和分析
前言
听诊器自1816年诞生以来,便在心脏病学的历史中起到了非常重要的作用。
迄今为止,听诊器仍然是心脏检查的基本工具。
然而,传统的听诊器不仅对医生的要求很高而且有一个很严重的缺点是不能储备心音听诊的大量病例资料,心音信号是一种重要的生理信号,含有关于心脏各个部分如心房、心室、心血管、大血管及各个瓣膜功能状态的大量病理信息,是心脏及大血管机械运动状况的反映,也是评估心脏功能状态的一种基本方法,具有非线性、非平稳的特点。
对诊断心血管疾病具有重要的临床应用价值,而且无论图像技术发展到如何水平,听诊始终是心脏疾病检测的重要一环。
到目前为止,在国内,心音信号采集和分析系统仍相当不成熟,基本上是停留在理论研究的水平,少有实用意义上的心音信号分析诊断方面的电子医疗产品。
心音来自于人体的内部,由于呼吸情况、病人移动、心尖搏动以及其他环境因素极易引起噪声,舒张期或收缩期存在杂音,而且心音信号本身比较微弱,导致心音信号不容易被模仿或复制,从而心音信号有很强的独特性,若个体不同则心音信号的表现形式则不同。
同时,微弱的心音信号通过电子线路放大、滤波等预处理后可以清晰而重复的描述心音的适时相应长度,可以产生平直的频率响应。
将采集到的心音信号预处理后转换为电信号并进行显示、分析和存储能够反映心脏和心血管等的生理和病理信息,对有关心脏疾病和心血管疾病的诊断具有重要的诊断价值,是评估一个人心脏功能情况的重要依据[1]。
1.概述
1.1MATLAB的应用背景简介
MATLAB是美国MathWorks公司于1984年开发的,它是一个为科学研究和工程计算而专门设计的高级交互式运行环境,目前已经成为国际上最流行、应用最广泛的一种应用于科学与工程运算的高效软件。
MATLAB是matrixandlaboratory两个词的组合,意为矩阵工厂(矩阵实验室),在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB集矩阵运算、数值分析、图形图像显示和仿真于一体,被广泛应用于电子信息处理、自动控制、数学运算、计算机技术、图形图像处理、语音图像处理、语音处理和汽车工业等领域,含有丰富的函数库和数据库,既能实现一般的数学运算和分析、又能实现系统仿真、信号处理图像处理等功能[2]。
MATLAB软件具有如下特点:
(1)具有超强的数值计算功能。
在MATLAB环境中,一个复杂的问题只用几条简单的指令就可以解决,具有超过50种的数学、统计、科学及工程方面的函数可供使用,用户便不必在电脑编程上浪费太多时间。
(2)具有强大的数据可视化功能。
MATLAB的图形功能可以使用户可以进行视觉数据处理和分析,来制作高质量的图形。
(3)构架的可延拓特性强。
开放性使MATLAB广受用户欢迎,除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。
(4)内嵌的simulink是MATLAB重要的组件,简单易用,不需编写大量的程序代码,便可实现对复杂系统的交互式动态建模、仿真及综合分析。
(5)具有丰富的工具箱。
由于MATLAB的开放性,很多领域的专家都为MATLAB编写了各种程序工具箱,这使得使用MATLAB的用户不必花大量的时间编写程序,而是直接调用这些程序,为用户节省了大量的时间和精力,达到事半功倍的效果。
1.2心音信号的基础理论
心音信号是指在心动周期中,心肌收缩、心脏瓣膜启闭,心室壁、大动脉瓣等被血流冲撞,引起机械振动发出的声音。
产生的声音信号通过周围组织传导到胸壁,用耳朵或听诊器可以在胸壁听到,同样也可以用电子仪器记录下来(心音图)。
可分为第一心音(S1),第二心音(S2)。
(正常情况下均可听到)。
第三心音(S3)(通常仅在儿童及青少年可听到),第四心音(S4正常情况很少听到),从心脏产生的心音经过组织的介导传到胸壁表面,其中以骨传导最好,第一心音和第二心音之间的间隔很小,若被采集者有心杂音,则根本无法区分是杂音还是正常的心音。
心音是心脏及心血管系统机械运动状况的反映,其中包含着心脏各个部分本身及相互之间作用的生理和病理信息。
心音信号的识别与分类对心血管系统疾病的诊断具有重要的意义,其准确性、可靠性的好坏决定着诊断与治疗心脏病患者的效果。
早期的心音识别与分类是医生根据听诊结果来完成的,显然这一过程具有一定的主观性且可靠性不高。
随着信号处理与分析技术的不断发展,对心音的研究也逐步由定性分析进入了定量分析的阶段。
心音图将心脏听诊形象化,提高了心血管疾病的诊断水平,对于了解心血管功能、选择治疗、判断病理生理以及研究某些疾病的机理都提供了很有价值的资料[3]。
随着自然与社会环境的不断变化,与人们生活习惯有关的心脏疾病逐年增多。
自1985年来,心脏疾病成为世界第二大高死亡疾病[4]。
因心音来自于人体内部,不容易被复制或模仿,同时还具有独特性,个体的不同,心音信号的表现形式也不相同。
对其进行检测分析,可以达到对身份进行识别和验证的目的。
此外,通过听取心音,也可以获得用以判断心脏疾病的相关信息。
心音信号属于强噪声背景下的人体微弱生物信号,由于心音信号是由复杂的生命体发出的不稳定的自然信号,容易受到人体诸多因素的影响。
因此心音的传导比一般声音在单一介质(如空气)中传导要复杂一些。
心音有以下几个特性:
①心音的响度,即心音的强弱,同样是由心音的振幅大小所决定,振幅大心音响(强),振幅小则心音轻(弱)。
②心音的频率反应为音调的高低,心音的频谱约为(1~1000)Hz之间,一般将120Hz以上划为高频,(120~80)Hz之间为中频,(30~80)Hz之间为低频[5]。
1.3MATLAB环境采集和分析心音信号的可行性
上文已经提到,心音信号的分析对于心血管疾病的临床诊断具有重要的理论意义和实际意义。
然而,各种原因阻碍了心音信号的采集和分析的利用和发展,具体如下:
第一,心音的产生机制在目前为止仍然处在争论之中,临床上很少单凭听诊做出诊断;
第二,目前只是定性的分析心音,缺少定量的心音分析技术;
第三,诊断结果容易受到医生的祝愿判断影响,有些医生常常不能清楚的分辨出大量的低频音部分,而这些低频音中往往含有大量有诊断意义的成分,大部分情况下只能是有经验的心脏病专家,才能够通过听诊对心脏的状态做出正确的评价和诊断。
第四,最后也是最重要的一点,传统声学听诊只能临床听诊,不能够把心音的病理信息详细记录下来,为后面的心音诊断和分析提供有效的参考。
各方面的资料显示,在心音信号的采集和分析的研究中,国外有比较成熟的理论研究和实际的产品,然而在国内,这方面的研究还不成熟,采集和分析心音信号的仪器还有很多的不足之处。
心音信号是十分微弱低频生理信号,信号弱、噪声强、频率窄、随机性强,容易受到人体诸多因素的影响,心音检测过程中容易产生各种背景噪声,如何获取准确的心音信号是实现心脏病无创诊断的关键技术之一。
由于心音的频率一般在5—600HZ左右。
在MATLAB环境进行信号处理可以方便的调用MATLAB提供的函数,运用简单的语句就可以实现极为复杂的运算,加快了信号处理的进程,MATLAB还提供GUI的功能,便于用户设计友好的交付界面[7],由此可知,利用MATLAB分析心音信号具有一定的优越性。
基于此,本文从理论和MATLAB仿真两方面进行了分析,验证了该方法理论上的可行性,并用MATLAB软件LMI工具箱仿真证明了结果的有效性和可行性。
然后介绍了在对心音信号进行AD转换之前对信号进行预处理的必要性,信号的预处理主要包括进行滤波、去除噪声等方面。
本文提出一种基于希尔伯特变换的心音包络提取方法,并在提取出的心音包络信号中识别第一心音(S1)与第二心音(S2),并提取了包络的时域特征参数,然后用小波分析的方法对信号进行时域分析,利用MATLAB提供的FFT函数,对信号进行频域分析,并得到信号频谱图,最后对整个过程进行了总结。
本文基于MATLAB对心音信号进行采集和分析,是在普通PC机上进行,该过程的系统框图如图1所示:
图1基于MATLAB的心音分析仪的系统框图
2.心音信号的采集与预处理
2.1心音信号的采集
心音信号通过心音传感器采集,经过前置差分放大,再经过高通滤波、陷波、低通滤波等,初步滤掉信号中混杂的工频和其它一些干扰噪音(比如呼吸,传感器摩擦等产生的噪音等),接着把心音信号放大到合适的幅度,借助PC录制心音音频文件。
其采集与分析系统原理图为:
图2心音信号采集与分析系统原理图
为了增加传感器的便捷性,同时可以降低成本,本文利用PC,在操作系统下,借用第三方软件,直接录制心音音频,然后将采集到的结果先保存在电脑上,再进行处理。
虽然在大部分的多媒体应用程序中并不需要使用底层音频函数,但在利用MATLAB对音频数据进行分析时,就必须使用底层音频函数。
底层音频函数主要指WAV音频函数。
由于WAV采用RIFF文件格式,因此使用底层音频函数时,经常需要利用多媒体文件输入输出函数来打开以及读和写WAV文件数据。
所以在进行心音处理前,还要把录制的MP3格式的心音转换为WAV格式。
在使用心音传感器采集人体心音时还必须遵守下列心音采集规范:
1、心音传感器必须使用弹性固定带或粘接胶带平稳置于测量部位,防止因人体呼吸时胸腔起伏,或者手持传感器与人体皮肤发生相对位移(摩擦、挤压)。
2、正确选择心音采集部位。
如重点检测第一心音,传感器置于人体前胸第五肋间心尖搏动最强点(正常在心尖部,即左锁骨中线内侧第五肋间处)。
心脏增大时,心尖向左或左下移位。
3、测试心音时应在安静的环境中进行,被测者不能说话,不能晃动身体,尽量避开噪声及振动源。
4、使用传感器时,轻拿轻放,严禁剧烈碰撞,甩打传感器,禁止用手按压传感器的敏感面。
心音信号通过心音传感器拾取(心音传感器的原理在前面已有说明,在此不再赘述),然后直接送到模拟信号处理电路,采取一系列措施滤除干扰,并将心音信号放大到合适的幅度,送给AD转换器处理。
AD转换得到的数据送到单片机,然后由串行通信接口发送到上位机。
电源电路大部分采用乐阳市明威电源厂的开关电源。
而心音传感器的电源和单片机的电源则用TTL电路转换成相应所需的电压值。
其中模拟信号处理电路为±5V供电,AD转换电路、串行通信接口由+5V供电、单片机电路为+3.3V供电、而心音换能器则由单独的+6V供电。
图3心音信号采集系统功能框图
2.2心音信号样本采集图
利用MATLAB对音频信号进行采样,采样结果如图4与图5:
图4样本1波形图
图5样本1频率特性图
由以上两幅图可以看出,由于信号采集过程中,程序复杂,所以心音中的噪声很大,心杂音很多,对心音影响很大。
心音信号中的噪声主要包括有2类:
一类是由呼吸、病人的移动、心尖搏动及其他环境因素引起的噪声,这类噪声是通常意义上的噪声;另一类噪声是指舒张期或收缩期存在的杂音,这些杂音不利于对包络的提取,也被作为一种“噪声”[7]。
呼吸,病人的移动等主观因素都可能引起噪声,因此在测量前应该使病人充分放松,采取舒适体位。
同时,测量环境和测量设备更容易引起噪声。
由于心音测量中采用的心音传感器灵敏度较高,当环境中有噪音时,传感器会同时接收噪声信号,并将其送入放大器而进入测量系统,使心音信号中混进干扰信号;另一方面,由于心音信号很弱,传感器与测量对象直接接触产生的摩擦噪音也会随测量信号一起进入测量系统。
此外,仪器本身的缺陷还会导致产生诸如电子器件的离散噪声,电阻的热噪声等噪声。
工频干扰是生理信号测量中普遍存在的一种噪声,它主要是由电源和测量环境周围存在的电磁辐射产生的。
仪器本身可能受到工频干扰的影响,在处理测量信号时将工频干扰一并放大,此外,测量信号还将受到工频信号的调制,使信号带有毛刺。
另外,在对采集到的心音进行音频格式转换时,也有可能引入噪声[8]。
因此,有必要对心音信号进行预处理,去除各类噪声,保留心音的基本成分--第一心音(S1)和第二心音(S2),以利于心音包络的提取。
2.3心音信号的预处理
2.3.1时域加窗频域滤波
在采集心音的过程中干扰噪声总是会不可避免地被引入,而其主要来源于环境噪声、工频噪声、对象皮肤与采集设备的摩擦音、仪器本身的声音等[10]。
心电信号是一种微弱的生物电信号,由于干扰信号的存在,会降低心音分析的精度和准确度,在将音频信号进行AD转换之前,需要对信号进行预处理。
如何滤除干扰是需要重点考虑的问题,所以需要对心音进行滤波。
常用的滤波手段是信号的时域频域变换分析,一般采用的方法是时域加窗频域滤波[12]。
经过多次实验,本文最后选择巴特沃思带阻滤波器消除心音信号中的工频干扰。
构建的带阻滤波器如图6所示:
图6心音样本1滤除工频后的波形
2.3.2小波软阈值滤波
小波软阈值去除噪声就是在小波分解后,对小波系数设置阈值,在众多小波系数中,把绝对值较小的系数设置成零,而让绝对值较大的系数保留或收缩,然后对阈值处理后的系数进行小波逆变换,直接进行信号重构,即可达到去噪的目的[18]。
该方法是基于这样一个思想:
信号对应的小波系数包含有信号的重要信息,其幅值较大,但数目较少,而噪声对应的小波系数是一致分布的,个数较多,但幅值小。
因此,采用db3小波将信号进行8层分解,由于信号的采样频率为11025hz,将1、2、3层信号舍弃,将4到8层的信号的高频成分进行软阈值滤波后进行重构,各层频率范围为:
表1db3小波8层分解后各层分量对应的频段范围单位:
HZ
分解层数
近似分量
细节分量
第1层
0~2756
2756~5512
第2层
0~1378
1378~2756
第3层
0~689
689~1378
第4层
0~348
348~689
第5层
0~172
172~348
第6层
0~86
86~172
第7层
0~43
43~86
第8层
0~21.5
21.5~43
至此,对心音信号的预处理已完成,在AD转换器的输入端得到了幅度适当、波形清晰稳定的心音信号。
下图为AD转换器输入端的心音波形:
图7AD转换器输入端的心音波形
3.心音信号的分析
3.1心音信号的时域分析
3.1.1希尔伯特变化提取包络
心音的包络反映了心脏工作过程中各种振动的幅度以及幅度的持续时间。
心音包络在对于心血管疾病的治疗具有重要的参考价值,提取心音包络是心音的重要研究内容之一。
目前,提取心音包络的主要方法有香农包络、希尔伯特包络、同态滤波包络。
在这里我们采用希尔伯特包络法对信号求取包络。
希尔伯特变换可以把一个实信号表示成其频谱仅在正频域有值的复信号(解析信号),对研究实信号的瞬时包络有重要意义[13]。
希尔伯特变换实质上是一个线性时不变系统的输出,它只改变信号的相位,不改变其能量和功率。
对实信号s(t),其希尔伯特变换记为s^(t),定义为:
[14]。
可以看出,希尔伯特变换本质上是一个理想的90°移相器。
由实信号s(t)作实部,其希尔伯特变换s^(t)作虚部,构成的复信号z(t)即为s(t)的解析信号,即z(t)=s(t)+js^(t)。
对z(t)求模就可得到实信号s(t)的包络。
[1]对经过预处理的心音信号利用希尔伯特变换提取包络,得到的图形如图9所示。
从图中可以看出,得到的心音包络存在一个问题,在S1,S2包络的内部,有许多过于小的极值点,它们的存在是不利于对心音信号进行进一步的分析的。
出现这些极值点的原因是S1,S2是由几部分组成的,各部分之间存在很小的时间间隔。
在计算S1,S2的时限时,不用考虑其内部情况。
因此可以将这些极小值点滤除或者增大其幅值,使其不会影响S1,S2时限的计算。
本文利用三次样条插值,连接这些极大值点得到s^(t)的上包络线h(t),.TheBasisofRandomSignalAnalysis.[M].Beijing:
PublishingHouseofElectronicsIndustry,2003.1
[2](4):
75-79
[3]张维强,宋国乡.基于一种新的阈值函数的小波阈值信号去噪[J].西安电子科技大学学报,2004,31
(2):
296—299
[4]郝张红,刘先勇,袁长迎.小波去噪及其在LabVIEW中的实现[J].现代电子技术,
附录
代码1fft变换
L=length(x);
NFFT=2^nextpow2(L);
Y=fft(x,NFFT)L;
f=fz2*linspace(0,1,NFFT2+1);
axes(handles.axes1);
plot(f,abs(Y(1:
(NFFT2)+1)));
代码2sfft变换
N=length(xy);
Nw=3000;
L=Nw2;
Ts=round((N-Nw)L)+1;
nfft=128;
TF=zeros(Ts,nfft);
fori=1:
Ts
xw=xy((i-1)*L+1:
i*L+L);
temp=fft(xw,nfft)L;
TF(i,:
)=temp;
end
axes(handles.axes6);
mesh(abs(TF));
代码3小波分解及软阈值滤波
layer=8;
[C,L]=wavedec(y,layer,'db3');
cD1=detcoef(C,L,1);
cD2=detcoef(C,L,2);
cD3=detcoef(C,L,3);
cD4=detcoef(C,L,4);
cD5=detcoef(C,L,5);
cD6=detcoef(C,L,6);
cD7=detcoef(C,L,7);
cD8=detcoef(C,L,8);
axes(handles.axes2);
plot(cD4,'b');
title('小波分解的第四层的高频部分');
axes(handles.axes3);
plot(cD5,'b');
title('小波分解的第五层的高频部分');
axes(handles.axes4);
plot(cD6,'b');
title('小波分解的第六层的高频部分');
Thr4=thselect(cD4,'minimaxi');
Thr5=thselect(cD5,'minimaxi');
thr6=thselect(cD6,'minimaxi');
thr7=thselect(cD7,'minimaxi');
thr8=thselect(cD8,'minimaxi');
THR=[thr4,thr5,thr6,thr7,thr8];
[s3,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',y,'db3',5,THR,'s');%wedencmp
致谢
本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 基于 MATLAB 心音 信号 采集 分析 本科 毕业设计