开源数据网站PhysioNet(https://archive.physionet.org/)提供了诸如MIMIC、MIT-BIH等丰富的生理信号数据库,这些数据库对于人体生理信号的分析、数据挖掘有着非常大的作用。MIT-BIH是由美国麻省理工学院提供用于研究心率失常的数据库,是目前国际上公认的可作为标准的心电数据库之一,近年来MIT-BIH数据库应用比较广泛。下面以MIT-BIH数据库为例,介绍在PhysioNet下载生理数据的方法:

一、      手动下载

使用提供的PhysioBank ATM (https://archive.physionet.org/cgi-bin/atm/ATM),可以在线地显示选定的数据,并将数据保存为txt或其他的形式。在Database下拉框中选择MIT-BIH Arrhythmia Database:

默认的数据显示长度为10s,用户也可以选择1min、1hour显示。在Toolbox中选择plot waveforms:

在显示的过程中可以点击下面的进度条,选择显示的区间。10s的心电数据显示如下:

在Toolbox中选择Show samples as test可以将显示的波形数据显示为txt格式,最后下载该txt文档即可。注意下面的提醒:如果显示数据过长(大于100000个点),浏览器可能会出现错误。

二、      使用Matlab读取整个数据文件

首先利用Toolbox中将选择的Record打包,并下载:

下载的压缩包有四个文件,分别是.atr、.dat、.hea、.xws格式,主要用到前三个。

MIT-BIH为了节省文件长度和存储空间,使用了自定义的格式。一个心电记录由三个部分组成:

(1)头文件[.hea],存储方式ASCII码字符。

(2)数据文件[.dat],按二进制存储,每三个字节存储两个数,一个数12bit。

(3)注释文件[.atr],按二进制存储。

参考网上读取ECG心电数据的Matlab程序rddata.m(下载地址http://download.csdn.net/source/3383369)

完整的rddata.m 可在https://archive.physionet.org/physiotools/matlab/rddata.m 下载

编写心电数据读取,具体代码如下(Matlab2009编译通过):

clc;
close all;
%------ SPECIFY DATA ------------------------------------------------------
PATH= 'D:\MATLAB仿真\MIT-BIH原始数据'; % path, where data are saved
HEADERFILE= '100.hea';      % header-file in text format
ATRFILE= '100.atr';         % attributes-file in binary format
DATAFILE='100.dat';         % data-file
SAMPLES2READ=660000;         % number of samples to be read% in case of more than one signal:% 2*SAMPLES2READ samples are read
%------ LOAD BINARY DATA --------------------------------------------------
signald= fullfile(PATH, DATAFILE);            % data in format 212
fid2=fopen(signald,'r');
A= fread(fid2, [3, SAMPLES2READ], 'uint8')';  % matrix with 3 rows, each 8 bits long, = 2*12bit
fclose(fid2);M2H= bitshift(A(:,2), -4);          %字节向右移四位,即取字节的高四位
M1H= bitand(A(:,2), 15);            %取字节的低四位
M( : , 1)= bitshift(M1H,8)+ A(:,1); %低四位向左移八位
M( : , 2)= bitshift(M2H,8)+ A(:,3); %高四位向左移八位
M = (M-1024)/200;
%至此两个通道的数据保存在数组中M中

对上述代码说明如下:

(1) rddata.m包含头文件、二进制数据文件和注释文件等读取,上述代码只是截取了读取二进制数据文件的代码片段;其他的代码功能请参考原始rddata.m文件

(2) 如(1)所说的,上述代码只是读取二进制数据文件的代码,因此这两行代码: HEADERFILE= '100.hea';%头文件          ATRFILE= '100.atr';%注释文件,可以删除。只需要保留DATAFILE='100.dat';

其他说明

上述代码效率低下,大家可以根据PhysioNet提供的WFDB工具包(Matlab)进行数据读取。WFDB工具包如何安装及使用可以参考PhysioNet提供的说明:

https://archive.physionet.org/physiotools/matlab/wfdb-app-matlab/

https://physionet.org/content/wfdb-matlab/0.10.0/

安装WFDB工具包后只需要简单调用函数即可,例如:

// 注意文件存放路径,下面的055.dat文件是存放在代码运行目录之下的
[tm,data]=rdsamp('055',[],5000);//读取所有列,每列5000个数据,tm为时间
[tm,data]=rdsamp('055',1,5000);//读取第1列,读取长度为5000个数据
[tm,data]=rdsamp('055',[1;2],5000);//读取第1和2列,每列读取长度为5000个数据
[tm,data]=rdsamp('055',[],[]);//读取所有行所有列数据

图解MIT-BIH数据库心电数据下载和Matlab读取程序相关推荐

  1. matlab读取心电txt数据画图,图解MIT-BIH数据库心电数据下载和Matlab读取程序

    开源数据网站PhysioNet(https://physionet.org/)提供了诸如MIMIC.MIT-BIH等丰富的生理信号数据库,这些数据库对于人体生理信号的分析.数据挖掘有着非常大的作用.M ...

  2. CALIPSO数据下载与MATLAB读取

    目录 官网请求数据 下载方法 MATLAB导入数据 level 2 产品说明+代码:以Feature_Classification_Flags为例 matlab代码重现 level 1 matlab代 ...

  3. TIMIT语音库-----下载和matlab读取

    TIMIT语音库-----下载和matlab读取 在MIT网站可以找到一些样例, 为 16kHz sampling, 16 bit sample, PCM encoding.样例才160个句子,不够用 ...

  4. vivado----fpga硬件调试 (七)----数据导出并用MATLAB读取

    Vivado套件中的Debugger(类似ISE套件中的ChipScope)提供了在本地窗口中查看硬件实时数据的途径,但是无法导出类似ChipScope中的.prn这种文本数据格式,只能通过write ...

  5. matlab批量导入excel表格数据,matlab导入excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    如何用matlab读取多个excel表格数据,将每个表格数... 一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')望高手支招! ...

  6. matlab批量合并表格数据,用matlab合并excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    用matlab如何识别excel里的单元格是否为合并单元格 方法如下: 使用函数xlsread读取单个文件. num=xlsread(filename) filename是单引号括起来的带路径的文件名 ...

  7. matlab读取hea,MIMIC数据库中数据的下载以及MATLAB读取

    一.MIMIC数据库介绍 MIMIC数据库是美国麻省理工提供的一个对公众开放的多参数重症监护数据库,里面提供了诸如心电信号(ECG).光电容积脉搏波信号(Pleth).动脉血压信号(ABP)和呼吸信号 ...

  8. 免疫表位数据库(IEDB)数据下载操作实例

    免疫表位数据库(IEDB)是由美国国立过敏与感染性疾病研究院(NIAID)资助的免费资源. 它记录了在传染病,过敏,自身免疫和移植背景下在人类,非人灵长类动物和其他动物物种中研究的抗体和T细胞表位的实 ...

  9. linux下载sra数据库,NCBI-SRA数据下载的3种方法

    SRA 数据库, 为Sequence Read Archive 的缩写.主要存储高通量测序的原始数据,来自四个测序平台,分别为:Roche_LS454,Illumina,ABI_SOLID和HELIC ...

最新文章

  1. RTEMS 的 AT91SAM9260 移植(5): 调试串口驱动
  2. python 服务监控_python实现监控某个服务 服务崩溃即发送邮件报告
  3. java在控制台打印余弦曲线,java打印正弦曲线示例
  4. 动态规划——最长公共子序列
  5. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十八):kafka0.10.1 内置性能测试API用法示例...
  6. 聚会「AHOI 2008」
  7. 今日你以老师为荣,明日老师以你为荣!
  8. c语言编写面向对象的类
  9. 父类构造函数与子类构造函数的关系
  10. 学生选课管理系统(上)
  11. JS实现2048小游戏
  12. 苹果手机HTML页面滑动卡顿
  13. 求两个数的最大公约数和最小公倍数
  14. Eclipse设置项目编码格式的两种方式
  15. 计算机代码画玫瑰,如何用代码画一朵玫瑰花
  16. java、简单练习题
  17. 调焦后焦实现不同距离成像_调焦与焦距的关系
  18. Git统计一段时间内代码的修改量
  19. oracle 根据出生年份计算生肖
  20. Java 程序员开发常用的工具(全)

热门文章

  1. android蓝牙门禁,BleAgent蓝牙门禁SDK文档
  2. CNV学习2(illumina芯片分析CNV的主流软件------PennCNV)
  3. 黑马程序员_常见异常
  4. javaweb后台管理系统源码
  5. electron内核版本引起的 笔记本And台式电脑的视图兼容性问题(不是浏览器兼容),全网首例!无厘头的问题
  6. Vue模板编译原理详解
  7. 2023年国开《ERP原理与应用》实验1-5学习行为表现
  8. 集线器,路由器,二层交换机和三层交换机的作用和区别
  9. seaweedfs调研
  10. 重装系统后只剩一个C盘的解决方法