主要内容

调用打包的 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 - 接收控制台输出的 Python StringIO 对象。默认将输出直接发送到控制台。

  • err_stream - 接收错误输出的 Python StringIO 对象。默认将输出直接发送到控制台。

函数调用左侧的每个变量都填充一个返回值。

注意

如果您在函数调用左侧提供的变量少于 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''.
但是,如果 Python 在 OutOfProcess 模式下运行,则该函数将按预期运行。

另请参阅

主题