matlab fmincon从c ++调用

时间:2012-10-13 10:27:51

标签: c++ matlab optimization

我试图从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]

1 个答案:

答案 0 :(得分:1)

找到了here

  

只有MATLAB可以调用MATLAB函数句柄。函数句柄   MATLAB是一种数据结构,包括(除其他外)a   引用在预解析中存储MATLAB代码的数据块   需要由MATLAB解释的线程解释器格式   发动机。 MATLAB .m代码不能仅编译为机器语言   链接数据结构。

所以你无法直接达到你想要的效果。您必须在单独的MEX文件中定义目标函数,在Matlab中为其定义函数句柄,然后将其传递给您调用fmincon的MEX。所以,像

[sol, fval, ...] = your_main_mex(@your_objective_mex, ...)