基于匹配追踪和最大重叠离散小波变换的ECG心电信号R波检测(MATLAB 2018a)

本文主要是介绍基于匹配追踪和最大重叠离散小波变换的ECG心电信号R波检测(MATLAB 2018a),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

准确识别心电信号的R波是进行HRV分析的前提。因此,开发出准确的心电信号R波检测方法十分重要。近几十年来,提出的R峰检测方法主要分为两个阶段。第1阶段是预处理阶段,目的是对受不同噪声影响的原始心电信号进行降噪处理,从而实现增强R峰特征,削弱其他波形的目的。第二阶段为R峰检测阶段,利用决策规则寻找真实的R峰位置。

通常情况下心电信号的频率比较低,而且幅值比较小,在实际的信号采集过程中心电信号容易受到各种类型的噪声的影响,将导致心电信号的形态发生改变甚至波形突变等情况,这将影响对心血管疾病的临床分析和辅助诊断。因此需要对原始心电信号进行降低噪声处理,以减少噪声对心电信号的影响,为后续的心电信号R波检测等工作提供可靠的信号。

基线漂移

基线漂移噪声主要是在心电信号采集过程中,由于佩戴者的呼吸以及身体的运动,导致心电信号采集装置的电极发生滑动。基线漂移在心电图上的表现就是心电信号的基线发生波动,基线不再是水平的,这将影响科研人员对心电信号的特征点进行识别以及后续其他科研工作。基线漂移噪声频率范围一般小于1Hz。

工频干扰

工频干扰噪声是心电信号采集设备产生的一种比较常见的干扰噪音,它是由市电50Hz或60Hz及其谐波分量组成的,其中,国内的市电是50Hz,国外的市电是60Hz。工频干扰噪声导致心电信号的特征点的幅值比较大,这将导致心电信号R波的识别工作受到影响。

肌电噪声

肌电噪声是由于在心电信号采集的过程中,测试者的肌肉神经系统发生颤动或者收缩现象所导致的。因此在实际测量心电信号数据的时候需要注意寻找合适的电极贴片的位置,尽量减小肌电噪声对心电信号质量的影响。肌电噪声的频率范围一般是在5Hz-2000Hz之间。通常情况下,肌电噪声在心电信号上表现为细小的波纹,这将导致心电图峰值和低谷等位置模糊不清,使得心电信号R波的识别变得更加困难。

鉴于此,提出一种基于匹配追踪和最大重叠离散小波变换的ECG心电信号R波检测方法,运行环境为MATLAB 2018a。

function plotExtents(hAxes,x,y,iPk,bPk,bxPk,byPk,wxPk,refW)% compute level of half-maximum (height or prominence)
if strcmp(refW,'halfheight')hm = 0.5*y(iPk);
elsehm = 0.5*(y(iPk)+bPk);
end% get the default color order
colors = get(0,'DefaultAxesColorOrder');% plot boundaries between adjacent peaks when using half-height
if strcmp(refW,'halfheight')% plot heightplotLines(hAxes,'Height',x(iPk),y(iPk),x(iPk),zeros(length(iPk),1),colors(2,:));  % plot widthplotLines(hAxes,'HalfHeightWidth',wxPk(:,1),hm,wxPk(:,2),hm,colors(3,:));% plot peak bordersidx = find(byPk(:,1)>0);plotLines(hAxes,'Border',bxPk(idx,1),zeros(length(idx),1),bxPk(idx,1),byPk(idx,1),colors(4,:));idx = find(byPk(:,2)>0);plotLines(hAxes,'Border',bxPk(idx,2),zeros(length(idx),1),bxPk(idx,2),byPk(idx,2),colors(4,:));else% plot prominenceplotLines(hAxes,'Prominence',x(iPk), y(iPk), x(iPk), bPk, colors(2,:));  % plot widthplotLines(hAxes,'HalfProminenceWidth',wxPk(:,1), hm, wxPk(:,2), hm, colors(3,:));% plot peak bordersidx = find(bPk(:)<byPk(:,1));plotLines(hAxes,'Border',bxPk(idx,1),bPk(idx),bxPk(idx,1),byPk(idx,1),colors(4,:));idx = find(bPk(:)<byPk(:,2));plotLines(hAxes,'Border',bxPk(idx,2),bPk(idx),bxPk(idx,2),byPk(idx,2),colors(4,:));
endhLine = get(hAxes,'Children');
tags = get(hLine,'tag');legendStrs = {};
searchTags = {'Signal','Peak','Prominence','Height','HalfProminenceWidth','HalfHeightWidth','Border'};
for i=1:length(searchTags)if any(strcmp(searchTags{i},tags))legendStrs = [legendStrs, ...{getString(message(['signal:findpeaks:Legend' searchTags{i}]))}]; %#ok<AGROW>end
endif length(hLine)==1legend(getString(message('signal:findpeaks:LegendSignalNoPeaks')), ...'Location','best');
elselegend(legendStrs,'Location','best');
完整代码可通过知乎学术咨询获得:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1
end

