パッケージ化された 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
モードで実行されている場合は、意図したとおりに関数が実行されます。