主要内容

利用深度学习网络标记心电信号的QRS复合体和R峰

此示例演示如何在中使用自定义自动标记函数信号贴标签机用于标记心电图信号的QRS复合体和R峰。一个定制函数使用以前训练过的循环深度学习网络来识别和定位QRS复合体。另一个自定义函数使用一个简单的寻峰器来定位R峰。在这个例子中,网络标记两个信号的QRS复合体,这两个信号完全独立于网络训练和测试过程。

QRS波群由ECG波形中的三个偏移组成,反映心脏左右心室的去极化。QRS也是人类心跳的最高振幅段。对QRS波群的研究有助于评估一个人心脏的整体健康状况和是否存在异常[1].特别是,通过定位QRS复合体中的R峰,并观察连续峰之间的时间间隔,诊断专家可以计算患者的心率变异性,并检测心律失常。

介绍了本实例中的深度学习网络基于深度学习的波形分割,在那里,它使用来自公开可用的QT数据库的心电图信号进行训练[2] [3.].这些数据包括105名患者大约15分钟的心电图记录,采样频率为250赫兹。为了获得每一个记录,检查人员将两个电极放置在病人胸部的不同位置,这就产生了一个双通道信号。该数据库提供由自动专家系统生成的信号区域标签[1].添加的标签使使用数据训练深度学习网络成为可能。

加载,重新采样,并将数据导入信号标签

本例中标记的信号来自MIT-BIH心律失常数据库[4].数据库中的每个信号都以360赫兹的平均频率不规则采样,并由两名心脏病专家进行注释,以验证结果。

加载两个MIT数据库信号,对应记录200和203。将信号重新采样到一个均匀的网格,采样时间为1/250秒,该时间对应于QT数据库数据的标称采样率。

负载mit2001美元=重新取样(ecgsig tm 250);负载mit203y203=重采样(ecgsig,tm,250);

开放信号贴标签机.在贴标签机选项卡上,单击进口并选择从工作空间成员列表。在对话框中,选择信号2000年y203. 添加时间信息:选择时间,并指定抽样率为250赫兹。点击进口然后关闭对话框。信号显示在标记信号集浏览器.通过选择信号名称旁边的复选框来绘制信号。

定义标签

定义要附加到信号的标签。

  1. 为QRS复合物定义一个分类感兴趣区域(ROI)标签。点击添加定义贴标签机选项卡。指定标签名称作为QRSregions,选择一个标签类型ROI,输入数据类型作为明确的,再加2类别,QRS不适用在美国,每条线路都有自己的线路。

  2. 定义的子标签QRSregions作为R峰的数值点标号。点击QRSregions标签定义浏览器来选择它。点击添加定义并选择添加sublabel定义.指定标签名称作为Rpeaks,选择一个唇形,然后进入数据类型作为数字的

创建自定义自动标记函数

创建两个自定义标签功能,一个用于定位和标记QRS复合体,另一个用于定位和标记每个QRS复合体中的R峰。(代码findQRSfindRpeaks函数将在示例的后面出现。)要创建每个函数,请在贴标签机选项卡,展开自动化的价值图库和选择添加自定义函数信号贴标签机显示一个对话框,询问函数的名称、描述和标签类型。

  1. 对于定位QRS复合体的函数,输入findQRS的名字字段和选择ROI随着标签类型.你可以离开描述字段为空,或者您可以输入自己的描述。

  2. 对于定位R峰的函数,输入findRpeaks的名字字段和选择随着标签类型.你可以离开描述字段为空,或者您可以输入自己的描述。

如果您已经编写了函数,并且函数位于当前文件夹或MATLAB®路径中,信号贴标签机将函数添加到库中。如果你没有写函数,信号贴标签机在编辑器中打开空白模板,供您键入或粘贴代码。保存文件。保存文件后,功能将显示在库中。

标记QRS波群和R峰

