チートシート

Python からの MATLAB の 呼び出し

本リファレンスでは、よくあるユースケースを紹介していますが、すべてを掲載しているわけではありません。

MATLAB で Python を強化

MATLAB の高度なツールを Python ワークフローに直接統合します。

設定

Python 向け MATLAB エンジン API をインストールする

Python® 用の MATLAB エンジン API を使用するには、両方がシステムにインストールされている必要があります。エンジン API は Python パッケージとしてインストールします。

pip を使用してインストールする

システムのコマンドプロンプトから、以下を実行:

$ python -m pip install matlabengine

setup.py を使用してインストールする

システムのコマンドプロンプトから setup.py ファイルを実行:

$ cd [matlabroot]/extern/engines/ python
 $ python setup.py install

トラブルシューティングの際は、権限 (管理者として実行していること) を確認し、PYTHONPATH とシステムパスをチェックしてください。

MATLAB エンジン API

MATLAB エンジン API を使用して、Python から MATLAB を呼び出す

モジュールをインポートしてエンジンを起動:

>>> import matlab.engine
>>> eng = matlab.engine.start_matlab() 

エンジンを通じて関数を呼び出す:

>>> x = eng.sqrt(42.0) 

複数の出力を取得:

>>> x = eng.gcd(42.0,8.0,nargout=3) 
>>> x = eng.plot(x,y,nargout=0) 

エンジンを停止:

>>> x = eng.exit()

データ型の変換

対応するデータ型は自動変換されます。

Python MATLAB
float double
complex complex double
int int64
float(nan) NaN
float(inf) Inf
bool logical
str char
dict struct
list cell array
set cell array
tuple cell array

Python で MATLAB 配列を作成して、データを簡単に MATLAB 関数に渡すことができます。

>>> x = matlab. double([1,4,9])

MATLAB アプリの使用

MATLAB エンジンのワークスペースを使用する

MATLAB エンジンのワークスペースを使用すると、MATLAB や Python から変数にアクセスでき、アプリを利用しやすくなります。

ワークスペースに変数を追加:

>>> x = 4.0 >>> eng.workspace['y'] = x 

MATLAB ワークスペースから変数にアクセス:

>>> x = eng.workspace['y'] 

eval 関数を使用してステートメントを実行:

>>> a = eng.eval('sqrt(y)')

Python から MATLAB の各アプリを開くには、対応するコマンドを使用:

>>> eng.signalAnalyzer() 
>>> eng.classificationLearner()

Python パッケージの作成

MATLAB 関数をパッケージ化する ライブラリ コンパイラ アプリを使用して、MATLAB 関数の Python パッケージを作成します。

Python パッケージから MATLAB 関数を呼び出す

>>> import PackageName 
>>> pkg = PackageName.initialize() 
>>> result = pkg.Foo() 

パッケージを終了する

>>> pkg.terminate()

他の IDE での MATLAB の利用

Jupyter® や VSCode から MATLAB を利用できます。

MATLAB Integration for Jupyter をインストールする

例) Jupyter から MATLAB を実行するためにパッケージをインストール:

$ python pip install jupyter-matlab-proxy 
$ install-matlab-kernelspec 

これで、ブラウザー上で MATLAB を使用したり、MATLAB カーネルを利用して Jupyter Notebook 上でコードを実行したりすることができます。