I have something similar to this simplified following block diagram on Simulink. It looks rather messy.
I want to replace a 3-point summing block with a function block, while keeping the same output.
First I started by placing the code inside the function block:
function y = fcn(u) sys1 = tf(0.5,[1 0 0 4]); sys2 = tf([3 0.5],[1 0 15]); sys3 = tf(1,[1 1]); y = sys1 + sys2 + sys3;
However I was greeted with an error saying that Simulink does not support code generation.
"The 'tf' class does not support code generation."
I then came across a similar problem here: https://nl.mathworks.com/matlabcentral/answers/74770-is-there-any-way-to-disable-code-generation-in-simulink
I am trying to implement an extrinsic function or'wrapper function' with some difficulty. I created a new script called myWrapper.m, containing the same code:
function y = myWrapper(u) sys1 = tf(0.5,[1 0 0 0 4]); sys2 = tf([3 5],[1 0 15]); sys3 = tf(1,[1 1]); y = sys1 + sys2 + sys3;
and the MATLAB Function edited to:
function y1 = fcn(u1) y1 = myWrapper(u1);
The error persists.
I somehow want to access
myWrapper.m file from the MATLAB Function block. Any pointers on how this should be done? Following the previous link given and the official docs I am ending up with something like this in my MATLAB Function block:
function y = fcn(u)coder.extrinsic('myWrapper') y = myWrapper(u);
The last code above is syntactically incorrect and I am at a loss on how it should be done. MATLAB automaticaly corrects the above code to:
function y = fcn(u,coder,extrinsic, myWrapper ) y = myWrapper(u);
which is not what I want.
Any tips and/or suggestions on how this could be done would be appreciated.
A similar question was asked on the MathWorks forum here, two years ago, with no response.