我有一个字符串形式的MatLab函数名(变量名为‘Function_NAME’),这是用户的输入,我需要以某种方式从Python调用该函数.下面您可以看到我是如何try 使用变量名调用此函数的,但它退出时出现了以下错误:(<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)

推荐答案

问题是,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.

Alternative approach:

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

Python相关问答推荐

我从带有langchain的mongoDB中的vector serch获得一个空数组

Pandas 滚动最接近的价值

加速Python循环

DataFrames与NaN的条件乘法

cv2.matchTemplate函数匹配失败

pandas:排序多级列

当递归函数的返回值未绑定到变量时,非局部变量不更新:

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

启用/禁用shiny 的自动重新加载

用渐近模计算含符号的矩阵乘法

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

在Python中使用yaml渲染(多行字符串)

如何创建引用列表并分配值的Systemrame列

为用户输入的整数查找根/幂整数对的Python练习

Python Mercury离线安装

如何在Gekko中处理跨矢量优化

有没有办法让Re.Sub报告它所做的每一次替换?

在round函数中使用列值

Pandas 数据框自定义排序功能

保存由PYTHON在EXCEL中所做更改的问题