パッケージ化された MATLAB 関数の呼び出し
initialize()
から返された Python® オブジェクトを使用して、コンパイルされた MATLAB® 関数を呼び出します。
result1,...resultN = my_client.function_name(in_args, nargout=nargs, stdout=out_stream, stderr=err_stream)
my_client
—initialize()
から返されたオブジェクトの名前function_name
— 呼び出す関数の名前in_args
— 入力引数のコンマ区切りリストnargs
— 予期される結果の数。既定値は1
です。out_stream
— コンソール出力を受け取る PythonStringIO
オブジェクト。既定では、出力はコンソールに送られます。err_stream
— エラー出力を受け取る PythonStringIO
オブジェクト。既定では、出力はコンソールに送られます。
関数呼び出しの左側の各変数には、単一の戻り値が入ります。
メモ
関数呼び出しの左側に指定した変数の数が nargs
より少ない場合、最後にリストされた変数に残りの結果のリストが含まれます。以下に例を示します。
result1, result2 = myMagic.triple(5,nargout=3)
単一の出力をもつ MATLAB 関数の呼び出し
パッケージ mutations
の MATLAB 関数 result = mutate(m1, m2, m3)
を呼び出すには、以下のコードを使用します。
import mutations import matlab myMutator = mutations.initialize() m1 = matlab.double([1,2,3]) m2 = matlab.double([10,20,30]) m3 = matlab.double([100,200,300]) result = myMutator.mutate(m1,m2,m3)
出力がゼロ個の MATLAB 関数の呼び出し
パッケージ mutations
の MATLAB 関数 mutate(m1,m2,m3)
を呼び出すには、以下のコードを使用します。
import mutations import matlab myMutator = mutations.initialize() m1 = matlab.double([1,2,3]) m2 = matlab.double([10,20,30]) m3 = matlab.double([100,200,300]) myMutator.mutate(m1,m2,m3,nargout=0)
個別変数としての複数の結果の受け取り
パッケージ copier
の MATLAB 関数 c1,c2 = copy(o1,o2)
を呼び出すには、以下のコードを使用します。
>>> import copier >>> import matlab >>> myCopier = copier.initialize() >>> c1,c2 = myCopier.copy("blue",10,nargout=2) >>> print(c1) "blue" >>> print(c2) 10
単一のオブジェクトとしての複数の結果の受け取り
パッケージ copier
の MATLAB 関数 copies = copy(o1,o2)
を呼び出すには、以下のコードを使用します。
>>> import copier >>> import matlab >>> myCopier = copier.initialize() >>> copies = myCopier.copy("blue",10,nargout=2) >>> print(copies) ["blue",10]
バックグラウンドでの MATLAB 関数の呼び出し
パッケージ sumwrap
の MATLAB 関数 sumwrap
を非同期的に呼び出すには、以下のコードを使用します。
>>> import sumwrap >>> import matlab >>> sw = sumwrap.initialize() >>> a = matlab.double([[1, 2],[3, 4]]) >>> future = sw.sumwrap(a, 1, background=True) >>> future.result() matlab.double([[4.0,6.0]])
メモ
Python を呼び出すパッケージ化された MATLAB 関数を呼び出した場合、Python が InProcess
モードで実行されていると次のエラーが発生します。
When using MATLAB Compiler SDK, Python libraries can be called from MATLAB only after pyenv is called with the ''ExecutionMode'' argument set to ''OutOfProcess''.
OutOfProcess
モードで実行されている場合は、意図したとおりに関数が実行されます。