はじめに
MATLAB,Python,Scilabの機能説明や比較のページ。
内容的には以下を想定。
- 単純計算
- ベクトル行列計算
- 関数の作り方
- グラフ表示
これら基礎的な部分に加え、以下も取り扱う。
- 伝達関数
- 動画取り込み
- 最小二乗法
※ 文字数/画像数が多いためかページが重くなったので2ページに分割しました。
発端
私は仕事やら趣味やらでMATLAB,Python,Scilabを行ったり来たりしているうちで脳内が混乱をきたすことがある。
- MATLAB:仕事用。どちらかというとSimulinkの利用がメイン。有償。
- 単体で30万円くらい。
- Simulink:40万円ちょい。
- StateFlow:40万円ちょい。
- Simulink Coder:40万円ちょい。
- Embedded Coder:70万円ちょい。
- Python:ディープラーニング勉強用&仕事上のちょっとした計測データの整形用。無償。
- Scilab:自宅での実験用。この実験が仕事としてMATLAB側で再構築されることもある。無償。
(どれもWindows、Linux、Macで使用可能。)
自分で組む場合は、「あ、しまった。間違えた」でやり直せばOKなのだが、まれに人前で即興で組むことがある。
ここで変に間違って手間取るとちょっと恥ずかしい。
まぁ、シレっと何事もなく書き直すのだけども、実は内心としてはかなり恥ずかしいのを耐えている状態。これは精神衛生上よろしくない。
特にMATLABとScilabに似すぎてる割には関数呼び出しのメカニズムの違いに振り回されるし、Pythonは他2つと比べるとベクトル行列表現が結構違うので、MATLABでPython的に記載して、「狙った通りうごかん。なぜじゃ」ってなる。逆も然り。
よって、ここいらで、自戒の意味を込めて入門的な部分から整理しようと思い立った。
割とどうでも良い差分(超重要)
Pythonちゃんはいるけど、MATLABちゃんとScilabちゃんはいない!!

