过滤呼吸传感器信号中的混沌噪声

问题描述 投票:0回答:1

我从呼吸传感器(胸带、压电传感器)收到信号,我需要提取(实时)每分钟呼吸值。现在,对于良好稳定的信号来说,这不是一个问题,当意外的噪声进入信号时,例如当参与者开始移动他的躯干和/或手臂时,就会出现问题。简单地消除运动引入的信号是不可能的(例如通过高通/低通滤波器),因为运动信号的至少一部分恰好落入呼吸的预期范围内。 所以我想检测每分钟 5 到 25 次呼吸之间的呼吸频率。或 2.4-12 秒(或 0.42 至 0.083Hz)之间的波长。传感器设置为以 100Hz 采样。

raw 第一个图像(原始)显示原始数据。横轴以刻度为单位(每个 = 0.01 秒)。 正如您所看到的,前 40 秒左右的时间信号还算不错。然后(45 到 60 秒之间)手臂缓慢移动。然后短时间站立不动(65-75秒),然后躯干来回旋转(80-95秒),然后短时间站立不动(95-115秒),最后(115端)双臂和躯干移动的地方(缓慢)。

average 我的第一步是移动平均值(第二张图像 - 平均值)。窗口长 1 秒,重叠 0.5 秒,每 0.5 秒产生一个新的平均值。

我使用峰和谷检测,加上峰/谷的最小尺寸以及新峰/谷与“零”的最小距离,来计算每分钟呼吸次数值。显然,当存在运动时,信号频率会增加,但由于运动引入的至少很大一部分频率落在允许的呼吸频率内,我不知道如何进一步“清理”信号以获得任何运动过程中的频率都更准确。

作为参考,我添加了第三张图像 (prc),其中绘制了每分钟的呼吸次数 processed breath p min

任何建议当然非常欢迎!

马可

我研究了 FFT,但快速浏览似乎表明我的原始信号和平均信号不太适合使用 FFT。它检测到的频率范围很大。 像零交叉这样的替代方法并不能解决这个问题。

c# signals processing frequency
1个回答
0
投票

移动平均线是低通滤波的一种形式,但效果相当差。滤波器设计是一个相当复杂的主题,但您需要考虑频率响应。

这个网站似乎提供了一个很好的工具来计算过滤器内核。 100 个样本的移动平均值将得到如下响应:

通过选择带通或低通滤波器,我们可以创建具有更好看的频率响应(0.1-0.4hz)的滤波器内核:

请注意,我必须降低采样频率才能使计算器生成如此低频率的值,因为如果您想要的最高频率是 0.42hz,则 100hz 采样率是荒谬的过度杀伤力。

这会产生一个带有一堆值的过滤器内核。您可以通过滤波器与信号的卷积在时域中应用此功能。您还可以使用 fft 在频域中完成此操作,这应该更快,但如果您有一个不错的 CPU,则可能有点过大了。

这种类型的有限脉冲响应(FIR)滤波器需要使用(环形)缓冲区,因此输出会被延迟。还有无限脉冲响应滤波器,但我记得很少,除了它们设计起来更复杂之外。如果对此感兴趣,我建议进一步研究。

请注意,简单的过滤可能不足以获得良好的信号。您可能想要尝试检测患者何时移动,而忽略这些期间的所有结果。可能通过观察带通滤波器消除的噪声。您还可以做出“呼吸频率缓慢变化”或“以不同步骤”等假设,以进一步帮助提供更好的过滤/检测。

© www.soinside.com 2019 - 2024. All rights reserved.