如何 运行 用户在 Python 中输入 MATLAB 函数

How to run a user input MATLAB function in Python

根据documentation中给出的例子,我们可以调用一个MATLAB文件 triarea.m 来自 python 脚本,如下所示:

import matlab.engine
eng = matlab.engine.start_matlab()
eng.triarea(nargout=0)

如果我们在 Python 中有一个变量,其中包含用户输入的 MATLAB 文件名, file_name = 'triarea' 那么,

eng.file_name(nargout=0)

returns错误

MatlabExecutionError: Undefined function 'file_name' for input arguments of type 'double'.

我们如何运行用户在Python中输入MATLAB函数?

在我的实际问题中,file_name是在实例化class的对象时输入的,并存储为对象属性。然后对象的方法之一调用这个MATLAB文件。

您可以组合 Python 的 f 字符串和 eval。

一个使用函数名的例子,在本例中直接plot

eng.plot(eng.magic(4))

将变量名作为函数名求值的例子:

file_name = 'plot'
eval(f'eng.{file_name}(eng.magic(4))')

您可以使用内置函数 gettatr,例如 here:

import matlab.engine
eng = matlab.engine.start_matlab()

file_name = 'triarea'
dynamic_func = getattr(eng, file_name)
dynamic_func(nargout=0)