1

我正在尝试制作一个非常简单的 Android 计步器,但到目前为止它的失败非常严重。我在互联网上到处都得到了一些建议,但似乎没有任何效果。

我基本上设置了一个加速度传感器并获取 x、y 和 z 轴的值。之后我计算它们与原点的距离,基本上是:d = sqrt(x²+y²+z²) 然后计算它们的移动平均值。我的想法是每当我发现一个局部高峰时,我都应该算作一个步骤。问题是,我不知道如何立即找到本地峰值以计算步数。如果这看起来像一个简单的问题,我很抱歉,但我真的不知道如何从这里继续。

非常感谢。

4

1 回答 1

1

我试图实现这一点,而您采用的方法会存在大量测量误差。你应该接受它。原因是:

  • 手机可以放在任何位置,不仅是裤兜
  • 电话加速器在医学上并不精确,它们可以在空间中完全相同的位置偏离和“流动”
  • 移动平均线并不是最知名的技术,更好的技术是使用某种波浪和小波分析
  • 一步有两个局部最大值和两个局部最小值(如果我没记错的话)
  • 全球接受的“步骤”没有严格的定义,这是由于研究领域中使用的生理学、测量和各种技术

现在回答你的问题:

  • 绘制来自您拥有的三个轴的信号,这将极大地帮助您(信号与时间)
  • 定义一个固定(或轻微移动)大小的窗口,需要移动窗口来检测走慢、跑步或有残疾的人
  • 每次进行新测量时(通常频率约为 20-30 Hz),将一个放在窗口的尾部(您的信号测量队列)并从头部弹出一个。通过这种方式,您将始终拥有最后 N 个测量值的队列
  • 再次为每个测量重新计算你的东西并决定窗口是否包含一个(或两个!)最小值并将其计为一个步骤

祝你好运!

于 2013-10-20T16:43:38.497 回答