gpt4 book ai didi

c++ - 从 C++ 调用 matlab fmincon

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:15 25 4
gpt4 key购买 nike

我正在尝试从 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++ 中定义的。我是否可以将我的目标函数指针转换为 double (我必须这样做,因为 Matlab 的所有输入都是 double 的),然后将其传递给 arg2[0]

最佳答案

如发现here :

Only MATLAB can invoke MATLAB function handles. Function handles in MATLAB are a data structure that include (amongst other things) a reference to a data block that stores MATLAB code in a pre-parsed threaded-interpreter format that needs to be interpreted by the MATLAB Engine. MATLAB .m code does not compile down to machine language, only to linked data structures.

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

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

关于c++ - 从 C++ 调用 matlab fmincon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12872228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com