2013-10-20 28 views
1

我想製作一個非常簡單的Android計步器,但到目前爲止它的失敗相當糟糕。我在互聯網上得到了一些建議,但似乎沒有任何工作。實施計步器:如何找到當地的高峯?

我基本上設置了一個加速度傳感器,並得到x,y和z軸的值。之後,我計算它們與原點的距離,基本上是: d = sqrt(x²+y²+z²),然後計算它們的移動平均值。我的想法是每當我發現一個本地高峯時,我應該算作一步。問題是,我不知道如何找到當地的高峯,以計算這一步。我很抱歉,如果這看起來像一個簡單的問題,但我真的不知道如何從這裏繼續。

非常感謝。

回答

1

我試圖實現這一點,你採取的方法會受到嚴重的測量錯誤。你應該接受它。其理由是:

  • 一個電話就可以在任何位置,不僅在褲兜裏
  • 手機加速器不是醫療精確,他們可以給出準確的空間
  • 同一位置偏離和‘流’
  • 均線是不是最好的公知技術來做到這一點,一個更好的人會使用某種波和小波分析
  • 一步有兩個極大值和兩個本地最小值(如果我沒記錯)
  • 有沒有嚴格定義全球接受的「步驟」,這是由於生理學,測量和研究領域使用現在

你的問題的各種技術:

  • 情節從三軸你的信號,這將極大地幫助你(信號與時間)
  • 定義一個固定(或稍微移動)大小的窗口,需要移動窗口來檢測走路較慢,跑步或有殘疾的人
  • 每當您有新的測量(通常頻率約爲20-30 Hz)時,把一個放在窗口的尾部(你的信號測量隊列)並從頭部彈出一個。通過這種方式,你將永遠與過去的N次測量隊列
  • 再次爲每mesurements重新計算你的東西,並決定是否該窗口包含一個(或兩個!)最低標準,並將其視作一個步驟

好運氣!

+0

首先非常感謝你的幫助, 我很抱歉,這可能是我的愚蠢,但我不太明白...所以基本上我首先繪製所有三軸的信號,然後做我上面描述的計算? – theJuls

+0

那麼,繪製信號將幫助您查看數據,僅僅是爲了方便。我挖出我的答案[這裏](http://stackoverflow.com/a/11241452/706456),也看看這個問題。要說清楚:計算與繪圖無關。您只需繪製一次即可瞭解信號。計算通常在一小段信號上進行,例如在3秒的間隔內進行。段正在移動,即當您獲得最新的加速度計測量值時,首先從段中刪除最舊的測量值,並添加最近的一個。因此你總是保持最後3秒。 – oleksii