MIT-BIH心电数据的绘图方法概述.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MIT-BIH心电数据的绘图方法概述

MIT-BIH心电数据的绘图方法概述 MIT-BIH的数据格式说明 MIT-BIH为了节省文件长度和存储空间,使用了自定义的格式。一个心电记录由三个部分组成: (1)头文件[.hea],存储方式ASCII码字符。 (2)数据文件[.dat],按二进制存储,每三个字节存储两个数,一个数12bit。 (3)注释文件[.art],按二进制存储。 官方演示地址以及文件下载地址: 数据演示地址: /cgi-bin/atm/ATM 数据下载地址: /physiobank/database/mitdb/ 心电数据说明: /physiobank/database/html/mitdbdir/mitdbdir.htm [.hea]为头文件 其由一行或多行ASCII码字符组成。以100.hea为例 100 2 360 650000 100.dat 212 200 11 1024 995 -22131 0 MLII 100.dat 212 200 11 1024 1011 20052 0 V5 # 69 M 1085 1629 x1 # Aldomet, Inderal 第一行从左到右分别代表文件名,导联数,采样率,数据点数; 第二行从左到右分别代表文件名,存储格式,增益,AD分辨率,ADC零值,导联1第一个值,校验数,?(不太清楚,貌似为0的话可以从任意数据块输出,即可以从中间读取任意一段),导联号 第三行代表导联2的信息,同第二行 以#开始的为注释行,一般说明患者的情况以及用药情况等 [.dat]为数据文件 MIT-BIH数据库中的数据存储格式有Format8、Format16、Format80、Format212、Format310等8种,心律失常数据库统一采用212格式进行存储。 “212”格式是针对两个信号的数据库记录,这两个信号的数据交替存储,每三个字节存储两个数据。这两个数据分别采样自信号0和信号1,信号0的采样数据取自第一字节对(16位)的最低12位,信号1的采样数据由第一字节对的剩余4位(作为组成信号1采样数据的12位的高4位)和下一字节的8位(作为组成信号1采样数据的12位的低8位)共同组成。以100.dat为例。 按照“212”的格式,从第一字节读起,每三个字节(24 位)表示两个值,第一组为“E3 33 F3”,两个值则分别为0x3E3和0x3F3转换为十进制分别为995和1011,代表的信号幅度分别为4.975mv和5.055mv,这两个值分别是两个信号的第一采样点,后面依此类推,分别表示了两个信号的采样值。 [.art]为注释文件MIT-BIH数据文件的读取 数据文件[.dat]的读取 数据是由两个信号组成,分别称为是S1和S2;每三个字节存储两个数据,三个字节分别称为B1、B2、B3,数据是以二进制方式存储。组成方式如下图: 算法如下: //将读取的byte数组转化为二维数组,包含[byte.length/3]行,3列 byte[] content = out.toByteArray();// 读取的内容,从内存传至一维数组 int n = 3; // 列 int m = content.length / n; // 行 = 650000 byte[] a = content; // 读出的一维数组,每个元素为一个字节 byte[][] b = newbyte[m][3]; // 变为二维数组,m行3列 for(inti = 0; i m; i++) { for(int j = 0; j 3; j++) { b[i][j] = a[i * 3 + j]; } } // 数据移位,解析DAT文件的212格式 ArrayListIntegersignalOne = new ArrayListInteger(); ArrayListIntegersignalTwo = new ArrayListInteger(); for(inti = 0; i m; i++) { // 第一列屏蔽高24位, int A1i = getUnsignedByte(b[i][0]); // 第2列屏蔽高24位 int A2i = getUnsignedByte(b[i][2]); // 二维数组第二列的低四位0-3位,是第一路信号的高4位,和1111相与, //来获得m1h int m1hi = getUnsignedByte(b[i][1]) 15; // 第二列的4-7位为第二路信号的高4位,右移四位获得,m2h int m2hi = getUnsignedByte(b[i][1]) 4; // m1h左移八位,补到A1的8-11,相与,组成第一路信号,共十二位 int sOnei = (

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档