Python
 Computer >> コンピューター >  >> プログラミング >> Python

MATLABからPython関数を呼び出す方法を徹底解説

MATLABでは、バージョン2014b以降からPythonライブラリが標準で利用できるようになりました。そのため、2014b以降のバージョンを使用していれば、MATLAB上で直接Pythonコードを実行することが可能です。

PythonモジュールをMATLABで使う基本

この機能により、MATLABの中でPythonモジュールを活用できます。特別な設定は一切不要で、使用したいPythonライブラリ名の前に「py」というプレフィックスを付けるだけで呼び出せます。

ここでは、Pythonのcalendarモジュールを例に、うるう年の判定を行ってみましょう。

py.calendar.isleap(2016);
py.calendar.isleap(2017);

実行結果:

ans = 1
ans = 0

2016年はうるう年なので「1(True)」、2017年は平年なので「0(False)」が返されます。

自作のPython関数を呼び出す方法

自分で作成したPython関数も同じ方法で実行できます。まず、MATLABのカレント作業ディレクトリにPythonファイルを作成しましょう。

ここでは例として、「hello.py」というファイルを作成し、以下の2行を記述します。

def world():
    return 'hello world';

続いて、MATLABで以下のコマンドを実行します。

py.hello.world();

実行結果:

Hello world!

補足:事前確認のポイント

Python連携を利用する前に、pyversionコマンドでMATLABが認識しているPythonのバージョンとパスを確認しておくと安心です。システムにPythonが正しくインストールされており、環境変数が適切に設定されている必要があります。


  1. 実行時にPython関数を動的に定義・実行する方法

    Pythonでは、標準ライブラリの types モジュールが提供する types.FunctionType() を利用することで、プログラムの実行時(ランタイム)に関数を動的に定義し、そのまま呼び出すことができます。 動的に関数を作成する手順 コード文字列から関数オブジェクトを生成するには、以下の手順を行います。 types モジュールをインポートします。 実行したいコードを文字列として用意し、組み込み関数 compile() でコードオブジェクトにコンパイルします。 コンパイル済みのコードオブジェクトと、グローバル名前空間となる辞書を types.FunctionType() に渡して、

  2. Pythonで関数(メソッド)をオーバーロードする方法

    Pythonでは、関数やメソッドを複数の呼び出し方ができるように定義することができます。定義の仕方によって、引数なし・1つ・2つ、あるいはそれ以上の引数で呼び出せるようになります。これを「メソッドのオーバーロード」と呼びます。ただし注意が必要なのは、PythonはJavaやC++のような厳密な意味でのオーバーロード(同名メソッドを異なるシグネチャで複数定義する仕組み)をサポートしていないという点です。その代わりに、デフォルト引数を使うことで、同じような挙動を実現できます。以下のコードでは、sayHello()という1つのメソッドを持つクラスを定義しています。このメソッドの第2パラメータにデフォ