我试图从c ++调用Matlab的fmincon
函数。我正在使用电话
mxcallMatlab(2, &arg1, 4, &arg2, "fmincon");
其中arg2"
是维度4的Matlab mxArray
数组(即,它被定义为mxArray *arg2[4]
)。 arg2
接受fmincon
的4个不同参数。 arg2[0]
应该是fmincon
用作第一个参数的目标函数句柄。
问题是我如何将目标函数句柄传递给arg2[0]
。
我的目标函数没有在Matlab中定义,而是在c ++中定义。我应该将我的目标函数指针转换为double(我必须这样做,因为Matlab的所有输入都是double),然后将它传递给arg2[0]
?
答案 0 :(得分:1)
找到了here:
只有MATLAB可以调用MATLAB函数句柄。函数句柄 MATLAB是一种数据结构,包括(除其他外)a 引用在预解析中存储MATLAB代码的数据块 需要由MATLAB解释的线程解释器格式 发动机。 MATLAB .m代码不能仅编译为机器语言 链接数据结构。
所以你无法直接达到你想要的效果。您必须在单独的MEX文件中定义目标函数,在Matlab中为其定义函数句柄,然后将其传递给您调用fmincon
的MEX。所以,像
[sol, fval, ...] = your_main_mex(@your_objective_mex, ...)