matlab读取心电txt数据画图,图解MIT-BIH数据库心电数据下载和Matlab读取程序
開源數據網站PhysioNet(https://physionet.org/)提供了諸如MIMIC、MIT-BIH等豐富的生理信號數據庫,這些數據庫對于人體生理信號的分析、數據挖掘有著非常大的作用。MIT-BIH是由美國麻省理工學院提供用于研究心率失常的數據庫,是目前國際上公認的可作為標準的心電數據庫之一,近年來MIT-BIH數據庫應用比較廣泛。下面以MIT-BIH數據庫為例,介紹在PhysioNet下載生理數據的方法:
一、????? 手動下載
使用提供的PhysioBank ATM (https://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],存儲方式碼。
(2)數據文件[.dat],按存儲,每三個字節存儲兩個數,一個數12bit。
(3)注釋文件[.atr],按二進制存儲。
編寫心電數據讀取和分割matlab程序,一個記錄通常有30分鐘,心電采樣率為360Hz,為了后續分析方便,程序中將讀取出來的數據,以1min為間隔,將數據分段保存在30個txt文檔中,具體代碼如下(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 HEADER 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中
%----------------------------將數據分割成30份,一分鐘一份---------------------------------
for t=1:9
str=num2str(t);
name=['D:\MATLAB仿真\MIT-BTH txt格式\',str,'.txt'];
fid=fopen(name,'wt');
m1=21600*(t-1)+1;
m2=21600*t;
n=2;
for i=m1:1:m2
for j=1:1:n
if j==n
fprintf(fid,'%5.3f\n',M(i,j));
else
fprintf(fid,'%5.3f \t',M(i,j));
end
end
end
fclose(fid);
end
%----------分割最后一段
t=10;
str=num2str(t);
name=['D:\MATLAB仿真\MIT-BTH txt格式\',str,'.txt'];
fid=fopen(name,'wt');
m1=21600*(t-1)+1;
m2=length(M);
n=2;
for i=m1:1:m2
for j=1:1:n
if j==n
fprintf(fid,'%5.3f\n',M(i,j));
else
fprintf(fid,'%5.3f \t',M(i,j));
end
end
end
fclose(fid);
fprintf('完成\n');
總結
以上是生活随笔為你收集整理的matlab读取心电txt数据画图,图解MIT-BIH数据库心电数据下载和Matlab读取程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java高效遍历匹配,使用cypher或
- 下一篇: 基于matlab的卷积码实验报告,基于M