光电容积脉搏波PPG信号分析笔记

1.脉搏波信号的PRV分析

各类分析参数记参数 意义

公式

参数意义

线性分析

时域分析

均值MEAN

反应RR间期的平均水平

总体标准差SDNN

评估24小时长程HRV的总体变化,

SDNN < 50ms 为异常,SDNN>100ms 为正常;

均值标准差SDANN

反应HRV中的慢变化成分,异常分界点是40ms。

标准差均值SDNNindex

反应短程(5min)心率的平均变异程度其正常值是81±24ms,异常分界点是 20ms;

差值均方的平方根r-MSSD

反映HRV中的快变化成分

相邻间期差值>50ms的百分比(PNN50)

反应RR间期的突然变化,能敏感反应迷走神经的活动。正常分界点为75%.

昼夜差值

反映平均心率的指数,它是夜间平均 RR 间隔与白天平

均 RR 间隔的差值,这个指数在正常人身上是正值。

NN50

是全部 RR 间期中相邻的 NN 间 期差大于50ms 的心数,数值越大表明心率变异性愈大。

几何图形

R间期值直方图

反映RR间期的分布情况,横坐标表示RR间期,纵坐标表示RR间期的个数。直方图能较直观反映出RR间期变化的范围及程度,对于正常心率的直方图,一般RR间期在400~100ms之间总心拍比例较大,峰值较突出,与其相应的指标有:SDNN,三角指数,TIRR。

1:三角指数 triangular index)是NN间期总数除以占比例最大的NN间期数,直方图的外形愈宽则三角指数的绝对值愈大,表示心率变异性大,反之偏小;

2:TIRRtriangular interpolation of RR int ernal)是全部RR间期的直方图以峰值为高的近似三角形底边的宽度,其意义与三角指数相同。

RR间期差值直方图

反映RR间期差异即窦性心律不齐的程度。它是以窦性心搏RR间期长度的差为横坐标,中点为0。后一个RR间期比前个长时,差值为正数;反之,差值为负数。纵坐标为心搏次数。与其相应的指标有: rmSSD,SDSD,PNN50

Lorenz散点图

以前一心拍RR间期为横坐标,后一心拍RR间期为纵坐标点,依标类推,X轴为RRn,Y轴为RRn+1,定各自的心搏点,构成RR间期散点图。散点图中包含了HRV的线性和非线性的变化趋势,正常人的散点图多集中在45度射线附近,呈彗星状。可通过散点图分析,了解受试者自主神经功能状态。

频域分析

VLF极低频段(0.0033-0.04hz)的功率

机制不明。可能是与体温调节、肾素血管紧张素系统级体液因子等因素有关的长期的调节机制 有关

LF低频段(0.04-0.15hz)的功率

解释仍然有争议,但是大多数学者认为它是交感神经活动的标志

HF高频段(0.15-0.4hz)的功率

由迷走神经介导,代表呼吸变异

TP信号总功率

信号总的变异性

LF/HF

量化交感神经和迷走神经张力的平衡状态

非线性分析

分型维数FD

功率谱指数

近似熵ApEn

复杂性测度

摘自:心率变异性分析方法的研究进展_王步青,心率变异性的分析方法和应用_刘晓芳

2.采样频率对 PRV 提取方法的影响

信号采样频率的改变会引起脉搏信号主波位置的变化,使提取的 PRV 产生误差。讨论采样频率变化对各方法提取 PRV 信号准确性的影响,找出对采样频率变化不敏感的 PRV 提取方法,对 PRV 信号的准确提取十分重要。

将图 3.13 所示采样频率为 500Hz 的干净仿真脉搏信号,进行降采样,分别降为 250Hz,100Hz,50Hz,25Hz,10Hz 和 6Hz。然后,采用各 PRV 提取方法提取不同采样频率下的脉搏信号中的 PRV 信号,与 TPRV 信号比较,计算它们之间的 MSE,用于评价采样频率变化对 PRV 提取方法的影响。

对于不同采样频率下的脉搏信号,由于其中不含噪声,各方法的主波检测准确率 Ac=100%。且随着采样率的降低方法的耗时也在减短。而对于 MSE 变化,如表 3.3 所示,随着采样频率的降低,MSE 在逐渐增加。动态差分阈值法、数学形态学法和自适应幅度阈值法的 MSE 变化趋势相同,由原来 MSE=0 变为0.101,增幅最大。而其它方法的增幅较小,虽然对于采样频率大于 20Hz 脉搏信号中提取的 PRV 信号,其 MSE 比前三种方法大,但其增幅小,说明 MSE 值大是算法本身因素造成的,采样频率的变化对其影响较小。所有方法中,滑窗迭代 DFT(IF)法的 MSE 增幅最小,当采样频率为 6Hz 时,MSE=0.039,误差最小。滑窗迭代DFT(IF)法提取 PRV 信号如图 3.17 中子图 b)所示,相比于动态差分阈值法提取的 PRV 信号,如图 3.17 中子图 a)所示,滑窗迭代 DFT(IF)法提取的 PRV 信号与 TPRV 信号误差最小,受采样频率变化影响较小。

