加速度计信号分割

Igo*_*gor 5 signals pattern-recognition accelerometer

替代文本

我有一个一维加速度计信号(仅一个轴)。我想创建一个强大的算法,它能够识别信号中的某些形状。

首先,我对原始信号应用移动平均滤波器。在附图中,原始信号为红色,平均信号为黑色。从图中可以看出,从平均(黑色)信号中可以看到一些趋势 - 该信号包含 10 次类似峰值模式的重复,其中加速度攀升至最大值,然后又下降。我用十字标记了这些模式的开始和结束。

所以我的目标是自动找到标记的位置。导致模式提取困难的问题是:

  • 模式开头的 y 值可能与模式结尾的不同
  • 该模式可能有多个峰值
  • 我没有任何具体的时间信息(从模式的开始到结束需要一个时间单位)

我尝试过不同的方法,这些方法几乎都是自制的,所以我不会提及它们 - 我不想让你因为我的思维方式而产生偏见。是否有一些标准或书本方法来进行这种模式提取?或者也许有人知道如何以稳健的方式解决这个问题?

任何想法将不胜感激。

mjv*_*mjv 2

把事情简单化!
看来移动平均线是一个足够好的阻尼装置;保持原样,如果您注意到它分别留下太多噪声或去除太多信号,则可能只增加或减少其样本计数。然后,您专门处理该平均信号。

您寻找的模式标记似乎相对容易检测。这些标记用英语表示为:
目标 =平均读数曲线中的拐点,此时斜率明显从负值变为正值。
因此,当每个新的读数值可用时,您应该能够通过比较与移动平均值一起计算的斜率值来检测这种情况(当然会有短暂的延迟,因为给定点的斜率当然只能是当下一个[几个]点[s]的平均读数可用时计算)

然而,为了避免错误检测,您需要定义一些旨在过滤不需要的模式的参数。这些参数将更精确地定义上述目标定义中“显着”的含义。

检测兴趣点的公式暂时可以像这样简单
    (-1 * S (t-1) + St t ) > Min_delta_Slope
其中
S 分别是时间 t-1 和 t 时的斜率(更多内容)
Min_delta_Slope 是一个参数,定义我们希望的斜率变化最小的“急剧”程度。
假设标准化 t 和 Y 单位,我们可以将 Min_delta_Slope 参数设置为接近甚至超过 1。直观上,值 1(同样采用标准化单位)将表明我们的目标点是曲线“到达”的向下坡度为 50 的点% 并以 50% 的向上坡度离开该点(或 40% + 60% 或 .. 10% 即几乎平坦,90% 即几乎垂直)。
为了避免在曲线上只是一个小倾角的情况下检测点,我们可以考虑更多的点,使用一个更奇特的公式,例如

    (Pm2 * S (t-2) + Pm1 * S (t-1) + P0 * St t + Pp1 S (t+1) ) > Min_delta_Slope
其中
Pm2、Pm1、P0 和 Pp1 是赋予斜率相对重要性的系数在兴趣点之前和之后的不同点。(Pm2 和 Pm1 通常为负值,除非我们仅使用正参数并在公式中使用负号)
S t +/- n是不同时间的斜率
,Min_delta_Slope 是定义我们想要的斜率变化程度的参数最低限度。
直观上,这个 4 点公式将考虑在感兴趣点之前的两个读数和过去的两个读数处的曲线形状(此外还考虑该点之前和之后的点)。给定参数的正确值,该公式将要求曲线在两个时间片内稳定“下降”,然后在接下来的两个时间片内稳定上升,从而避免在曲线中标记较小的下降。实现此目的的另一种方法可能是使用两个(或更多)时间片之前的[平均]读数与当前[平均]读数之间
的Y值差来计算斜率。这两种方法相似,但会产生略有不同的结果;一般来说,我们对 Pm2、Pm1、P0 和 P1 参数的曲线所需形状有更多的发言权。