实施计步器:如何找到当地的峰值?

时间:2013-10-20 16:26:42

标签: android accelerometer sensor android-sensors

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

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

非常感谢。

1 个答案:

答案 0 :(得分:1)

我尝试实施此操作,您采取的方法会受到严重的测量误差的影响。你应该接受它。原因是:

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

现在回答你的问题:

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