【问题标题】:matlab fmincon calling from c++从 C++ 调用 matlab fmincon
【发布时间】:2012-10-04 01:06:11
【问题描述】:

我正在尝试从 C++ 调用 Matlab 的 fmincon 函数。我正在使用通话

mxcallMatlab(2, &arg1, 4, &arg2, "fmincon");

其中arg2"是一个Matlab mxArray维度为4的数组(即它被定义为mxArray *arg2[4])。 arg2 接受 fmincon 的 4 个不同参数。 arg2[0] 应该是 fmincon 用作其第一个参数的目标函数句柄。 问题是如何将目标函数句柄传递给arg2[0]。 我的目标函数不是在 Matlab 中定义的,而是在 c++ 中定义的。我是否应该将我的目标函数指针转换为双精度(我必须这样做,因为 Matlab 的所有输入都是双精度的),然后将其传递给 arg2[0]

【问题讨论】:

  • 我认为这个问题对于任何人来说都不是很清楚。您可以编辑帖子并更具描述性吗?

标签: c++ matlab optimization


【解决方案1】:

如发现here:

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

因此,您无法随心所欲地直接实现您想要的。您必须在单独的 MEX 文件中定义目标函数,在 Matlab 中为其定义函数句柄,然后将其传递给调用 fmincon 的 MEX。所以,像

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    相关资源
    最近更新 更多