XYZ形式の光学式モーションキャプチャシステムから取得したN個の3D観測があります。キャプチャされたモーションは、回転軸が固定された剛体から派生した単純な円弧でした。matlabのprincomp関数を使用して、同じ平面、つまりモーションが実行された平面上のすべてのマーカーポイントを取得しました。
(下の、見つかった平面上の3Dデータを表す写真を参照してください)
前のステップの後でやりたいのは、見つかった平面上のフィットされたデータを調べて、キャプチャされたモーションの曲線を2Dで取得することです。プリンコンプのやり方では、
主成分スコアの最初の2つの座標は、平面の座標系で、平面への各点の射影を示します。
(mathworksヘルプサイトの「主成分分析を使用した直交回帰のフィッティング」の記事から)
だから私はそれらのPCスコアをプロットするだけで-plot(score(:、1)、score(:、2))-モーションカーブを取得すると思いました。代わりに私が得たのはこれです。
(以下のPCスコアから導出された2Dの曲線データを表す写真を参照してください)
2D曲線は、本来あるべきではないのに、引き伸ばされて非線形に見えます(同じx値に対して異なるy値)。私が探している曲線は、単純な多項式(polyfit)またはmatlabの円近似を使用して補間する必要があります。これは、見つかった平面が元の座標系に対して菱形のように見え、pc軸が平面を基準にしてこのストレッチを生成するように回転しているために発生していますか?
それから私は、これは光学システムとMatlabの異なる座標系のために起こっていると思いました。光学システム(すなわちカメラ)co.sys。はXZY指向であり、Matlabのデフォルト(私は思う)co.sysはXYZ指向です。回転行列を介してMatlabのco.sysに対応するようにデータを変換し、princompを再度実行しましたが、2D曲線で同じストレッチが得られました(新しい曲線の方向が異なっていました)。
他のどこかで私はそれを読んだ
主成分分析は、図心を通る線として最初のPCA軸を選択しますが、その線までの各点の距離の2乗も最小化します。したがって、ある意味では、線は可能な限りすべてのデータに近くなります。同様に、線はデータの最大変動を通過します。2番目のPCA軸も重心を通過する必要があり、データの最大変動も通過する必要がありますが、特定の制約があります。PCA軸1と完全に無相関(つまり、直角または「直交」)である必要があります。
何かが足りないことは知っていますが、なぜ曲線が伸びるのか理解するのに問題があります。カーブを正しくするために何をしなければなりませんか?
前もって感謝します。
編集:これはサンプルデータファイルです(2つのマーカーに対して3列のXYZ座標)ww w.sendspace.com/file/2hiezc