参考:http://physionet.org/tutorials/hrv/#rr-intervals
一. WFDB的安装
WFDB64位版本只支持Matalab2014以上版本。(https://physionet.org/physiotools/matlab/wfdb-app-matlab/)
32位电脑可以下载WFDB的32位版本。(http://www.physionet.org/physiotools/matlab/wfdb-swig-matlab/)
另: 对于ECG,Matlab也有
ecgkit工具箱可以使用。
二. WFDB工具箱中常用的函数
主要用到以下函数:
rdsamp,读取样本数据。
[tm,signal,Fs]=rdsamp(recordName,signaList,N,N0,rawUnits,highResolution)
输出参数:
signal:
读取到的信号数据,N*M双精度矩阵。其中N为数据的长度,M为信号的个数。
tm:
N*1向量,采样数据的间隔。可能代表采样的个数(整数),或者采样的时间。
Fs:(可选)
各个M列信号的采样频率。
必要的输入参数:
recorName:
Physionet远程服务器或者本地目录里面的文件名。
可选的输入参数:
signaList:
M*1列向量。(默认:读取所有的信号。)
N:
读取的数据末尾。
N0:
读取的数据起始。
rawUnits:
时间和数据幅值的精度选项。
highResolution:
true or false,true,表示以高分辨率读取数据记录。
比如读取 Physionet远程服务器里面的Fantasia数据集里面的f2o01记录,可以使用:
[tm,signal,Fs]=rdsamp('fantasia/f2o01', [1 2],1000);
plot(tm,signal(:,2))%绘制ECG数据
plot(tm,signal(:,1),'or')%绘制呼吸信号
rdnn,读取注释文件数据。这里注释文件是指WFDB中以特定的格式存贮的特定信号的文件,比如ECG中的RR间期,QRS复波,P波等。(WFDB中一般以qrs
,ecg
,ann,or atr 后缀命名,如上图fantasia数据集中的ecg注释文件,也可以在下载的数据文件中名为Annotator的txt中查看数据里面包含那些注释。) 如果要创建自己的兼容WFDB的数据文件,请参考置顶网址。
[ann,type,subtype,chan,num,comments]=rdann(recordName,annotator,C,N,N0,type)
输出参数:
ann:
N*1的整型向量,标定annotator在recordName中的位置。
输入参数:
annotator:
注释文件的名称。
比如读取Physionet中的challenge/2013/set-a/01数据集中的第一组前4600个数据,以及注释的fqrs(胎儿r波位置):
[tm, signal]=rdsamp('challenge/2013/set-a/a01',[1],4600);
[ann]=rdann('challenge/2013/set-a/a01','fqrs',[1],4600)
plot(tm,signal(:,1));hold on;grid on
plot(tm(ann),signal(ann,1),'ro','MarkerSize',4)
[ann]=rdann('challenge/2013/set-a/a01','fqrs',[1],4600)
plot(tm,signal(:,1));hold on;grid on
plot(tm(ann),signal(ann,1),'ro','MarkerSize',4)
wrsmp: 把得到的数据写成WFDB支持的格式(.hea,.dat),之后可以用rdnn,ecgpuwave等函数
例如:
[tm,signal]=rdsamp('fantasia/f2o01',[2],10000); %读取fantasia/f2o01 ecg信号里面前10000个数据
[siginfo,Fs]=wfdbdesc('fantasia/f2o01'); %获取fantasia/f2o01信号的物理信息,如采用频率,增益,数据格式
wrsamp(tm,signal,'f2o01Copy',Fs(2),siginfo(2).Gain,siginfo(2).Format) %生成.hea,.dat格式文件
[tm1, signalCopy]=rdsamp('f2o01Copy'); %读取存储的数据文件
err=sum(signalCopy ~= signal) %统计写成.hea,.dat格式文件后的出错个数(这里测试出错,希望大神指教)
类似的还有wrann,把数据写成注释文件的格式。
wfdbexec : 把WFDB自身的命令转换为可以在Matlab中执行的命令,
比如:
out=wfdbexec('rdsamp',{'-r','mitdb/100','-t','s5'})
波形特征提取常用函数:ecgpuwa(提取T波,P波等),sqrs,gqrs(提取QRS复波),ann2rr(提取RR间期)
具体请参阅置顶网址。
波形绘图函数:visgraph等