如何 运行 用户在 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)
根据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)