如何使用用户的输入(字符串类型的变量)作为函数的名称,从matlab.Engine中调用Python中的MatLab函数?

njthzxwz  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(199)

我有一个字符串形式的MatLab函数名(变量名为‘Function_NAME’),这是用户的输入,我需要以某种方式从Python调用该函数。下面您可以看到我是如何使用变量名调用此函数的,但它退出时出现以下错误:(<class 'matlab.engine.MatlabExecutionError'>, MatlabExecutionError("Undefined function 'chsn_agthm' for input arguments of type 'uint8'.\n"), <traceback object at 0x0000015D14323C00>)

import matlab.engine
eng = matlab.engine.start_matlab()
res = eng.function_name(input1, input2, nargout=2)
igetnqfo

igetnqfo1#

问题是,function_name需要是python代码中的语句,但它是以字符串的形式给出的。要解决这个问题,我的建议是不要直接调用function_name,而是始终使用function_name作为第一个输入参数来调用matlab的feval函数。

res = eng.feval( function_name, input1, input2, nargout=2)

然后,MATLAB引擎调用feval,并使用其他参数(nargout=2除外)作为输入调用名为function_name的函数。
有关feval的更多信息,请查看https://de.mathworks.com/help/matlab/ref/feval.html

另类方法:

还可以构造一个包含有效的python表达式(包括function_name)的字符串,然后使用pythons eval()调用该表达式。

相关问题