我在尝试将第三方代码作为mex文件运行时遇到了一个非常明显的问题。这个mexfile的源代码是可用的,但我宁愿不要搞乱它。不幸的是,它在输出中返回一个结构,这使得它与MATLAB中的fmincon不兼容。有什么我可以在MATLAB方面做的事情,所以我没有得到: FMINCON要求函数返回的所有值都是数据类型double。
或者我是否需要弄乱实际的代码?
答案 0 :(得分:0)
你可以将mex函数调用包装在一个函数中,该函数将值分解为double并将其赋予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