一、Pan-Tompkins 算法
在心电信号(ECG)处理中,R 波的检测是一个关键步骤,因为它直接影响到心率计算和心律失常的检测。Pan-Tompkins 算法是一种经典的实时 QRS 波检测算法,广泛应用于 ECG 信号处理中。
1.1 信号预处理
ECG 的主要特征波中 QRS 波群的频率范围大致为 0100Hz。ECG 的噪声主要包括工频干扰、基线漂移、肌电干扰及电极移动产生的噪声。基线漂移和电极移动所产生的干扰通常小于 5Hz,工频干扰一般在 50Hz 左右。肌电干扰是由于病人肌肉紧张,产生不规则的高频电干扰所致,表现为不规则的快速变化波形,频率范围宽,一般在 5Hz2kHz 之间。
(1)带通滤波
利用汉明窗设计级联的低通滤波器和高通滤波器,将信号的通带频率限制在 5-15Hz。这一步可以有效去除基线漂移(通常小于 5Hz)和高频噪声(如肌电干扰,频率范围为 5Hz~2kHz)。
(2)微分处理
为了进一步增强 QRS 波的特征,滤波后的信号经过微分处理,提取信号的斜率信息。微分后的信号能够更好地突出 R 波的上升沿和下降沿。
差分方程如公式所示。
其中,N 是积分窗口宽度中的样本数。
(3)平方运算
微分后的信号经过平方运算,进一步增强 R 波的幅度,同时抑制其他低频成分。
(4)滑动窗口积分
通过移动窗口积分(窗口长度为 0.150 秒)对信号进行平滑处理,减少噪声的影响。

其中,N 是积分窗口宽度中的样本数。
1.2 动态阈值检测
动态阈值检测是 Pan-Tompkins 算法的核心部分,其目的是通过自适应阈值来区分 QRS 波群和噪声。
对移动窗口积分后提取预处理之后所有的峰值 C1,取两秒内信号峰值最大值的三分之一作为初始信号阈值 ST1 和信号水平 SL1,取两秒内峰值平均值的二分之一作为初始噪声阈值 NT1 和噪声水平 NL1。同理提取经过滤波器处理后的所有峰值 C2,初始信号阈值 ST2 和信号水平 SL2,初始噪声阈值 NT2 和噪声水平 NL2。判断每个峰值和阈值之间的关系,可分为以下几种情况:
**(1)**当峰值 C1 大于信号阈值 ST1 时,即可认定为 R 波峰,同时依据下列公式更新信号水平 SL1。

**(2)**当峰值 C1 小于信号阈值 ST1 时,对 ST1 进行减半判断,当 C1 大于 0.5ST1 时,即认定为 R 波峰,同时依据下列公式更新信号水平 SL1。

**(3)**当峰值 C1 小于 0.5ST1 时,即认定为噪声峰值,同时依据下列公式更新信号水平 SL1 和噪声水平 NL1。










