使用自相关查找常见的信号片段

机器算法验证 matlab 自相关 信号处理 马尔科夫过程
2022-03-24 22:14:11

我有一个传感器,它在人走路时捕获加速度计数据。我感兴趣的是提取一个步骤时的每个信号片段。之所以使用 Z 轴,是因为只需要一根轴来检测步长的变化。下图说明了示例 Z 轴步态信号(400 次迭代)。正常步态周期中加速度计的 Z 轴

下图说明了上述信号的前半部分(200 次迭代)。正常步态周期前半部分加速度计的 Z 轴

对象最初是静止不动的,然后在~X=30 处开始行走。注意当用户走路时有一个明显的模式。我感兴趣的是使用自相关来平滑 Z 轴信号,使用 Matlab 来平滑信号(基于下图)。不幸的是,我没有很强的信号处理背景,而且我对 Matlab 有很好的掌握。我怎样才能实现步态信号的平滑,以便我可以提取步骤?我使用的文献表明,可以通过查看平滑信号的峰值来提取步骤。

目标

其他消息来源建议使用隐马尔可夫模型来提取每个步态周期,但在考虑使用高级方法之前,我考虑了一种更简单的信号处理方法。但是,如果我想采取这种行动,最好的策略是什么?

1个回答

由于步骤的外观存在很大差异,您可以尝试使用统计方法。例如,可以通过以下步骤完成:

  1. 生成特征向量。通过多个滤波器对信号进行滤波,每个滤波器具有不同的频率响应。一组 foo (haar)-wavelets 可能是一个合理的起点。如果您的原始信号有 N 个样本,并且您有 K 个过滤器,则此过滤应产生 N×K 矩阵。取元素平方来确定每个信号中的能量。

  2. 生成基本事实。写下标记每个步骤开始的样本编号,将它们存储在向量 S 中。使用它来制作地面真实输出数据:Y = zeros(N,1); Y(S) = 1。

  3. 训练你的分类器。现在您可以对第 1 步和第 2 步的结果应用通用分类算法(例如 LDA 或逻辑回归)。Matlab 实现应该不难找到。

  4. 将您的分类器应用于新数据。对于新数据,重复第 1 步。然后可以将其用作第 3 步产生的分类器的输入。可能需要对这些数据进行后处理,例如通过低通滤波。设置一个带有一些滞后的阈值应该会给你每个步骤的开始