読者です 読者をやめる 読者になる 読者になる

スポーツバイオメカニクス MatlabとOpenSIM

スポーツバイオメカニクスの分析によく用いられるMatlabとOpenSIMの使用に関する備忘録

データの取り扱い

スポーツバイオメカニクスの分析のためにMatlabを使う場合、まずはデータの扱い方から勉強しなければなりません。

バイオメカニクスでは主に座標値のデータを扱います。

X、Y、Zそれぞれの座標データがポイント数分あります。

基本的にディジタイズで得られた座標値は23点か25点を用いると思いますので、69もしくは75個の数字×コマ数分あることになります。

これらのデータは行にポイント、列に時間として扱うのが良いと考えています。

f:id:simulate:20170131200937p:plain

なので、この例では1行目は1ポイント目のX座標、2行目がY座標、3行目がZ座標となっており、4行目は2ポイント目のX座標、5行目がY座標、6行目がZ座標・・・というようになっています。

具体例を挙げると、上から頭頂のX・Y・Z座標、耳珠点のX・Y・Z座標という具合です。

ちなみに、Frame-DIASからエクスポートしたデータをそのまま読み込むと行は時間、列はポイントになっています。

なので、読み込んだものを転置するとこの形になります。

したがって、読み込んでこの形にするには次のような方法を取ります。

Frame-DIASでエクスポートしたデータが「data.3d」というファイルで現在のフォルダーに入っているします。

これをrowという引数に入れるときは・・・

FDdata=dlmread('data.3d');

[m,n]=size(FDdata);

row=FDdata(2:m,:)';

の3行でできます。

1行目でデータをFDdataに読み込みます。

2行目でデータのサイズを取得します。

そして、3行目で不要な部分を切り取り、転置することで冒頭で説明した形になります。

さらに・・・

[Point,Frame]=size(row)

と次の行に入れておけば、ポイント数とコマ数をそれぞれPointとFrameという引数に取得することができます。

しかし、実はこんなことをしなくてもFDdataの1行目にこれらのデータに加えて刻み時間も入っているので、そちらを取得した方が賢いかもしれません。