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

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

Matlab 2018aを導入 Macの方が遅い?

Matlab 2018aをようやく導入しました。

私が使っている機能では、2017bと特段変わりありません。


最近はWindowsもたまに使うようになったので、Windowsにもインストールして使うようになりました。
そこで気付いたことがひとつ。


benchを実行すると、圧倒的にスペックの高いMacよりも、そこそこのWindowsのPCの方が高い値が出ます。


なぜ?

Macの方はCore i7で、メモリもかなり積んでいるんですが、Core i5Windowsに余裕で負けているとは・・・。
特に、2Dと3Dは顕著に遅いように感じます。

何が原因なのかわかりません。

私が実行している計算だったら大差ないかもしれませんが、一度、暇なときに試してみる価値はあるかもしれません。

もし、Windowsの方が速く回せるというのなら、計算専用にハイスペックのwindowsを導入するのも要検討です。

無料で機械学習を学ぶ

今日は最近流行の機械学習についてです。

機械学習ってなに?
マシンラーニング?

と、よくわからない方も大勢いらっしゃることと思います。


スポーツバイオメカニクスの分野においても、これからは機械学習を活用した研究が増えてくるものと思われます。
時代に取り残されないために、とりあえず、機械学習とはどんなものなのか勉強しておきたいという方もいらっしゃいますよね。


Matlabを使ってバイオメカニクスの研究をしている方にはちょうどよい教材があります。

以前も紹介した「Matlab アカデミー」です。


matlabacademy.mathworks.com


初心者のMatlab入門用コースに加えて、機械学習のコースも無料で提供されています。

最近のMatlabは、ビッグデータの処理や機械学習に非常に力を入れているので、ユーザーを増やすために無料で提供しているのだと思います。

無料とはいえ、内容は侮れません。
現在は無料ですが、いつか有料化されてしまうことも予想されますので、今のうちに受講してみてはいかがでしょうか。

平均値と標準偏差

今日は平均値と標準偏差の算出方法を紹介します。

論文を書くときには、平均値と標準偏差は必須といっても良い項目です。

平均値

aという5行1列のデータの平均値をAに出力する場合、

A=mean(a)

となります。
基本的に平均値は列ごとに算出されます。

したがって、5行3列の変数をmean関数に投入した場合、結果は1行3列になって出力されます。

標準偏差

平均値の例と同様に、変数aの標準偏差をBに出力する場合、

B=std(a)

となります。
基本的な使い方はmeanもstdも同じです。

応用編

平均値を算出したいデータ中に「Nan」が含まれる場合、結果もNanになってしまいます。
そういった場合には、Nanを無視して計算させることができます。

A=mean(a,'omitnan')

標準偏差も同様に'omitnan'を書き足してやると、Nanを無視してくれます。

バイオメカニクスの教科書

今日は、スポーツバイオメカニクスを勉強するにあたって、おすすめの教科書を紹介します。

まずはこちら。

阿江通良・藤井範久 著
「スポーツバイオメカニクス20講」


大学でバイオメカニクスを学んだ人で知らない人はおそらくいないと思います。
幅広い内容が簡潔に、たっとこれだけのサイズにまとめられている素晴らしい教科書です。
ただし、初心者がこの本で本格的に勉強するには、詳細な説明が少なすぎてやや難しいかもしれません。


次に紹介するのは、
ウインター 著
バイオメカニクス 人体運動の力学と制御」

こちらも非常に有名な教科書です。
もともとは英語で書かれた本ですが、日本語に訳されました。
初版はかなり古い本ですが、こちらは原著第4版ということで、モーションキャプチャなど、最近の新しい情報も大幅に書き加えられています。
また、信号処理についても解説があり、これからバイオメカニクスを勉強する方にとって非常に良い本だと思います。


3冊目は
ゴードン 著
「身体運動のバイオメカニクス研究法」

こちらは、最初に紹介した阿江通良先生が訳した本です。
この本もバイオメカニクスの教科書として、日本ではスタンダードな1冊です。
ウインターの本よりも価格が安いので、学生にも購入し易いのは魅力的です。

他にもおすすめの教科書はいくつかありますが、今日はこの3冊の紹介に留めておきたいと思います。

