OR2-Labview和Matlab平台下的脉搏信号分析

  • 格式:doc
  • 大小:998.50 KB
  • 文档页数:5

作者简介 于璐,男,硕士研究生,讲师,研究方向:生物医学信号检测与处理,电子信箱:yulu@mail.cmu.edu.cn
通信作者 沙宪政,教授,电子信箱:xzsha@mail.cmu.edu.cn
通信地址 辽宁省沈阳市和平区北二马路92号 中国医科大学生物医学工程系 邮政编码:110001

Labview和Matlab平台下的脉搏信号分析
于璐 沙宪政
*
(中国医科大学生物医学工程系 110001)
摘要: 本文介绍了虚拟仪器Labview和Matlab混合编程的思想和方法,并在脉搏信号的预处理及特征点识别过程中使
用了此方法。经过对大量不同脉象的处理实验表明,该方法具有便捷、高效和结果准确的特点,为生物医学信号的
分析提供了一种有效的新方法。
关键词: 生物医学工程学;脉搏信号分析;Labview与Matlab混合编程;特征提取

一、前言
生物医学信号的检测与分析无论对基础医学研究还是临床诊断治疗都有着非常重要的作用,近
些年来,随着计算机技术的不断进步和完善,虚拟仪器技术越来越多的被应用到生物医学信号的检
测与分析中来。虚拟仪器技术是计算机技术与仪器技术相结的产物,它由计算机、仪器硬件和相应
的应用软件组成,利用PC机强大的图形环境建立图形化的虚拟仪器面板,完成对仪器的控制及数
据的采集、分析和显示。目前使用最为广泛的虚拟仪器开发环境是美国NI公司推出的Labview软硬
件平台,越来越多的虚拟医学仪器采用了基于Labview的设计,而且许多生理信号的识别与分析等
研究工作也是在Labview系统框架下进行的[1]。
二、Labview和Matlab混合编程的提出及实现方法
虽然Labview具有开发便捷、效率高、形象直观、易于掌握等优点,但是由于它对各种算法支
持的工具箱不多且功能单一,使得Labview在数学计算方面的功能十分有限。因此对于一些虚拟仪
器中需要进行大量数据运算处理的复杂应用就显得有些力不从心。Matlab是美国MathWorks公司开
发的一种直观高效的计算机语言,它为数据分析和数据可视化、算法和应用程序开发提供了最核心
的数学和高级图形工具,在信号和图像处理等领域具有无可比拟的优势。但它的界面开发及流程控
制能力较差,并且数据采集、网络通信、硬件控制等方面比较繁琐,而且脚本文件不能脱离Matlab
这个应用程序环境,这就制约了程序的可移植性和通用性。因此,我们提出了Labview和Matlab混
合编程[2],利用Matlab Script节点技术,使它们在功能上互补,充分发挥两者的优势,具有很高的
实用价值。
利用Matlab Script节点技术实际上是通过ActiveX控件与Matlab server进行通信的。调用Matlab
函数或命令,实质是将Matlab当作一个ActiveX服务器,并建立ActiveX通道,然后将这个函数或
命令通过ActiveX通道发送给Matlab,由Matlab在后台执行。Labview提供的Matlab Script节点具
有多输入、多输出的特点,一次处理的信息量可以很大。Matlab脚本可以现在Matlab下调试,无误
后再导入到Matlab Script节点中,执行Matlab命令并使用功能丰富的各种工具箱。使用Matlab Script
节点的方法实现的混合编程即简单又实用,当需要使用时,可将其模块化,采用主程序动态加载,
用户比较容易掌握,也是Labview开发组推荐使用的方式[3]。
三、脉搏信号的分析
脉搏波中包含了许多生理信息,对其进行检测和分析,在心血管疾病的预防与临床诊断治疗方
面有着重要的意义和作用[4]。基于Matlab强大的计算功能和Labview良好的人机控制界面,我们可
以实现对脉搏信号的预处理、识别和特征提取。
基线漂移是大部分生理信号采集过程中都存在的一种低频干扰,在对脉搏进行识别及特征提取
时,它的存在会使以上工作的进行产生较大误差,我们采用插值拟合法对其进行调整[5],原理如图1
所示。
图1 去基线漂移原理图示
在单周期识别结束后,我们可以确定每个脉搏波起始点的位置及幅值,然后将这些点③、④、
⑤、⑥连接起来,构造一条漂移折线,将脉搏信号与漂移信号相减,就可以达到去除基线漂移的目
的了。但是在具体实现时,图中的漂移折线其实一开始并不存在,它只是用两个数组A和B表示出
来(A数组用来保存构成漂移折线的各点②~⑧的位置,B数组用来保存②~⑧的幅值),无法真正
实现脉搏信号的各点与漂移折线各点相减,因此,需要根据A、B数组构造真正的漂移折线。构造
漂移折线的过程用Labview现有的功能模块无法实现,而利用Matlab灵活的数学功能则可以非常简
单的完成。具体实现原理及方法如下:若已知平面上两点坐标为(X1,Y1),(X2,Y2),则两点确定的
直线方程为Y=((Y2-Y1)/(X2-X1))*X +(X2*Y1-X1*Y2)/(X2-X1),由于我们知道②~⑧各点的位置及
幅值,也就是相当于知道了各点的坐标,那么利用该公式,可以求出各条直线②~③、③~④、④~
⑤、⑤~⑥、⑥~⑧中每个点的值了,从而构造出真正的漂移折线。图2为构造漂移折线及基线调
整的完整程序。