找到并标记输入信号的QRS波群。

  1. 标记信号集浏览器,选中旁边的复选框2000年

  2. 选择QRSregions标签定义浏览器。

  3. 自动化的价值画廊,选择findQRS

  4. 点击Auto-Label并选择Auto-Label所有信号.在出现的对话框中,输入250采样频率论据字段并单击好吧

信号贴标签机为所有信号定位和标记QRS复合体,但只显示复选框被选中的信号的标签。QRS复合体在绘图和标签查看器轴上以阴影区域的形式出现。通过单击激活平移器淘洗沙金的人显示标签并放大标记信号的区域。

找出并标记与QRS复形对应的R峰。

  1. 选择Rpeaks标签定义浏览器。

  2. 回到贴标签机选项卡。在自动化的价值画廊,选择findRpeaks

  3. 点击Auto-Label并选择Auto-Label所有信号.点击好吧在出现的对话框中。

标签及其数值显示在绘图和标签查看器轴中。

输出标记信号和计算心率变异性

导出标记的信号以比较每个患者的心率变异性。上贴标签机选项卡上,单击出口▼ 选择标记信号设置为文件. 在出现的对话框中,指定名称HeartRates.mat添加到标记的信号集,并添加可选的简短描述。单击出口

回到MATLAB®命令窗口。加载标记信号集。对于集合中的每个信号,计算心率变异性作为连续心跳之间的时间差的标准差。绘制差异的直方图并显示心率变异性。