Matlab Academy —Matlabの使い方を基礎から—

Matlabの基礎的な使い方はどうやって勉強しましたか?

本を読んだり、ネットで調べたりして勉強したという人が多いと思います。
ネットで調べると、かなりわかりやすいサイトも増えてきましたが、基礎の基礎を学ぶのはなかなか大変です。
おそらく、今、何をやっているのかが理解しにくい作業だからでしょう。

これからMatlabを始めようという方に、強い味方ができました。

MathWorksが提供する「Matlab Academy」です。

これまでは英語でしか提供されていなかったのですが、日本語でも利用できるようになりました。

高度なプログラムは有料提供となっていますが、入門コースは無料で提供されています。
ブラウザ上で、Matlabが動くので、Matlabを持っていなくても利用できます。
使用するためには、MathWorksアカウントに登録するだけです。

入門コースをマスターするだけで、Matlabに関する情報の多くが理解でき、利用できるようになります。
これからMatlabを使えるようになりたいという方はぜひ利用してみてください。

t検定

毎度のことながら、久々の更新です。

以前、分散分析については記事にしていますが、分散分析よりももっとシンプルで用いられることも多いt検定について書いていませんでした。
そこで、今回はMatlabでt検定を行う方法を紹介したいと思います。

対応ありt検定(1標本)

そのまんまですが、対応ありの場合に用いるt検定です。
同じ被験者が異なる2つの条件で試技を行った際に比較する方法です。
条件1のときの値をa、条件2のときの値をbとしたとき、

h=ttest(a,b);

となります。
有意水準は5%に設定されており、有意差が認められた場合には、h=1と出力され、有意差が認められなかった場合には、h=0と出力されます。

有意確率も確認したい場合には、

[h,p]=ttest(a,b);

とすることで、pに有意確率が出力されます。

また、論文を書く際には、t値も必要になるかと思いますが、t値も含めた詳細な統計量を出力する際には

[h,p,ci,stats]=ttest(a,b);

とすることで確認できます。

MathWorksの公式な説明はこちらにあります。

対応なしt検定(2標本)

異なる2群間の差の検定には、対応なしのt検定を用います。
こちらも方法は至ってシンプルで、

[h,p,ci,stats]=ttest2(a,b);

とするのみです。
対応あり要因は「ttest」関数を用いましたが、対応なし要因は「ttest2」を用います。
利用方法は基本的に同じですので、割愛します。
また、対応なしt検定のMathWorksの説明はこちらから参照できます。

最後に

差の検定を行うにあたり、「とりあえず」で簡単に行えるのは今回紹介したt検定です。
MatlabSPSSを使わずとも、Excelの関数でも簡単に行えます。
ただし、検定にかけたい変数が膨大な場合には、Matlabで検定を行うことが便利な場合が多いでしょう。
また、Matlabを用いる利点としては、SPSSと比較して有効数字が大きいことが挙げられます。
特に、小数点以下にゼロが何桁も続くような非常に小さい値を用いる場合には、SPSSでは四捨五入されてしまうことがありますが、Matlabを用いた場合は浮動小数点計算が行われますので、かなりの精度で計算してくれます。
これは、Matlabを統計に用いることの大きな利点と言えるでしょう。

ベンチマーク

今日はMatlabベンチマークについて紹介したいと思います。

ベンチマークと言えば「Geekbench」などが有名ですね。

Geekbench

Geekbenchは、いろいろなプラットフォーム(OS)で使えるのが最大の利点です。
私もPCを購入する際のひとつの観点として、Geekbenchのスコアは気にしています。

しかし、Matlabで計算をする人にとって、そんなベンチマークのスコアよりもMatlabでの計算時間がどれくらい変わるのかの方が気になるのではないでしょうか。

そんなときにおすすめしたいのがMatlabベンチマーク機能です。
使い方は、コマンドウインドウに

bench
と入力するだけです。

 
このベンチマークを使用する際の注意点としては、異なるバージョンでは計算方法が異なるらしく、直接結果を比較することができないそうです。

バージョンが異なると比較できないとなると、参考になるのか微妙な点もありますが、参考にどうぞ。