热门标签 | 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工具箱中两个简单的读入信号的函数,但是学会了使用和查看帮助文档的方法其他的函数也就很简单了。因为我们不是所有的函数都要用到,所以当遇到需要的函数在学习就好了,简单高效!

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


推荐阅读
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
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社区 版权所有