|
"David Doria" <daviddoria@gmail.com> wrote in message
<frb57u$die$1@fred.mathworks.com>...
> Recently I've been looking into the matlab engine for
> calling matlab from c++. I would like to utilize fminunc
()
> from a c++ program. Say I have a c++ function:
>
> int MyFunc(int Param)
> {
> return pow(Param,2);
> }
>
> Is there anyway to pass this function to fminunc()??
Seems
> like a reasonable thing to want to do, but from what I
know
> about the engine I have no idea how to approach it.
>
> Any tips would be great!
>
> Thanks,
>
> David
One approach would be to create a mex function that takes
your desired mxArray input (i.e., prhs[0]), calls mxGetData
(prhs[0]) to get the pointer to the data, pass that
pointer to your C++ MyFunc function, and put the result of
the MyFunc call into a new mxArray created by you in plhs
[0]. This mex function could then be called by the MATLAB
engine, and in particular the function fminunc(), where
the input function handle fun is a handle to the mex
function. You could invoke it from an engine application
through judicious use of engPutVariable, engEvalString,
and engGetVariable calls.
James Tursa
|