0

加速度計からのモーションパターンデータで分類器をトレーニングする必要があります。時間サンプルごとに、XY座標とZ座標を保存しました。したがって、単一の動きが次のように私のデータセットで表されます。

[0.39028051 -0.5483283  10.385374]; [0.17420317 -0.2802931  10.72625]; [0.28956637  -0.13387422 11.9645]; [0.6281768    -0.14725612 13.369692]; [0.72674876 -0.115191355    14.50422]; [0.7450281   -0.079684645    15.090715]; [0.74526054 -0.44727635 15.027773]; [0.6936915  -0.9639046  14.088198]; [0.5290651  -1.1378883  12.5164585]; [0.23881127    -1.346372   10.889902]; [0.052466527    -1.2700776  9.227933]; [0.019615699 -0.8237766  7.65959]; [0.10373996   -0.29147366 6.416745]; [0.17365126  0.09419979  5.420801]; [0.18465124  0.3646446   4.5289593]; [0.22039331 0.52677184  3.8076568]; [0.33365434 0.48184758  3.4170833]; [0.40346703 0.21976978  3.472282]; 

ここで、[]の間の値はXYZコンポーネントを表します。

最初は、隠れマルコフモデルが私の問題に最も適していると思いました。しかし、データの状態を定義するのに問題があります。私が見つけたすべての例には、明確に定義された有限の状態のセットがあります(つまり、雨、晴れ、または曇り)。私のデータセットのすべての値は-11から+11の間にありますが、明らかに整数ではありません。それでも、これを状態として使用できますか?したがって、私に11 * 11 * 11 = 1331の状態を与えますか?そして、どのように遷移行列を計算しますか?

さらに、観察の数は動きによって異なります(同じクラスに属していますが)。

申し訳ありませんが、この質問は広すぎます。このタイプのデータを使用したHMMのチュートリアルへのポインタも大いに役立ちます。

ありがとう

4

1 に答える 1

0

疑似コードで、2 点間のすべての距離を計算します。

for index=0 to coords.length() step 2 
{
   x1=coord[i].x
   y1=coord[i].y
   z1=coord[i].z

   x2=coord[i+1].x
   y2=coord[i+1].y
   z2=coord[i+1].z

   deltaX = x2-x1
   deltaY = y2-y1
   deltaZ = z2-z1
   distance[i] = SquareRoot(deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ)
}

次に、値のガウス分布distanceと、平均、中央値、分散を計算できます...アルゴリズムは、あちこちで調整が必要になる場合でも、書くのが複雑すぎてはいけません。

または、別の方法として、ループ内で現在の距離と前の距離の差を簡単に計算できます。

previousDistance = distance
distance = SquareRoot(deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ)
diff = distance - previousDistance

そして にハイパスフィルターをかけdiffます。

于 2012-02-14T12:35:23.320 に答える