I have an existing Matlab C MEX function (walkode.dll) that
returns state derivatives when called by ode23s
(walkode,...) from a regular Matlab script or the command
line. I would like to incorporate this into a Simulink
model, and have done so using a Level 1 M-file S-function,
which called walkode in the mdlDerivatives subfunction.
However this model runs very slowly.
I would prefer to rewrite (recompile?) my .dll as a C MEX S-
function (using sfuntmpl_doc.c I believe), but I am unsure
as how to go about doing so. This is where my understanding
(or more aptly, misunderstanding) of C, MEX and C-MEX comes
into play. The original source (walkode.c) uses mexFunction
to perform error checking, initialization, and in
general "run" the program.
Is it merely a matter of reassigning the statements in
mexFunction to the proper function calls
(mdlInitializeSizes, mdlOutputs, mdlDerivatives, etc.) in
sfuntmpl.c? And adding all the required libraries as well.
Mostly these statements are no more than calls to create
input and output pointers and pass them as arguments to my
C subroutine, as well as error checking on input
dimensions. And then there is the single line of code that
calls my subroutine.
I've been though most of the Matlab documentation, but I
still haven't had that "Aha!" moment. Any guidance is
greatly appreciated. Thanks.