介绍:
Poincare Plot是HRV非线性分析的一种方法。对于一段连续的心跳间隔,将第i个心跳间隔作为横坐标,第(i+1)个心跳间隔作为纵坐标,在二维平面可以画出如下图形。这些点的分布可以近似为椭圆,椭圆的中心位于(x轴心跳间隔平均值,y轴心跳间隔平均值)确定的坐标点,椭圆的半长轴和半短轴分别为SD1和SD2。
算法推导:
从上图可以看到,SD1和SD2分别由数据点沿着y=x和y=−x+2∗RRI两条直线的离散程度决定,即在这两个方向上数据的方差决定。这样,对原始坐标轴做逆时针45°旋转,旋转后的坐标系中X′方向和Y′方向的数据标准差就是SD1与SD2。
根据线性代数,旋转坐标系相当于对原坐标系下任意一点P(x,y),右乘一个如下的矩阵,
记新坐标系下P的坐标为(x′,y′),
python代码实现:
import numpy as np
import wfdb
import QRSdetectModule
import matplotlib.pyplot as plt
record = wfdb.rdrecord('./test/' + '46', sampfrom=0, smooth_frames=True, ignore_skew=False)
data = record.p_signal[3220114:3295114, 0]
NN1 = []
_, xpeak1, _ = QRSdetectModule.qrs_detector(