Python からのユーザー スクリプトと関数の呼び出し
この例では、Python® から三角形の面積を計算する MATLAB® スクリプトを呼び出す方法を説明します。
MATLAB スクリプトまたは関数を呼び出すには、それを MATLAB パス上に配置します。他のオプションについては、Python パスへの関数の配置を参照してください。
この例では、現在のフォルダーにファイル名が triarea.m
の MATLAB スクリプトを作成します。
b = 5; h = 3; a = 0.5*(b.* h)
ファイルを保存した後、Python を起動し、スクリプトを呼び出します。
import matlab.engine
eng = matlab.engine.start_matlab()
eng.triarea(nargout=0)
a = 7.5000
nargout=0
を指定します。スクリプトは出力を表示しますが、Python へ出力引数を返しません。
スクリプトを関数に変換し、関数をエンジンから呼び出します。ファイルを編集するために MATLAB エディターを開きます。
eng.edit('triarea',nargout=0)
3 つのステートメントを削除します。次に関数宣言を追加し、ファイルを保存します。
function a = triarea(b,h)
a = 0.5*(b.* h);
新しい関数 triarea
をエンジンから呼び出します。
ret = eng.triarea(1.0,5.0)
print(ret)
2.5
関数 triarea
は 1 つの出力引数のみを返すため、nargout
を指定する必要はありません。
Python パスへの関数の配置
MATLAB 関数が MATLAB パス上にない場合は、現在のフォルダーから呼び出すことができます。たとえば、myFolder
フォルダー内の MATLAB 関数 myFnc
を呼び出すには、以下を入力します。
import matlab.engine
eng = matlab.engine.start_matlab()
eng.cd(r'myFolder', nargout=0)
eng.myFnc()
myFnc
がフォルダー C:/work/myfiles
内にある場合は、このフォルダーを Python パスに追加できます。
eng.addpath("C:/work/myfiles")
すべてのサブフォルダーのパスを追加するには、以下を入力します。
s = eng.genpath('C:/work/myfiles')
eng.addpath(s, nargout=0)
参考
matlab.engine.MatlabEngine
| matlab.engine.FutureResult