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