图片

图片

图片

图片

图片

图片

图片

工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

这篇关于基于匹配追踪和最大重叠离散小波变换的ECG心电信号R波检测(MATLAB 2018a)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014288

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

poj 3723 kruscal,反边取最大生成树。

题意: 需要征募女兵N人,男兵M人。 每征募一个人需要花费10000美元,但是如果已经招募的人中有一些关系亲密的人,那么可以少花一些钱。 给出若干的男女之间的1~9999之间的亲密关系度,征募某个人的费用是10000 - (已经征募的人中和自己的亲密度的最大值)。 要求通过适当的招募顺序使得征募所有人的费用最小。 解析: 先设想无向图,在征募某个人a时,如果使用了a和b之间的关系

poj 3258 二分最小值最大

题意: 有一些石头排成一条线,第一个和最后一个不能去掉。 其余的共可以去掉m块,要使去掉后石头间距的最小值最大。 解析: 二分石头,最小值最大。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <c

poj 2175 最小费用最大流TLE

题意: 一条街上有n个大楼,坐标为xi,yi,bi个人在里面工作。 然后防空洞的坐标为pj,qj,可以容纳cj个人。 从大楼i中的人到防空洞j去避难所需的时间为 abs(xi - pi) + (yi - qi) + 1。 现在设计了一个避难计划,指定从大楼i到防空洞j避难的人数 eij。 判断如果按照原计划进行,所有人避难所用的时间总和是不是最小的。 若是,输出“OPETIMAL",若

poj 2135 有流量限制的最小费用最大流

题意: 农场里有n块地,其中约翰的家在1号地,二n号地有个很大的仓库。 农场有M条道路(双向),道路i连接着ai号地和bi号地,长度为ci。 约翰希望按照从家里出发,经过若干块地后到达仓库,然后再返回家中的顺序带朋友参观。 如果要求往返不能经过同一条路两次,求参观路线总长度的最小值。 解析: 如果只考虑去或者回的情况,问题只不过是无向图中两点之间的最短路问题。 但是现在要去要回

poj 2594 二分图最大独立集

题意: 求一张图的最大独立集,这题不同的地方在于,间接相邻的点也可以有一条边,所以用floyd来把间接相邻的边也连起来。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <sta

poj 3422 有流量限制的最小费用流 反用求最大 + 拆点

题意: 给一个n*n(50 * 50) 的数字迷宫,从左上点开始走,走到右下点。 每次只能往右移一格,或者往下移一格。 每个格子,第一次到达时可以获得格子对应的数字作为奖励,再次到达则没有奖励。 问走k次这个迷宫,最大能获得多少奖励。 解析: 拆点,拿样例来说明: 3 2 1 2 3 0 2 1 1 4 2 3*3的数字迷宫,走两次最大能获得多少奖励。 将每个点拆成两个

poj 3692 二分图最大独立集

题意: 幼儿园里,有G个女生和B个男生。 他们中间有女生和女生认识,男生男生认识,也有男生和女生认识的。 现在要选出一些人,使得这里面的人都认识,问最多能选多少人。 解析: 反过来建边,将不认识的男生和女生相连,然后求一个二分图的最大独立集就行了。 下图很直观: 点击打开链接 原图: 现图: 、 代码: #pragma comment(