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

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

Nanを0に置換

いろいろと複雑な計算をやっていると、「Nan」が値として出力されてしまうことがあります。

その原因も明らかでそれを避けられない場合、これを0に置換した方が後の計算に都合が良い場合も多々あります。

そんなときの置換する方法を紹介します。

A=[1 2 Nan; Nan 8 Nan; 9 3 1]

という状態だったと仮定します。

このAの中のNanを一発で0に置換するには、

A(isnan(A))=0

としてやるだけです。

これだけの操作で

Nanはすべて0になっているはずです。

マーカーセットの作成

前回の更新から随分時間が経ってしまいましたが、今回はマーカーセットの作成について紹介したいと思います。
作成と言っても、もともとあるモデルを編集して作成していきます。

前回の記事では、「gait2354_Scale_MarkerSet.xlm」を開いたところで終わっていたと思います。
今回はこのマーカーセットをもとに編集していきます。

まず、マーカーセットを編集できる状態にしなければならないのですが、マーカーセットの編集にはOpenSimは使いません。
使用するソフトはExcelテキストエディタです。

Excelを起動し、ファイルを開くメニューから「gait2354_Scale_MarkerSet.xlm」を開きます。

f:id:simulate:20150823175218p:plain


そうすると、このような画面が表示されるはずです。
f:id:simulate:20150823180420p:plain


同じファイルをテキストエディタでも開きます。
(ちなみに、私が使用しているのはサクラエディタです。)
f:id:simulate:20150823180652p:plain

なぜExcelテキストエディタを使用するかというと、Excelは内容を理解しやすいのですが、xmlファイルで正しく保存することができません。そこで、Excelで開いて、内容を理解した上でテキストエディタで編集していこうというわけです。

両方の画面を照らし合わせて見て頂くとわかると思いますが、簡単に解説します。
例えば、「Sternum」のマーカーについて見ていきます。
Excelの画面で「name2」というところにSternumと書かれていると思います。
これは、テキストエディタでは、5行目のという部分にあたります。

同様に、他の項目についても見ていくと、このマーカーはtorsoセグメントを構成していますので、Excelでは「body」の列に「torso」と書かれています。一方、テキストエディタでは、「 torso 」というようにダグ内に書かれています。
それ以降も同様に、Excel画面の1行目の文字が、テキストエディタでは「<>」で囲まれたような状態で書かれていると考えてください。

このようにして、テキストエディタの内容が理解できるようになったところで、テキストエディタで開いたファイルを名前をつけて保存しておきましょう。
万が一、データが壊れてしまった場合に、もともとのマーカーセットのデータまで壊れてしまわないためです。
(再度、ダウンロードするという方法もありますが、面倒なので)

f:id:simulate:20150823181514p:plain



そこまでできたら、さっそく編集に入っていきます。
編集するにあたり、一番重要なのは、マーカーの名前です。
つまり、「Marker name="マーカーの名前"」です。
ここに書かれているマーカーの名称とViconデータ内のマーカーの名称が一致している必要があります。

つまり、Vicon Nexusの赤枠で囲んだ部分に表示されている名前と、ここに入力する名前が完全に一致していなければなりません。

f:id:simulate:20150823182001p:plain

この画面のデータはPlugingaitを使っているので、ネット上にマーカーセットのデータが落ちていますが、独自のマーカーセットを使っている場合には、近いマーカーセットのサンプルをもとに自分でそれを編集してマーカーセットデータを作成しなければなりません。

例えば、マーカーを増やしたい場合には、さきほどのテキストエディタの画面でいうところの5行目から33行目までをコピーして、内容を書きかえてやれば増やすことができ、逆に減らす場合には同様に「Marker」で囲まれた部分を削除してあげればOKです。


次に、実際の編集の仕方ですが、基本的には、どのセグメントを構成するマーカーなのかと、そのセグメントにおける位置を決めてやれば良いだけです。
もしかすると、もっと細かいきまりがあるかもしれませんが、まだそこまで理解できていません。既存のマーカーセットにマーカーを少し加える、もしくは少し位置を変えるくらいの編集であればこの程度で問題ないはずです。


まずは、構成するセグメントを決めます。
bodyダグの中にセグメント名を書き込んでください。

マーカーの位置はセグメント座標系の原点からの位置になりますので、セグメントを間違えるとおかしなことになります。
位置の編集は、OpenSimで開いて確認しながらすると良いでしょう。
あとはひたすら根気よく調整を繰り返すのみです。

モデルのダウンロード

今回はモデルの作成方法について解説していきたいと思います。

まずは、サンプルモデルをダウンロードしましょう。

SimTK: OpenSim: Downloads


f:id:simulate:20150523190027p:plain

Models.zipをダウンロードすると、基本的なモデルがほとんどそろっています。

まずは、歩行分析などに用いられるモデルを開いてみましょう。

f:id:simulate:20150523190555p:plain

Fileから「Open Model」を選択します。
そして、先ほどダウンロードした、Models.zipの中の「Gait2354_Simbody」フォルダを開き、「gait2354_simbody.osim」を開きます。

