努力实现这个简单的心电图波形描绘算法

信息处理 Python 希尔伯特变换 心电图
2022-02-03 20:05:23

我正在尽力而为,但我的数学还不足以在 python中实现本文中概述的算法。它用于检测心电图上波的开始和偏移,并且使用了一种经过充分验证的方法。

我的数据在一个 numpy 数组中。

它使用的步骤是:

A. 心电图包络的计算

B. 辅助信号的计算

C. 开窗

我想我已经完成了步骤 A:

def calculate_qrs_envelope(self):
    self.hilbert = np.imag(hilbert(self.lead_data['y']))
    self.envelope = np.sqrt(np.add(self.lead_data['y'],self.hilbert))
    self.plot(x=self.lead_data['x'], y=self.envelope, pen='b')

我的数据存储在哪里lead_data['y']

如果我绘制它,它看起来是正确的(我无法在此处显示图片,因为我没有足够的业力)。

而且我有信心我不会与 C 斗争。

然而,B 是困难的。它在论文中说: 在此处输入图像描述

我可以使用简单的导数来计算 AS,如下所示:

def calculate_auxiliary_signal(self):
    self.aux_sig = np.append([0],np.multiply(2,pow(np.diff(self.envelope),2)))
    self.plot(x=self.lead_data['x'], y=self.aux_sig, pen='g')

但是关于抛物线拟合的说法,我不明白该怎么做。

我的采样频率是 100 Hz。

有人能帮我解决这个数学问题吗?这将是一个很大的帮助。

1个回答

我对论文中公开的公式找不到任何意义,但实际上,该表达式只是一个导数近似值,r=r0

xk=110(2(xk+2rxk2r)+(xk+rxkr))yk=2(xk)2

报纸上就是这么说的。

也就是说,您有一个信号,并且您将计算为移动平均线,在当前指数上方和下方取样。xx

对于任何给定的信号,您将能够轻松计算x:x1...xnxy