去趋势 PPG 信号

信息处理 Python 过滤
2022-01-31 14:16:04

我正在过滤以 100sps 采样的原始 PPG 信号

应用带通滤波器后,我的信号看起来像这样 有趋势的PPG

如您所见,它有一个趋势(不在所需信号中的低通分量)。我尝试应用高通滤波器,它消除了趋势,但也显着改变了波形。有没有办法在不丢失形状的情况下消除这个信号的趋势?

我正在使用 python 来实现过滤器。这只是信号的一部分,实际信号只有几分钟。我不担心速度,因为这不一定是实时的。

3个回答

我假设您想删除这样的趋势:

在此处输入图像描述

可能某种参数模型可以完成这项工作。
像带有正则化的 2 次多项式这样简单的东西可以很好地估计这一点。

OP提到使用高通滤波器,但这仍然删除了组件。这仅仅意味着高通截止频率太高。

我认为最简单的解决方案是使用指数平均器来提取移动平均线,然后从结果中减去它。

下面是创建指数平均器的简单结构。范围α将修改平均时间,通常是接近 0 的值(但必须大于 0 且小于 1!)。例如 .1, .01, .001 其中 .001 将具有这三个选项中最长的平均时间。从移动平均线的观察中很容易看出哪个值最适合交易移动平均线消除和保持信号特征。

指数平均器

您有一个非常大的偏差,这意味着您所做的每个过滤都会产生强烈的瞬态响应,除非过滤器状态被正确启动。

几个选项:

  1. 如果偏差稳定,您可以简单地将其计算为均值并减去它
  2. 应用“DC 阻断”过滤器。详细信息取决于您的信号长度和感兴趣的频率范围以及您需要保留的时域属性
  3. 正确初始化过滤器状态。https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.lfilter_zi.html#scipy.signal.lfilter_zihttps://docs.scipy.org/doc/scipy/reference/生成/scipy.signal.sosfilt_zi.html#scipy.signal.sosfilt_zi