负载心率nms = getMemberNames(心率);k = 1:心率。NumMembers v = getLabelValues(心脏,k,{“QRSregions”“Rpeaks”}); hr=diff(cellfun(@(x)x.位置,v));子批次(2,1,k)直方图(hr,0.5:0.025:1.5)图例([“hrv = 'num2str(std(hr))])ylabel(nms(k))ylim([06])结束

图中包含2个轴。坐标轴1包含一个直方图类型的对象。该对象表示hrv = 0.18764。坐标轴2包含一个直方图类型的对象。该对象表示hrv = 0.17064。"width=

findQRS功能:查找QRS波群

findQRS函数查找并标记输入信号的QRS复形。

该函数使用一个辅助函数,computeFSST,对输入数据进行整形,并计算傅里叶同步压缩变换(FSST)。你可以选择存储computeFSST在同一目录中的单独文件中,或将其嵌套在其中findQRS在决赛前插入它结束陈述

findQRS使用分类(深度学习工具箱)功能和经过培训的深度学习网络识别QRS区域。深度学习网络输出一个分类数组,将输入信号的每个点标记为属于P区域、QRS复合波、T区域或不属于这些区域。此函数使用signalMask然后丢弃剩下的。这个df参数只选取持续时间大于20个样本的QRS复合体作为感兴趣区域。如果不指定采样率,该函数使用默认值250hz。

函数[labelVals, labelLocs] = findQRS (x, t, parentLabelVal parentLabelLoc,变长度输入宗量)%这是一个模板,用于创建自动标记的自定义函数%x是一个矩阵,其中每列包含对应于%通道。如果通道的长度不同,那么x是一个单元数组%列向量的定义。% t是一个矩阵,其中每一列包含对应于a的时间%的通道。如果通道的长度不同,则t是单元格数组%列向量的定义。%parentLabelVal是与输出关联的父标签值%子标签或当输出不是子标签时为空。% parentLabelLoc在父标签为属性,当父标签是一个ROI或一个点时,ROI限制向量当父标签是一个点时。%labelVals必须是具有数字、逻辑或字符串输出的列向量%值。当输出标签是属性时,% labelLocs必须是一个空向量%两列矩阵的ROI限制时,输出标签是ROI,或一列当输出标签是点时,点位置的%向量。labelVals =细胞(2,1);labelLocs =细胞(2,1);如果nargin<5 Fs = 250;其他的Fs =变长度输入宗量{1};结束df=20;装载(“trainedQTSegmentationNetwork”“净”kj=1:尺寸(x,2)sig=x(:,kj);重塑输入和计算傅里叶同步压缩变换mitFSST=计算温度(sig,Fs);%使用训练过的网络预测哪些点属于QRS区域mitFSST netPreds =分类(净,“MiniBatchSize”, 50);%为QRS区域创建一个信号掩码并指定最小序列长度QRS = categorical([netPreds{1} netPreds{2}]) ',“QRS”);msk = signalMask (QRS,“最小长度”df,“采样器”Fs);r = roimask (msk);%标记QRS复合体作为感兴趣区域labelVals{kj}=r.值;labelLocs{kj}=r.极限;结束labelVals=vertcat(labelVals{:});labelLocs=cell2mat(labelLocs);%如果您想在findQRS中嵌套它,请在这里插入computeFSST。结束

computeFSST功能:重塑输入并计算傅里叶变换

此函数使用fsst函数来计算输入的傅里叶同步压缩变换(FSST)。讨论了在基于深度学习的波形分割,当把每个训练或测试信号的时频图作为输入时,网络的性能最好。FSST产生了一组对循环网络特别有用的特征,因为变换与原始输入具有相同的时间分辨率。功能:

  • 用随机数填充输入数据,并将其重塑为预期的2×5000单元阵列堆栈

  • 指定长度为128和默认形状因子的Kaiser窗口 β 0 5 提供足够的频率分辨率。

  • 在0.5 Hz到40hz的频率范围内提取数据。

  • 将FSST的实部和虚部视为单独的特征。

  • 通过减去平均值并除以标准偏差来规范化数据。

函数[[xd;randn(10000-length(xd),1)/100],5000,2];signalsFsst =细胞(1、2);k=1:2[ss,ff]=fsst(xd(:,k),Fs,kaiser(128));sp=ss(ff>0.5&ff<40,:);signalsfst{k}=标准化([real(sp);imag(sp)],2);结束结束

findRpeaks功能:查找R峰值

这个函数定位的是由findQRS.该函数采用MATLAB®islocalmax函数的绝对值位于的区间内findQRS

函数[labelVals,labelLocs] = findRpeaks(x,t,parentLabelVal,parentLabelLoc,varargin)labelLocs = 0(大小(parentLabelLoc, 1), 1);kj = 1: tval = t>=parentLabelLoc(kj,1) & t<=parentLabelLoc(kj,2);ti = t (tvals);ξ= x (tvals);lc = islocalmax (abs (xi),“MaxNumExtrema”1);labelVals (kj) = xi (lc);labelLocs (kj) = ti (lc);结束结束

参考文献

[1] 多导联ECG信号中波边界的自动检测:CSE数据库验证计算机和生物医学研究。第27卷,第1期,1994年,45-60页。

Goldberger, Ary L., Luis A. N. Amaral, Leon Glass, Jeffery M. Hausdorff, Plamen Ch. Ivanov, Roger G. Mark, Joseph E. miietus, George B. Moody, Chung-Kang Peng,和H. Eugene Stanley。“PhysioBank, PhysioToolkit和PhysioNet:复杂生理信号新研究资源的组成部分”循环。Vol. 21, No. 2, 2000, pp. e215-e220。(循环电子页:http://circ.ahajournals.org/content/101/23/e215.full].

[3]拉古纳、巴勃罗、罗杰·g·马克、阿里·l·戈德伯格和乔治·b·穆迪。”用于评估心电图中QT和其他波形间隔测量算法的数据库。心脏病学中的计算机。第24卷,1997年,673-676页。

[4]穆迪,乔治B,罗杰g马克。" MIT-BIH心律失常数据库的影响"IEEE医学和生物学工程杂志.第20卷第3期,2001年5 - 6月,第45-50页。

另请参阅

应用程序

对象

相关的例子

更多关于