因为滑窗迭代 DFT(IF)法从脉搏基波信号的瞬时频谱中提取 IPRV 信号,其分辨率很高,即使采样频率很低,其仍含有脉搏搏动的信息。而动态差分阈值法、数学形态学法和自适应幅度阈值法以主波检测为基础,滑窗迭代 DFT(基波)法以脉搏信号基波的峰值检测为基础,HHT(IMF)法以 IMF 分量的峰值检测为基础。这些方法都从信号的波形形态中提取 PRV 信号,信号采样频率对脉搏信号波形影响较大,特别是采样频率较小时,使得检测的 PRV 信号与 TPRV 信号间误差很大。虽然 HHT(IF)法也是从频域提取 PRV 信号,其在脉搏信号采样频率大于 10Hz 时,提取 PRV 信号误差一直小于滑窗迭代 DFT(基波)法。可当采样频率继续降低时,提取 PRV 信号误差急剧增加,这是由于 EMD 分解时发生了模态混叠,使获得 IMF 分量含有的主波成分丢失,使提取的 PRV 信号发生失真。

综上所述,对于直接检测脉搏信号主波位置的动态差分阈值法、数学形态学滤波法和本文提出的自适应幅度阈值法,动态差分阈值法对噪声敏感,抗噪性差;数学形态学法耗时较长;相比于这两种方法,自适应幅度阈值法的抗噪性强,实时性高。同时,这三种方法在提取 PRV 信号之前,需要对脉搏信号进行滤波,减少噪声和干扰对脉搏信号主波检测的影响。

对于滑窗迭代 DFT(基波)法和 HHT(IMF)法,其采用含有主波成分的分量信号替代脉搏信号实现 PRV 检测。在没有噪声污染或噪声分布均匀时,EMD分解可以自适应地得到反映主波间期变化的 IMF 分量,从该 IMF 分量提取的 PRV信号比从滑窗迭代 DFT 法得到的基波分量中提取的 PRV 准确性高。但当脉搏信号信噪比降低或噪声分布不均匀时,EMD 分解会产生模态混叠现象,得到的 PRV信号误差很大。同时,EMD 分解过程的反复循环使该方法耗时很长。相比之下,滑窗迭代 DFT 法采用频率分离的方式得到基波信号,并从中提取 PRV 信号,该方法抗噪性强,计算速度快,实时性高。

对于滑窗迭代 DFT(IF)法和 HHT(IF)法,从频域提取 IPRV 信号,比 PRV信号时间分辨率高。滑窗迭代 DFT(IF)可以在低采样频率下(fs=6Hz),准确地提取 PRV 信号。HHT(IF)虽然在低采样频率时发生模态混叠,使得到的 PRV信号误差较大,但在高采样频率时,提取 PRV 信号准确性比滑窗迭代 DFT(IF)法高。就算法实时性而言,滑窗迭代 DFT(IF)法比 HHT(IF)耗时少。但相比滑窗迭代 DFT(基波)和自适应幅度阈值法,耗时仍然很长。

对于动态脉搏信号,从中实时地提取 DPRV 信号,要求 PRV 提取方法准确性和实时性兼顾。通过分析各方法的优缺点,考虑实际脉搏信号信噪比不定,同时,为了保留更多有效信息需要保持较高采样频率等因素,本文采用滑窗迭代 DFT(基波)法从动态脉搏信号中提取 DPRV 信号。

摘自:动态脉搏信号检测与脉率变异性实时分析方法研究_丑永新 博士论文

3.峰谷值查找方法1

摘自:Adaptive threshold method for the peak detection of photoplethysmographic waveform

4.峰谷值查找方法2

摘自:容积脉搏成像特征提取方法研究及在生理信号检测的应用

5.峰谷值查找方法3

本文开发了一种稳健算法,主要使用PPG衍生物、曲线三角面积(TAOC)、斜率反转和基于时域的轻量级方法的新组合,以揭示PPG开始和收缩峰的精确位置。

摘自:Efficient and lightweight detection of PPG onset and systolic peaks using implementable time-domain strategies

6.最新(2024)关于PPG信号分析综述类文章

Photoplethysmogram Analysis and Applications:An Integrative Review

7.脉搏波呼吸波峰值点查找方法matlab实现汇总

7.1:hilbert方法


nGzLen = length(Signal);
nGzX = 1:nGzLen;
t=nGzX/fs;

x=(Signal);
nt=t;
Hx=hilbert(x);              % 希尔伯特变换  