Pythonちゃん(paizaの「コードガールこれくしょん」のキャラらしい)
武器:大型セミオート式狙撃銃(孤独でクールなスナイパー)
無駄なおしゃべりが苦手で受け答えはいつも完結、誰が相手でもクールに接する女の子。そのクールさや公平さに憧れるファンも多いようです。ペットのヘビを常に連れており、彼女に興味はあるけどヘビが怖くて近づけない……という人もいるとかいないとか。
画像は以下から拝借。
まぁScilabちゃんが居ないのは仕方ないが、
MATLABちゃんくらいは居てもいいんじゃないかとは思う。
ここらへんの差で学習のモチベーション変わるかもしれないし。(←え?)
(これ以降はまじめに書きます。)
MATLAB、Python、Scilabの説明
MATLABとは
MATLAB(マトラボ)は、アメリカ合衆国のMathWorks社が開発している数値解析ソフトウェアであり、その中で使うプログラミング言語の名称でもある。MATLABは、数値線形代数、関数とデータの可視化、アルゴリズム開発、グラフィカルインターフェイスや、他言語(C言語/C++/Java/Python)とのインターフェイスの機能を有している。
Wikipediaより(https://ja.wikipedia.org/wiki/MATLAB)
自動車業界ではデファクトスタンダードなツールになっている。
弊ブログは自動車業界関連の情報が多いため、結果的にMATLAB関連の記事も多くなる。
興味ある方はどうぞ。
Pythonとは
Python(パイソン)は、汎用のプログラミング言語である。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。
Wikipediaより(https://ja.wikipedia.org/wiki/Python)
Pythonをガッツリ学習したい場合はオンライン学習サービスなどもあります。
オンラインPython学習サービス「PyQ(パイキュー)」公式ページ
ポイント
- 環境構築不要
- ブラウザだけで学習を始められる。
- 申し込みから4ステップで登録を完了
- 申し込み完了待ちとかない。すぐ始められる。
- 1,000問以上の実践的な課題がある。
尚、弊ブログでは自動車業界ならではのPython利用方法について、かなりの数の記事を書いている。
一般的なPython利用とは大きく異なるものではあるが、「こういった世界もある。」って程度でも良いのでご覧くだされ。
Scilabとは
Scilab(サイラボ)とは、1990年からフランスのINRIA(Institut National de Recherche en Informatique et en Automatique、国立情報学自動制御研究所)とENPCで開発されているオープンソースの数値計算システムである。
Wikipediaより(https://ja.wikipedia.org/wiki/Scilab)
基本的にはMATLABが自宅学習用としては高価すぎるので、その変わりとして利用&導入している。
そのため、弊ブログの割と古めの記事はScilab関連のものが多い。
本来であればMATLAB/Simulinkでやりそうなことを無理やりScilabでやっていたり。
そういった試行錯誤をしてるとなぜがMATLAB/Simulinkの使い方も上手くなってしまうのが面白い点。
興味ある方は以下からどうぞ。
MATLAB,Python,Scilabの個人的所感
MATLAB、Scilabはそっくりさんです。
MATLAB側に特殊なtool boxを入れなければ大体Scilabでいけることが多い。
ただ、オードコード生成とかsimulink+他のベンダーツール連携とか高度なことをしようとするとScilabでは辛くなる。
上記2つと比べるとPythonは本来であれば全く別物になる。
しかし、Pythonで使用できるNumPyというパッケージがベクトル、行列の定義と演算を可能にし、数値計算の領域に於いてもMATLAB、Scilabとタメを張れる状態になった。
機械学習、ディープラーニングでPythonが良く使用されるのはこのNumPyのおかげと思って良い。
どれから勉強するのが良いのか?
同僚、部下から質問されることとして以下が多い。
- MATLABとPythonのどっちから勉強するのが良いのか?
- MATLABを勉強したいが有償であるため、個人で学習し難い。
- Scilabで勉強しても結局MATLAB、Pythonを勉強し直すのでは?
- Pythonの方が流行ってるからPythonの方が良いんじゃね?
どれもごもっともな質問。
結論としては目的ありきとしか言いようがない。
例えばMATLAB独自のツールキットを利用して生産性を上げたい場合、MATLAB以外の選択肢はない。
しかし、単にベクトル・行列の演算を経てのアルゴリズムの検証をしたいというレベルであれば、
どれを選択しても勉強し直すほどの労力は要らない。
まぁ機械学習系になるとPythonのライブラリが豊富だったりするので、Pythonを勧めることにはなるが、ちょっとしたデータ加工程度であれば、どれから始めても差はないだろう。
最後の「Pythonの方が流行ってる」ってのは確かに同意ではあるのだが、「だからPythonを選択」ってはちょっと違う気がする。
まぁ流行っているが故に「ネット上の情報多く勉強し易いから」とか「文献等に出てくる新しいアルゴリズムがPythonであることが多いから」って理由であれば正当でしょう。
基本的な使い方
Matlab | python | Scilab | |
---|---|---|---|
コメント | % | # | // |
結果の非表示 | ;(セミコロン) | なし | ;(セミコロン) |
複数行での入力 | …(ピリオド三つ) | \\\\ | …(ピリオド三つ) |
要素指定 | 1スタート | 0スタート | 1スタート |
要素抜き出し終端指定 | 終端指定 | 終端の次を指定 | 終端指定 |
列要素維持 | 維持する | 維持しない | 維持する |
特に要素指定がpythonだけ0スタートの点に注意。
後になって「全部手直しやー!」ってことになる。
(添え字の0スタートを0オリジン、1スタートを1オリジンと言ったりする。)
MATLABの基本的な使い方
Pythonの基本的な使い方
Scilabの基本的な使い方
行列演算
Pythonの乗除がやや異なる点に注意が必要。
Pythonは逆順スライシングを利用した反転、Scilabは要素数$を利用した反転の仕方がある。
MATLABの行列演算
Pythonの行列演算
Scilabの行列演算
ユーザ関数作成
それぞれ以下の性質がある。
MATLAB:ファイル名=関数名
Python:importでファイル名指定
Scilab:基本はワークスペース内で定義。ファイルとして作成することもできるが、利用前に定義スクリプトを走らせる必要がある。
MATLABのユーザ関数作成方法
Pythonのユーザ関数作成方法
Scilabnoユーザ関数作成方法
次のページへ
次は波形表示、伝達関数、画像処理、最小二乗法について
コメント