调用打包的 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 模式下运行,则该函数将按预期运行。