資源簡介
rddata.m -- MIT-BIH ECG 信號的數據讀取Matlab程序.m
代碼片段和文件信息
%?This?programm?reads?ECG?data?which?are?saved?in?format?212.
%?(e.g.?100.dat?from?MIT-BIH-DB?cu01.dat?from?CU-DB...)
%?The?data?are?displayed?in?a?figure?together?with?the?annotations.
%?The?annotations?are?saved?in?the?vector?ANNOT?the?corresponding
%?times?(in?seconds)?are?saved?in?the?vector?ATRTIME.
%?The?annotations?are?saved?as?numbers?the?meaning?of?the?numbers?can
%?be?found?in?the?codetable?“ecgcodes.h“?available?at?www.physionet.org.
%
%?ANNOT?only?contains?the?most?important?information?which?is?displayed
%?with?the?program?rdann?(available?on?www.physionet.org)?in?the?3rd?row.
%?The?4th?to?6th?row?are?not?saved?in?ANNOT.
%
%
%??????created?on?Feb.?27?2003?by
%??????Robert?Tratnig?(Vorarlberg?University?of?Applied?Sciences)
%??????(email:?rtratnig@gmx.at)
%
%??????algorithm?is?based?on?a?program?written?by
%??????Klaus?Rheinberger?(University?of?Innsbruck)
%??????(email:?klaus.rheinberger@uibk.ac.at)
%
%-------------------------------------------------------------------------
clc;?clear?all;
%------?SPECIFY?DATA?------------------------------------------------------
%------?指定數據文件?-------------------------------------------------------
PATH=?‘H:\比賽\數據1‘;?%?指定數據的儲存路徑
HEADERFILE=?‘100.hea‘;??????%?.hea?格式,頭文件,可用記事本打開
ATRFILE=?‘100.atr‘;?????????%?.atr?格式,屬性文件,數據格式為二進制數
DATAFILE=‘100.dat‘;?????????%?.dat?格式,ECG?數據
SAMPLES2READ=2048;??????????%?指定需要讀入的樣本數
????????????????????????????%?若.dat文件中存儲有兩個通道的信號:
????????????????????????????%?則讀入?2*SAMPLES2READ?個數據?
%------?LOAD?HEADER?DATA?--------------------------------------------------
%------?讀入頭文件數據?-----------------------------------------------------
%
%?示例:用記事本打開的117.hea?文件的數據
%
%??????117?2?360?650000
%??????117.dat?212?200?11?1024?839?31170?0?MLII
%??????117.dat?212?200?11?1024?930?28083?0?V2
%??????#?69?M?950?654?x2
%??????#?None
%
%-------------------------------------------------------------------------
fprintf(1‘\\n$>?WORKING?ON?%s?...\n‘?HEADERFILE);?%?在Matlab命令行窗口提示當前工作狀態
%?
%?【注】函數?fprintf?的功能將格式化的數據寫入到指定文件中。
%?表達式:count?=?fprintf(fidformatA...)
%?在字符串‘format‘的控制下,將矩陣A的實數數據進行格式化,并寫入到文件對象fid中。該函數返回所寫入數據的字節數?count。
%?fid?是通過函數?fopen?獲得的整型文件標識符。fid=1,表示標準輸出(即輸出到屏幕顯示);fid=2,表示標準偏差。
%
signalh=?fullfile(PATH?HEADERFILE);????%?通過函數?fullfile?獲得頭文件的完整路徑
fid1=fopen(signalh‘r‘);????%?打開頭文件,其標識符為?fid1?,屬性為‘r‘--“只讀”
z=?fgetl(fid1);?????????????%?讀取頭文件的第一行數據,字符串格式
A=?sscanf(z?‘%*s?%d?%d?%d‘[13]);?%?按照格式?‘%*s?%d?%d?%d‘?轉換數據并存入矩陣?A?中
nosig=?A(1);????%?信號通道數目
sfreq=A(2);?????%?數據采樣頻率
clear?A;????????%?清空矩陣?A?,準備獲取下一行數據
for?k=1:nosig???????????%?讀取每個通道信號的數據信息
????z=?fgetl(fid1);
????A=?sscanf(z?‘%*s?%d?%d?%d?%d?%d‘[15]);
????dformat(k)=?A(1);???????????%?信號格式;?這里只允許為?212?格式
????gain(k)=?A(2);??????????????%?每?mV?包含的整數個數
????bitres(k)=?A(3);????????????%?采樣精度(位分辨率)
????zerovalue(k)=?A(4);?????????%?ECG?信號零點相應的整數值
????firstvalue(k)=?A(5);????????%?信號的第一個整數值?(用于偏差測試)
end;
fclose(fid1);
clear?A;
%------?LO
評論
共有 條評論