f:id:simulate:20150523190857p:plain

そうすると、このような腕のないヒトのモデルが開きます。

f:id:simulate:20150523190952p:plain


ここにモーションキャプチャで測定したデータを読み込むためのマーカーセットを作成する必要があります。
そのためにデフォルトのマーカーセットをまずは確認しましょう。

f:id:simulate:20150523191146p:plain

f:id:simulate:20150523191227p:plain


同じフォルダ内に「gait2354_Scale_MarkerSet.xlm」というファイルがありますので、これを開きます。
そうすると、このようにマーカーが表示されると思います。

f:id:simulate:20150523191354p:plain

ここから、このマーカーを自分の実験データに合わせて動かしていくわけですが、それは次回にしたいと思います。

OpenSim

OpenSimとは、無料で筋骨格モデルを使ってバイオメカニクス的分析を行えるソフトのことです。

無料であるのは大変ありがたいことですが、残念なことにマニュアルのほとんどが英語で書かれており、使い方を覚えることが困難です。

そこで、ここではその使い方を解説しようと思います。

相関関係の検討

Matlabには標準で簡単な統計を行える関数が備わっています.

最も代表的なものは相関分析でしょう.

corrcoef関数を使うことでPearsonの積率相関係数が算出できます.

その他にもstatistics toolboxを購入することで,t検定などの分析もできるようになります.

statistics toolboxに興味がある方がググってもらうとして,相関分析の方法を説明します.

 

[r,p]=corrcoef(変数)

と書いて使用します.

rは相関係数,pは有意確率です.

変数には,系列を行に入れていきます.例えば,1行目に疾走速度,2行目に腿上げ角度,という具合に.

あとは実行してやると相関行列と有意確率の行列が出てきます.

 

ちなみに,変数は何系列あっても大丈夫です.

私が試した限りでは,30系列くらいは問題なく実行されました.

おそらく,使用しているマシンパワーに依存していると思われるので,相当な数でも分析してくれると考えられます.

Matlab 起動時のフォルダを設定

こんにちは.

今日は起動時に開かれるフォルダの設定方法を紹介したいと思います.

Matlab起動時のフォルダは,Windowsではインストール時に作成されるMydocument内のMATLABフォルダ,Macではユーザーフォルダに設定されていると思います.

これを別のフォルダに設定したい場合,いくつか方法があります.

1.userpath関数

まず紹介するのは,userpathという関数を使う方法です.

例えば,Machogeというユーザーのフォルダの中の「analysis」フォルダにmatlabのデータを置いて使うことを想定した場合には


userpath('/Users/hoge/analysis/') ;

となります.

これをコマンドウインドウに入力して実行した後にMatlabaを再起動してみてください.

 

2.startup.m

Matlabの初期設定の起動フォルダに「startup.m」を作成する方法です.
startup.mというファイルに


cd('/Users/hoge/analysis/') ;

と書いて保存しておくだけです.

この方法では.startup.mに書いておくだけでMatlabのあらゆる初期設定ができます.

 

他にも方法はあるのかもしれませんが,私が知っているのはこの2つだけです.
ぜひ試してみてください.
今後も役立つMatlabの使い方や設定方法などを紹介していきたいと思います.

Matlabが起動しない?OS X Yosemiteに更新する前に確認を。

アップルユーザーの皆さん,こんにちは.
OS X Yosemiteがリリースされましたね.
私もさっそくアップデートしました.
そして,今回のテーマである,Matlabが起動しないという問題にぶち当たりました(笑)
起動しようとすると,こんなエラーメッセージが表示されます.
Matlab error
ちなみに,アイコンはこんな感じになっています.
Matlab icon
結論から言うと,現段階では2013以前のバージョンを起動するようにする方法はわかりません.
素直に2014にバージョンアップするのが賢明です.
ただし,2014バージョンにも2014aと2014bがあります.
公式にサポートが表明されているのは2014bのみです.
したがって,2014bを購入しなければなりません.
しかし,ここでひとつの問題が浮上します.
それは・・・
2014bにstudentが存在しないということです.
通常の個人用を買うとおよそ15000円です.
15000円にして,toolboxはついていません.
一方のstudentは,およそ10000円にしてtoolboxがいくつか付属しています.
さらに,toolboxを必要としない人であれば,5000円足らずで購入できます.
toolboxも同時購入なら,1つ1000円ほどで購入できますので,必要とするtoolboxが少ないのなら,この方法で買った方がお得です.
2014bを買える人は概ね問題なく使用でき,2014aなら学生も購入できます.
解決したかのように見えますが,実はもうひとつ問題が潜んでいます.
なんと...2014aはインストールしただけでは使えないのです.
まず,パッチを適用しないといけません.
patch
ダウンロードしたら,指示に従ってインストールすればOKです.
次に,2014aを起動する際には一工夫が必要で,ターミナルから起動しないといけないのです.
パッケージの中にあるStartMATLABでも起動できます.

f:id:simulate:20170131195830p:plain

f:id:simulate:20170131195851p:plain

f:id:simulate:20170131195924p:plain