在单片机上和模糊逻辑检测室性早博_单片机论文
关键词:心电监护 模糊逻辑 数字单片机
现代多参数监护仪普遍采用模块化模块,每个模块都是能完成单功能的独立微处理机系统,多个模块通过串行口接收主控制器命令,送出测量结果。心电监护模块是其中的关键部件,其在单片机控制下拾取心电信号,放大、预处理,并传送给主控模块。
室性早博(pvc)是一种最常见的心律失常,它的实时,正确检测是心电图自动分析的一项重要技术。在心电监护的基础上,加入心博和节律分类功能,便可进行心律失常监护。室性早博检测一般在高端的心律失常分析模块中进行。目前单片机的功能不断增强,过去主要用作控制器的单片机,在完成原来的任务后,尚剩余不少cpu时间和控制功能,完全有可能实现一些过去只能在pc机上运行的复杂算法,而且用汇编语言编程提高运行速度。
模糊系统是模糊集合论和模糊逻辑的具体应用,它模拟人脑思维决策的能力,特别适用于数字模型难以精确表示的不确定系统。医学决策系统中的许多信息都是不确定的,例如心电信号中的大量特片,适合用模糊推理的方法进行处理。笔者的实验室采用模糊逻辑识别室性早博,效果较好。
笔者在基于8051的心电模块中移植上述算法,实现室性早博检测。在模糊单片机上进行模糊控制或推理非常方便。在数字单片机上实现,关键是怎样存储表达隶属度函数和模糊规则,以及怎样实现推理。
1 隶属度函数、模糊规则和模糊推理方法
使用rr间期、r波宽度和面积、t波的面积和峰值这五个形态参数描述一个qrs波。室性早博的典型形态特片表现为rr间期较小,r波宽度大、面积大,t波宽度大、峰值大。经过统计和实验确定的隶属度函数如图1所示。
图1中横轴表示论域,纵轴表示隶属度。每个输入语言变量定义小(s)、中(m)、大(l)、特大(xl)四个语言变量值。隶属度函数为三角形或半梯形。
模糊规则共有32条,部分规则如表1所示。其中17条判决“是pvc”,15条判决“可能是pvc”,--表示不考虑该参数的影响。
表1 模糊规则
rr间期 | r波面积 | r波的宽度 | t波面积 | t波峰值 | 结论 |
xl | xl | -- | -- | -- | 是pvc |
xl | -- | xl | -- | -- | 是pvc |
m | l | xl | xl | l | 是pvc |
m | l | l | xl | l | 是pvc |
… | |||||
l | -- | -- | xl | -- | 可能是pvc |
-- | xl | xl | xl | l | 可能是pvc |
m | -- | -- | xl | l | 可能是pvc |
l | s | m | -- | m | 可能是pvc |
在数字单片机上实现模糊控制一般采用三种方式:强度转移方式、直接查表方式和公式计算方式。直接查表方式通过事先的离线计算,得到一张模糊控制表,将控制表存放在计算机机内存中;控制过程中,根据输入变量查找表中对应的控制量。在一般的控制应用中,这种方法速度最快。但本系统中输入变量较多(5个),模糊控制表维数高,存储、查表均不方便。强度转移方式是按模糊控制的极大-极小法进行推理。每个输入参数映射为多个隶属度,每组输入会激活多条规则,可能对应不同的结果。用取小的原则计算各组合对应规则的输出强度,然后按最大隶属度原则得出对应于各结论的可信度。这样,对于每一个输入,都可得出与各结论相对应的输出强度,称为输出隶属度,取输出强度最大的那个隶属度作为输出。实验结果表明,这种方法对本系统最为合适。
2 强度转移法在单片机8051上的实现
2.1 隶属度函数的存放
由于数字单片机只能存储和处理数字,且单片机的内存容量有限,如果要对系统输入输出论域的所有隶属函数的连续曲线进行存储,是根本不可能的。对于三角形隶属函数,采用三点法,存储三角形的三个顶点;对于两边的半梯形,也存储腰和顶的三点。隶属度函数存放在rom中,如表2所示(仅列出rr,其余类推)。
表2 隶属度函数存放示意图
地 址 | 隶属度函数 | 模糊值 | 模糊变量 | ||
1c00h | 0.0 | 0.8 | 1.0 | s | rr |
1c03h | 0.8 | 1.0 | 1.4 | m | |
1c06h | 1.0 | 1.4 | 2.5 | l | |
1c09h | 1.4 | 2.5 | 3.0 | xl |
2.2 输入模糊化
提取的特片参数是精确值,将它们与隶属函数进行比较组合,求出相应的模糊输入量。隶属度范围为0~1,在8位机上可表示为00h~ffh。对本系统而言,每个精确输入值最多只对应两个模糊输入量大于零,其余的模糊输入量则为零。例如:假设rr=1.1,从表2可知它落在中(m)和大(l)两个区间上,因此对于中(m)和大(l)的隶属度为:
μm(1.1)=(1.4-11.1)/(1.4-1.0)×ffh=bfh
μl(1.1)=(1.1-1.0)/(1.4-1.0)×ffh=3fh
在ram中开辟一块区域,存放各模糊输入量,如表3所示。
表3 模糊输入量存放示意图
地 址 | 隶属度 | 模糊值 | 模糊变量 |
d0h | 00h | s | rr |
d1h | bfh | m | |
d2h | 3fh | l | |
d3h | 00h | xl |
2.3 模糊规则的存放
模糊规则表示为:if a and b and c and d and e then y(or z)
其中“if”后紧接着的词称前件,中“then”后面的词称后件。首先将输入的模糊值s、m、l、xl分别与数字0、1、2、3相对应,即:
rr、ra、rw、ta、th:s=0,m=1,l=2,xl=3
每条规则用三字节表示。第一字节高四位表示第一前件的模糊值,低四位表示第二前件的模糊值;第二字节高四位表示第三前件,低四位第四前件;第三字节高四位表示第五前件,低四位表示后件。其中,f表示不考虑该前件,a表示“是pvc”,b表示“可能是pvc”。以第一条规则(存放在rom中)为例,如表4。
表4 模糊规则存放示意图
地 址 | 数 据 | 意 义 |
1d00h | 33h | 第一条规则第一前件,第二前件 |
1d01h | ffh | 第一条规则第三、第四前件不考虑 |
1d02h | fah | 第一条规则第五前件不考虑,后件为“是” |
2.4 模糊推理和输出
对于一组模糊输入,遍边每一条模糊规则。取第一条规则第一前件(3h)作为地址偏移量,加上模糊输入rr在ram中存放的首地址(40h),则可从ram内rr存放区域中查找出xl的隶属度a1;取第一条规则第二前件(3h)作为地址偏移量,加上模糊输入ra在ram中存放的首地址(44h),则可从ram内存放区域中查找出xl的隶属度b1:依此类推着隶属度c1、d1、e1。根据强度转移法,取a1、b1、c1、d1、e1中最小值作为该规则后件所取的语言变量“是pvc”的隶属度y1。当所有规则都遍历后得到:“是pvc”的属度y1 y2~ym,“可能是pvc”的隶属度z1 z2~zn。取y1 y2~y的最大值作为“是pvc”的隶属度y,取z1 z2~zn的最大值作为“可能是pvc”的隶属度z。如果y<7fh且z<7fh,则输出“正常”;如果y>z,输出“是pvc”;如果z>y,输出“可能是pvc”。
本文讨论了在数字单片机中进行模糊推理的方法,实现在心电监护模块中用模逻辑检测室性早博,使心电监护模块功能得到扩展。室性早博检测结果和心电波形数据一起传给上位机,进行心律失常的进一步分析。