热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PhysioNet生理信号处理(三)WFDBToolboxforMatlab的安装和使用方法

本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDBToolboxforMatlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。

PhysioNet是一个由美国国家通用医学科学院(NIGMS)和国家生物医学成像和生物工程院(NIBIB)共同支持的面向科研人员免费提供生理信号库和其处理工具的一个资源网站或者项目。目前项目内容主要分为两个:PhysioBank和PhysioToolkit,也就是生理信号库和处理工具箱。

网站:https://physionet.org/

上一篇我们对整个PhysioToolkit的组织架构和其中一些软件包介绍了,相信小伙伴们迫不及待的要磨拳檫掌,跃跃欲试了吧,这一期就来实际上手。

一、Toolbox的安装

上一期也提到这个,可以将.m函数下载下来添加到Matlab的路径中即可。现在还有一个更简单的办法,在Matlab中直接输入一下内容:

[old_path]=which(‘rdsamp’); if(~isempty(old_path)) rmpath(old_path(1:end-8)); end

wfdb_url=’https://physionet.org/physiotools/matlab/wfdb-app-matlab/wfdb-app-toolbox-0-10-0.zip’;

[filestr,status] = urlwrite(wfdb_url,’wfdb-app-toolbox-0-10-0.zip’);

unzip(‘wfdb-app-toolbox-0-10-0.zip’);

cd mcode

addpath(pwd)

savepath

等待一会儿,WFDB的工具箱将直接下载在Matlab的当前路径中,并产生新的文件夹:

wfdb-app-toolbox-0-9-9

二、测试安装

安装好后我们就可以测试一下运行起来是否有障碍。WFDB给我们提供了两个测试方法:

方法一:运行内置的Demo:

wfdbdemo

方法二:读入一个MIT数据库的生理信号并显示:

[tm,sig]=rdsamp(‘mitdb/100’,1);

plot(tm,sig);

如果两个运行都有figure结果而且没有报错,那么说明工具箱成功安装,鼓掌欢呼!

三、函数说明

前面提到过,WFDBToolbox for Matlab一共有20个函数,我数了一下其实有40多个。因为工具箱里面除了WFDB函数,还有其他工具箱(如ecgpuwave等)中的函数,这对于一个工具箱来说并不算多,我们可以一个个的介绍。

函数列表可以在WFDB Applications Guide中查看:https://physionet.org/physiotools/wag/wag.htm

1.读入生理信号信号及其注释(rdsamp)

[tm,signal,Fs]=rdsamp(recordName,signaList,N,N0,rawUnits,highResolution)

举例:在Matlab中输入以下内容通过rdsamp函数可以读出MITDB信号库中的一个recordName为‘100‘的信号并借助plot函数显示:

-[tm, signal]=rdsamp(‘mitdb/100’,[],1000);

-plot(tm,signal(:,1));

其中,该信号中有两列采集信号,每列长为650000个采样点,所以获得的signal应该是一个2*650000的矩阵。但是可以在函数输入可选项:

SignalList:选择其中某列信号读入,输入为空默认为全部列,此处就是默认全部;

N:需要读入信号的长度,本身信号长为650000,此处只截取了其中1000长度;

N0:截取信号开始的采样点,此处默认为1,也就是截取了信号的1–1000采样点;

rawUnits:信号读入信号值需要的精度,具体请看帮助;

highResolution:信号分辨率,1为高,0为低,默认为0

最终结果为:

《PhysioNet生理信号处理(三)--WFDB Toolbox for Matlab》 Figure1.MIT生理库记录名为‘100’信号的第一列前1000采样信号

其实这个示例程序就是rdsamp函数帮助文件中的一个示例程序,学会用Matlab的help函数,对于学习Matlab来说可以起到事半功倍的效果。一来我们可以看到我们要查看函数的所有信息和示例用法,直接copy粘贴在Matlab中就可以看到效果;而来我们可以用来检验该函数是否已经添加在PATH中。

2.读入注释信息文件(rdann)

[ann,type,subtype,chan,num,comments]=rdann(recordName,annotator,C,N,N0,type)

举一个rdann读入注释信息函数的例子:

-[tm, signal]=rdsamp(‘challenge/2013/set-a/a01’);

-[ann]=rdann(‘challenge/2013/set-a/a01′,’fqrs’);

-plot(tm,signal(:,1));hold on;grid on

-plot(tm(ann),signal(ann,1),’ro’,’MarkerSize’,4)

本程序首先用rdsamp函数读入‘challenge’信号库中的命名为‘a01’的全部信号,再用‘rdann’函数读入与之对应的注释信息,类型为‘fqrs’,也就是QRS出现的位置,最后由plot显示所读入的信号和注释信息,如下图:

《PhysioNet生理信号处理(三)--WFDB Toolbox for Matlab》 Figure2.’Challenge’生理库中命名为‘a01’信号及其QRS注释信息

图2中我们发现ECG信号显得很密集,因为我们没有选着读入信号的某些采样而是全部60000个采样点。其中红色的圆点就是注释文件中标注QRS出现的地方。其实注释信息我们可以通过一些算法求出来的,但是既然生理库中已经给出我们就可以直接用,而且他们官方的肯定经过矫正很准确的,既方便也有保证,直接拿来用何乐不为?另外如果我们想自己开发检测QRS或者R,可以将自己得到的结果和官方的注释信息对比,看看自己算法的准确率。

这一篇虽然只介绍了WFDB Toolbox for Matlab工具箱中两个简单的读入信号的函数,但是学会了使用和查看帮助文档的方法其他的函数也就很简单了。因为我们不是所有的函数都要用到,所以当遇到需要的函数在学习就好了,简单高效!

读入文件是第一步,对生理信号进行处理和有用信息提取才是重点,以后有机会我会介绍一些常用的方法以及在自己项目中用到的方法。


推荐阅读
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
author-avatar
万花_筒乙姬睦美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有