加速度計のデータを見ているときに発生する2つの異なるジェスチャーを検出する必要があります。以下がその概要です(私ができる限り簡単に):
iPhoneが表を上にしたまま、前後に振動しているとしましょう。ユーザーは、1つの振動(前方または後方に1回、ジェスチャー1)または任意の時間の継続的な振動(ジェスチャー2)を実行できます。
現在、私のコードは、最後の50フレームからのデバイスの加速度計データ(y軸)のリストを保持しています。このデータごとにFFTアルゴリズム(これはhttp://goo.gl/yi3mn)を実行してから、指定された周波数領域を解釈しようとします。私は振動の速度と周波数空間の中低域のパワーとの間に強い関係があることに気づきました。
問題は、(動きが画面上で何かをアニメートするときにリアルタイムで)直前に完了した振動が単一のものか、それとも反対方向に別の振動が続くものかを検出する必要があることです。ここで、加速度計はプレッシャープレートで機能することを指摘しておきます。発振が停止すると、入力データは発振が実行されていたときと反対の値を示します。これにより、1回の前進運動と2回の前進運動とその後の運動運動(最初の各振動の終わり)の明らかな違いを確認することが困難になります。
上記のジェスチャーの違いを伝えるために使用できる正確な大きさの値(または何か他の便利なもの)をFFTを使用して解読する方法を誰かが提案できますか?
使用しているデータをテキストファイルに記録しました。これは、加速度計入力のy軸に沿った生データ(g力の値)です。
http://pastebin.ca/2108123は、2つの特異な振動のデータを示しています(デバイスを最初、最後、および2つの振動の間で静止させています)。
注:20振動の新しい生データがアップロードされていますが、まだプロットされていません。 http://pastebin.ca/2108387は、20回の連続振動のデータを示しています(デバイスを最初と最後で動かさないでください)。