运行 fmincon 与第三方 mexFunction 的问题 returns 一个结构

Issue with running fmincon with third party mexFunction that returns a struct

我在尝试将第三方代码 运行 作为 mex 文件时遇到一个非常明显的问题。此 mexfile 的源代码可用,但我不想弄乱它。不幸的是,它 returns 是输出中的一个结构,这使得它与 MATLAB 中的 fmincon 不兼容。有什么我可以在 MATLAB 方面做的事情,这样我就不会得到: FMINCON 要求函数返回的所有值都是双精度数据类型。

或者我必须修改实际代码吗?

你能否将 mex 函数调用包装在一个函数中,将值分解为双精度值并将其提供给 fmincon

% MATLAB flavored Pseudocode...

function doubleVal = callMex( input )
    % Function that wraps the mex function call and returns the appropriate type.
    structVal = mex_function( input );
    doubleVal = structVal.someVal;
end

fmincon(callMex, inputs); % <-- somewhere in another file