MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Arsalan
on 17 Nov 2012

Hi!I need your help. I generated C-mex file from my m-function code (where i used "assert" to define class and size of my input parameters) sucessfully using CODEGEN. Now i want to use my c-mex function in Simulink for RTW.

So, for that i added a S-function block and gave it my function name in "S-function name" place. My code required 11 inputs (1 matrix,9 vectors and 1 constant).Which i was trying to input my s-function block in "S-function parameters" but it was not accepting it and continously giving following error message

"Error due to multiple causes--- Error while obtaining sizes from Mex S-function 'xcxc_mex' in "s-function ----11 inputs required for entry point 'xcxc' ".

I was using generated mex-c function in matlab command window sucessfully with same parameters (variables in workspace).

similar question is asked before http://www.mathworks.com/matlabcentral/newsreader/view_thread/291772

Answer by Kaustubha Govind
on 19 Nov 2012

Accepted answer

S-functions are a special kind of MEX-function which have a specified interface that the Simulink engine uses to interact with it. The generic MEX-file generated by MATLAB Coder ("codegen" command) does not generate the required interface. Instead, I would recommend directly using your MATLAB code in Simulink from a MATLAB Function block, which automatically generates a MEX-function from your MATLAB code and interfaces it with the Simulink engine.

Show 1 older comment

Arsalan
on 19 Nov 2012

it just increase the complexity. I think Mathworks should consider the compatibility of matlab coder and simulink coder..........thanks

Kaustubha Govind
on 26 Nov 2012

Arsalan: Please consider submitting an enhancement request via MathWorks Tech Support team for MATLAB Coder to generate an S-function along with a TLC-file for a MATLAB function.

Viren
on 3 Dec 2013

Hi Kastubha, Any advice for those of us who MUST convert their 'matlab s function' block into a 'CMEX' file? I have this weird bug where I have two copies of one component in the model (I'm simplifying a bit). When I use a CMEX version of the same code, no problemo, but with the matlab sFunction block I get an error.

## 0 Comments