% 作图
figure;
plot(nt, x, 'k', nt,abs(Hx), 'r');
grid; legend('信号', '包络');
xlabel('样点'); ylabel('幅值')
title('信号和包络---hilbert方法')
set(gcf, 'color', 'w');

7.2:极值方法

 极值方法
x=detrend(Signal);%去直线 基频 看帮助文档
[K1,V1]=v_findpeaks(x,'q',30); % 求极大值位置和幅值
%up=spline(K1,V1,t);          % 内插,获取上包络曲线
[K2,V2]=v_findpeaks(x,'v',30);% 求极小值位置和幅值
%down=spline(K2,V2,t);        % 内插,获取下包络曲线

up = interp1(K1/fs,V1,t, 'pchip'); %分段三次hermite
down = interp1(K2/fs,V2,t,'pchip'); 
amp=up-down;
Vamp=V1(2:end)-V2;
Vinx=(K1(2:end)+K2)/2;
amp2 = interp1(Vinx/fs,Vamp,t,'linear'); 

figure;
subplot(2,1,1);
% plot(t,CO2_1,'b'); 
% hold on;
plot(t,x,'k'); 
hold on;
grid;

plot(K1/fs,V1,'r*');
hold on 
plot(K2/fs,V2,'r*');
hold on 
plot(t,up,'r');
hold on 
plot(t,down,'r');
hold on 
xlabel('样点'); ylabel('幅值');
title('用求取极大极小值方法获取包络曲线图   极值方法')
set(gcf,'color','w');

subplot(212)
plot(t,amp,'b');
hold on 
grid on 
plot(t,amp2,'r');
hold on 
plot(Vinx/fs,Vamp,'r*');
hold on 

7.3:envelope取包络方法

x=detrend(Signal);%去直线 基频 看帮助文档
[up,down] = envelope(t,x,'pchip');% 分段三次hermite

amp=up-down;

% 作图
figure;
subplot(2,1,1);
plot(t,x,'k',t,up,'r',t,down,'g');
xlabel('样点'); ylabel('幅值'); grid;
title('调用envelope函数求取上下包络曲线图')
set(gcf,'color','w');

subplot(2,1,2);
plot(t,amp,'g');
xlabel('样点'); ylabel('幅值'); grid;
title('幅度')
set(gcf,'color','w');

7.4:平方后低通方法

平方后低通方法
CO2_pow2=power(Signal,2);
DEN=[1,-7.79606779210506,26.5932120482461,-51.8404844176109,63.1666773411061,-49.2637313165491,24.0152170393195,-6.69032514934920,0.815502246948220];
NUM=[2.21680664897793e-14,1.77344531918235e-13,6.20705861713822e-13,1.24141172342764e-12,1.55176465428455e-12,1.24141172342764e-12,6.20705861713822e-13,1.77344531918235e-13,2.21680664897793e-14];

filterdata=filter(NUM,DEN,CO2_pow2);%低通2hz iir butterworth 400采样率

filterdata1=sqrt(filterdata./0.5);
figure;
subplot(211);
plot(CO2_pow2);
grid on 
hold on ;
subplot(212);
plot(filterdata1, 'b');
grid on 
title('平方后低通方法');

7.5:EMD方法


[imf,residual,info]=emd(Signal,'INTERP','spline' );

figure;

title('emd方法');

subplot(4,1,1);
plot(imf(1,:));
grid on ;

subplot(4,1,2);
plot(imf(2,:));
grid on ;

subplot(4,1,3);
plot(imf(3,:));
grid on ;

subplot(4,1,4);
plot(imf(4,:));
grid on ;


figure;
subplot(4,1,1);
plot(imf(5,:));
grid on ;

subplot(4,1,2);
plot(imf(6,:));
grid on;

subplot(4,1,3);
plot(imf(7,:));
grid on ;

subplot(4,1,4);
plot(imf(8,:));
grid on ;


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/451146.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

灵魂指针,教给(三)

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 目录 一、 字符指针变量 二、数组指针变量 2.1 数组指针变量是什么 2.2 数组指针变量如何初始化 三、二维数组传参本质 四、函数…

如何在Linux系统安装SVN并配置固定公网地址远程访问【内网穿透】

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

qsort函数

目录 1.qsort函数是什么 1.1qsort函数的原型 2.qsort函数的使用 2.1使用qsort函数排序整型数据 2.2使用qsort排序结构数据 3.qsort函数的模拟实现 1.qsort函数是什么 很多小伙伴们都没有听说过qsort这个函数,qsort函数是C语言标准库中的一个排序函数&#xf…

前端精准测试调用链路分析

精准测试在评估需求的测试范围时,需要评估一下代码的影响范围,这个范围有两部分:一是需求直接修改的代码;二是修改代码影响到的功能模块。代码影响到的功能一般是通过调用链路分析来实现的,java和kotlin代码可以由java…