图2 基线调整源程序图
图3展示的就是利用这种方法所得到的实验结果,其中上图为去漂移前的脉搏波形,中图为去
漂移后的脉搏波形,下图为漂移折线,从图中可以看出,利用这种方法去除基线漂移效果非常理想。
图3 去基线漂移的效果对照
脉搏波最具代表性的特征点就是降中峡和重博波,在对脉搏波进行特征提取时,这两点确定后,
就可以准确的求出一系列脉搏特征值,从而反映人体生理病理信息。两点的识别可采用二阶导数方
法[6],如图4所示,脉搏的降中峡和重博波可以通过其二阶导数在一个脉搏周期的中间位置对应出
的一对波峰和波谷来标识。

图4 脉搏波及其二阶导数
可是由于脉搏下降支上的波动较多,再加上重博前波的存在,使得二阶导结果中往往会有多个
波峰存在,如图4所示。此时,我们可以利用心脏生理学知识在多个波峰中对应出正确的降中峡。
正常情况下成人的心动周期约为0.8秒,其中约有0.35秒为收缩期,另外0.45秒为舒张期,降中峡
作为收缩期的终点,舒张期的起点,在时间上应该比重搏前波更靠近心动周期的二分之一处。当识
别出两个波峰点时,就对这两个波峰点进行时间上的比较,哪一个最靠近心动周期的二分之一,哪
一个就确定为降中峡对应的波峰。同样,把时间限制的方法引入到降中峡和重博波识别后,现有的
Labview功能无法实现,因此,我们再一次利用了Matlab和Labview混合编程的方法。图5为降中
峡及重博波识别源程序图。
图5 降中峡及重博波识别源程序图
经过对大量不同类型脉象的处理实验表明,利用以上混合编程方法实现的脉搏特征点识别系统
具有速度快、结果准确的特点,图6为脉搏波降中峡和重博波的识别情况。值得一提的是,我们还
可以通过对Matlab代码的修改方便地实现对其他特征点(如重博前波)的识别,这对更加全面的揭
示脉搏信号蕴含的生理信息也非常有意义。特征点确定后,就可以进行脉搏信号特征值的提取,从
而根据特征值反映人体心血管系统的生理病理信息,为相关疾病的预防与诊断治疗提供支持。

图6 脉搏波的降中峡和重博波识别情况
四、结语
在生物医学工程领域中,Labview和Matlab是风靡世界的两种语言,倍受科研工作者和相关程
序开发人员的青睐。本文研究了利用ActiveX自动化技术和Matlab Script节点技术实现Labview和
Matlab混合编程的方法,并以脉搏信号的预处理及特征点识别为实例,说明了将Matlab引入到虚拟
仪器平台下进行生理信号分析是可行的,而且两者的混合编程将会使整个系统的搭建更加方便、快
捷和高效并会使整个系统的功能更加完善且易于扩展。由于Matlab还有很多有特色的、功能强大的
工具箱,所以我们有理由相信,在对更多类型生理信号的分析及识别过程中,Labview和Matlab混
合编程的方法将有更为广泛的应用。
参考文献
[1] 于璐,柳军,沙宪政. 虚拟仪器在脉象采集分析系统中的应用[J]. 医疗设备信息,2007,22(5):10-13.
[2] 柴敬安,廖克俭,潘德辉,等. Labview和Matlab混合编程方法的研究与实现[J]. 计算机测量与控
制,2008,16(5):737-739.
[3] 陈锡辉,张银鸿. Labview 8.20程序设计从入门到精通[M]. 北京:清华大学出版社,2007:296-306.
[4] Michael F. O’Rourke. Time domain analysis of the arterial pulse in clinical medicine[J]. Med Biol Eng
Comput,2009,47(2):119–29.
[5] 孔令锋,谢锡城,卢志远. 矫正心电信号中基线漂移的数字滤波技术及其实现[J]. 中国医疗器械信
息,2003,9(6):12-14.
[6] Korpas D, Hálek J, Dolezal L. Parameters describing the pulse wave[J]. Physiol Res,2009,58(4):473-9.