MATLAB Answers


Is there any way to disable code generation in Simulink

Asked by Adam
on 6 May 2013
Latest activity Commented on by Biruntha Gnaneswaran on 17 Nov 2015
I have my own matlab function which I have entered into Simulink as MATLAB Function Block. I use design.lowerpass filter in it as well as other functions that Simulink Coder does not support. I don't want to generate C code for my Simulink model I just want to perform simulations and want Matlab to interpret my function. Is there any way to tell Simulink not to generate code? There seem to be no option to have no target is Simulink. What will happen if I remove Simulink Coder from my path? All the help files are full of how to generate code but none tell how not to generate it.


Sign in to comment.

3 Answers

Answer by Guy Rouleau
on 6 May 2013
 Accepted Answer

Wrap your whole script in a separate MATLAB-file and make it extrinsic so that your MATLAB Function code look like:
%%% function y = myEMLblock(u) coder.extrinsic myWrapper
y = mywrapper(u); %%%
Then put any code you want inside the your wrapper function mywrapper.m


This worked but despite wrapping whole function still I had to use feveal on my fdesign calls in my matalb function and I could not refer to Hd.numerator for example.
Thanks a lot
I use interpreted matlab function in the simulink block.It works on pc when i try to run on raspberry pi it gives "Simulink coder error in block "model/Interpreted Matlab Function", block type "MATLABFcn": not yet supported by simulink coder". what is the problem here? how to solve this?

Sign in to comment.

Answer by Gijs van Oort on 6 May 2013

Have a look at the coder.extrinsic function within you %codegen'ereated function.. Otherwise, you could try to use the 'interpreted matlab function' and call your self-written m-file which does what you want. (note that the terminology on these user-defined functions has changed somewhere between Matlab2010 and 2012, so have a wide look around in the User-defined functions if you cannot find the adequately named block.

  1 Comment

Hi Gijs,
I have following call in my matlab function. d = fdesign.lowpass('N,Fc', filtOrder, 20.0E+6, ADCclk); Hd = design(d); If I put, before these two lines, coder.extrinsic('fdesign.lowpass'); coder reports: The 'fdesign' class does not support code generation.
Function 'MATLAB Function' (#24.593.600), line 17, column 9: "fdesign" Launch diagnostic report.
Then when I add: coder.extrinsic('fdesign');
The error is the same i.e.: The 'fdesign' class does not support code generation.
Function 'MATLAB Function' (#24.592.599), line 17, column 9: "fdesign" Launch diagnostic report.
The only thing that seems to work is to use feval on those functions. Yes I am aware of the 'interpreted matlab function' and change of the meaning of generic Matlab function block in Simulink.
The question remains though How one can tell Simulink not to bother generating code globally. Some people apart of running their program in Matlab would like to create Simulink diagram by incorporating various matlab written modules just to show overall design of their program with modules interconnections. Just to present their program overall design to outsiders.

Sign in to comment.

Answer by Shashank Prasanna on 6 May 2013

  1 Comment

Hi Shashank,
yes I was considering it as the name says it all so to speak. But my matlab function outputs two vectors of doubles and interpreted matlab function block can have only one output. This will mean that I have to package my two vectors is 2xN matrix I suppose. I can't believe, which is sort of irrelevant, that one can not tell Simulink not to use Coder unless there is a fundamental reason why this can not be done.
Thanks a lot!

Sign in to comment.