【Java从入门到精通】Java异常处理

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么…

每日OJ题_路径dp②_力扣63. 不同路径 II

目录 力扣63. 不同路径 II 解析代码 力扣63. 不同路径 II 63. 不同路径 II 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(…

week06 day04 (数据库高级函数 procedure 、sql写函数)

一. ER模型 矩形: 代表实体椭圆:代表实体的属性菱形:relation 代表实体之间的关系 二. 存储过程(procedure) 1. 语法 语法: create procedure 存储过程名(参数,…) begin//代码 end// 注意: 因为在存储…

C语言 —— 图形打印

题目1: 思路: 如果我们要打印一个实心正方形,其实就是一个二维数组,i控制行,j控制列,行列不需要控制,arr[i][j]直接打印星号即可。 对于空心正方形,我们只需要控制行和列的条件&…

MyBatis学习笔记|2024最新版Mybatis

Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于“internet”和“aba…

应对电子邮件危害:垃圾邮件的特征、影响和预防策略

垃圾邮件是一种侵入性的未经请求的电子通信形式,主要通过电子邮件传播。它将大量无关、欺骗性或恶意内容发送给邮箱用户,内容涵盖令人讨厌的广告和欺诈行为、以及网络钓鱼链接。 截至 2022 年 12 月,垃圾邮件占电子邮件流量的 45% 以上。除了…

数据结构---C语言栈队列

知识点: 栈: 只允许在一端进行插入或删除操作的线性表,先进后出LIFO 类似一摞书,按顺序拿,先放的书只能最后拿; 顺序栈:栈的顺序存储 typedef struct{Elemtype data[50];int top; }SqStack; SqS…

Window部署Oracle并实现公网环境远程访问本地数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…

掌握Redis,看完这篇文章就够了!

目录 1.Redis介绍 2.Redis服务器与客户端 3.Redis配置文件 4.Redis数据类型操作 4.1使用python连接数据库 4.2 字符串 4.3 哈希 4.4 键对应操作 4.5 列表 4.6 集合 4.7 有序集合 1.Redis介绍 Redis 是一个开源的内存数据库,它提供了一个高性能的 key-val…

基于PyTorch深度学习实战入门系列-Numpy基础全

Numpy的使用 导入Numpy模块 import numpy as np创建数组(一维数组、小数数组、二维数组) # 创建一个一维数组 n1 np.array([1, 2, 3]) # 创建一个含有小数的一维数组 n2 np.array([0.1, 0.2, 0.3]) # 创建一个简单的二维数组 n3 np.array([[1, 2], [3…

基于Java+SpringBoot+vue+element实现前后端分离牙科诊所管理系统详细设计

基于JavaSpringBootvueelement实现前后端分离牙科诊所管理系统详细设计 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 ** 作者主页 央顺技术团队** 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式…

【阿里云系列】-基于云效构建部署NodeJS项目到ACK

准备工作 01、编写Dockerfile文件可以根据不同的环境,新建不同的Dockerfile文件,比如Dockerfile-PROD # Deliver the dist folder with NginxFROM nginx:stable-alpine ENV LANGC.UTF-8 ENV TZAsia/ShanghaiCOPY dist/ /usr/share/nginx/html COPY ngi…

字节跳动也启动春季校园招聘了(含二面算法原题)

字节跳动 - 春招启动 随着各个大厂陆续打响春招的响头炮,字节跳动也官宣了春季校园招聘的正式开始。 还是那句话:连互联网大厂启动校招计划尚且争先恐后,你还有什么理由不马上行动?! 先来扫一眼「春招流程」和「面向群…

怎么恢复删除的文件?三个实用数据恢复方法分享

在日常工作和生活中,我们经常会遇到误删文件的情况,这可能会带来不小的麻烦。幸运的是,随着科技的发展,现在有很多方法可以帮助我们恢复被删除的文件。下面让我来分享三种常用的文件恢复方法,一起来看看吧!…

【Springboot】--如何将springboot+vue项目部署到云服务器?

目录 一、准备工作 1、购买云服务器 2、获取面板地址 二、jdk和数据库 1、安装环境 2、配置jdk环境变量 3、java版本的问题 4、添加数据库 三、前端部署 1、vue 2、创建站点 ​编辑 四、后端部署 1、application.yml 2、idea打包 3、运行jar包 4、开放端口 五、…

大模型时代下的 BI——智能问数

「智能问数」是 Sugar BI 基于文心大语言模型推出的对话式数据问答产品,让用户能够通过自然语言的方式进行对答形式的数据查询,系统自动使用可视化图表的方式呈现数据结果,并支持对数据做summary总结。 智能问数功能邀测中,欢迎CS…