はじめに
MATLAB,Python,Scilabの機能説明や比較のページ。
内容的には以下を想定。
- 単純計算
- ベクトル行列計算
- 関数の作り方
- グラフ表示
これら基礎的な部分に加え、以下も取り扱う。
- 伝達関数
- 動画取り込み
- 最小二乗法
発端
私は仕事やら趣味やらでMATLAB,Python,Scilabを行ったり来たりしているうちで脳内が混乱をきたすことがある。
- MATLAB:仕事用。どちらかというとSimulinkの利用がメイン。
- Python:ディープラーニング勉強用&仕事上のちょっとした計測データの整形用。
- Scilab:自宅での実験用。この実験が仕事としてMATLA側で再構築されることもある。
自分で組む場合は、「あ、しまった。間違えた」でやり直せばOKなのだが、まれに人前で即興で組むことがある。
ここで変に間違って手間取るとちょっと恥ずかしい。
まぁ、シレっと何事もなく書き直すのだけども、実は内心としてはかなり恥ずかしいのを耐えている状態。これは精神衛生上よろしくない。
特にMATLABとScilabに似すぎてる割には関数呼び出しのメカニズムの違いに振り回されるし、Pythonは他2つと比べるとベクトル行列表現が結構違うので、MATLABでPython的に記載して、「狙った通りうごかん。なぜじゃ」ってなる。逆も然り。
よって、ここいらで、自戒の意味を込めて入門的な部分から整理しようと思い立った。
MATLAB、Python、Scilabの説明
MATLABとは
MATLAB(マトラボ)は、アメリカ合衆国のMathWorks社が開発している数値解析ソフトウェアであり、その中で使うプログラミング言語の名称でもある。MATLABは、数値線形代数、関数とデータの可視化、アルゴリズム開発、グラフィカルインターフェイスや、他言語(C言語/C++/Java/Python)とのインターフェイスの機能を有している。
Wikipediaより
Pythonとは
Python(パイソン)は、汎用のプログラミング言語である。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。
Wikipediaより
Pythonをガッツリ学習したい場合はオンライン学習サービスなどもあります。
オンラインPython学習サービス「PyQ(パイキュー)」公式ページ
Scilabとは
Scilab(サイラボ)とは、1990年からフランスのINRIA(Institut National de Recherche en Informatique et en Automatique、国立情報学自動制御研究所)とENPCで開発されているオープンソースの数値計算システムである。
Wikipediaより
MATLAB,Python,Scilabの個人的所感
MATLAB、Scilabはそっくりさんです。
MATLAB側に特殊なtool boxを入れなければ大体Scilabでいけることが多い。
ただ、オードコード生成とかsimulink+他のベンダーツール連携とか高度なことをしようとするとScilabでは辛くなる。
上記2つと比べるとPythonは本来であれば全く別物になる。
しかし、Pythonで使用できるNumPyというパッケージがベクトル、行列の定義と演算を可能にし、数値計算の領域に於いてもMATLAB、Scilabとタメを張れる状態になった。
機械学習、ディープラーニングでPythonが良く使用されるのはこのNumPyのおかげと思って良い。
基本的な使い方
Matlab | python | Scilab | |
---|---|---|---|
コメント | % | # | // |
結果の非表示 | ;(セミコロン) | なし | ;(セミコロン) |
複数行での入力 | …(ピリオド三つ) | \\\\ | …(ピリオド三つ) |
要素指定 | 1スタート | 0スタート | 1スタート |
要素抜き出し終端指定 | 終端指定 | 終端の次を指定 | 終端指定 |
列要素維持 | 維持する | 維持しない | 維持する |
特に要素指定がpythonだけ0スタートの点に注意。
後になって「全部手直しやー!」ってことになる。
MATLABの基本的な使い方
Pythonの基本的な使い方
Scilabの基本的な使い方
行列演算
Pythonの乗除がやや異なる点に注意が必要。
Pythonは逆順スライシングを利用した反転、Scilabは要素数$を利用した反転の仕方がある。
MATLABの行列演算
Pythonの行列演算
Scilabの行列演算
ユーザ関数作成
それぞれ以下の性質がある。
MATLAB:ファイル名=関数名
Python:importでファイル名指定
Scilab:基本はワークスペース内で定義。ファイルとして作成することもできるが、利用前に定義スクリプトを走らせる必要がある。
MATLABのユーザ関数作成方法
Pythonのユーザ関数作成方法
Scilabnoユーザ関数作成方法
波形表示方法
基本的にはすべて同一。
同一のグラフに描画する際の方式が若干異なる。
MATLAB:事前にhold on。
Python:最後にshow()
Scilab:デフォルトで同一グラフに描画。
とりあえず、以下な感じのグラフを出す。

MATLABの波形表示方法
Pythonの波形表示方法
Scilabの波形表示方法
伝達関数使用方法
MATLABは「control system toolbox」(別途費用発生)が必要。
これを理由にPython,Scilabに一時的に逃げたという背景もある。
PythonのcontrolパッケージはMALABの「control system toolbox」の仕様を踏襲しているらしい。まじめに比較すると演算速度とかで差があるのかもしれないが、まずはお試しレベルであれば、いろいろと実験が捗る。
Scilabは、特にMATLABを踏襲することは無く、独自のシミュレーション関数で実現している。
使い熟すにはやや難易度が高が、一つのパターンを覚えてしまえば、使い回しが利く。
Pythonの伝達関数使用方法

Scilabの伝達関数使用方法

画像処理概要
MATLABではImage Processing Toolboxが必要。
Python、Scilab共にOpenCVを使用する点では全く一緒となる。
つまり、OpenCVを知っていれば両方とも使えることになる。
Pythonの画像処理概要

Scilabの画像処理概要

最小二乗法
ここではLAF(全域空燃比)センサの特性再現を題材に最小二乗法を試す。

MATLABによる最小二乗法
Pythonによる最小二乗法
Scilabによる最小二乗法
やや難解。わたしの力量不足により記事にできず。
まとめ
MATLAB,Python,Scilabどれもとても優秀な電卓であり、シミュレータであり、データビューアとなる。
Pythonをガッツリ学習したい場合はオンライン学習サービスなどもあります。
オンラインPython学習サービス「PyQ(パイキュー)」公式ページ
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
コメント