How can I use anonymous function / cfit in simulink ?

8 vues (au cours des 30 derniers jours)
Ezor
Ezor le 10 Jan 2017
Commenté : James Whidborne le 20 Fév 2021
Hello everyone,
I have created several models stored as anonymous functions or cfit objects (I can change for one another, depending on what is the best in that case) in the main workspace.
I would like to use them in Simulink, namely take as input a signal u, and use my function f on it f(u) = y where y will be the output signal in simulink.
So far, I have tried to call them in Matlab Function Block but it doesn't work. For instance, with coder.extrinsic
function y = fcn(u)
y=0;
coder.extrinsic('evalin')
coder.extrinsic('my_fun_in_WS')
fun = evalin('base','my_fun_in_WS');
y = fun(u);
end
It seems that u has not the right type since I get this error Function output 'y' cannot be an mxArray in this context. Consider preinitializing the output variable with a known type.
However, if I put
y = feval(fun,42);
Then the output is correct (constant, equal to fun(42))
Do you have any solution to workout this issue?
Thank you in advance (and sorry for bad english)
Edward
  1 commentaire
James Whidborne
James Whidborne le 20 Fév 2021
I find it also works ok using an Interpreted MATLAB Fcn block

Connectez-vous pour commenter.

Réponses (1)

Sean de Wolski
Sean de Wolski le 12 Jan 2017
Modifié(e) : Sean de Wolski le 13 Jan 2017
See my answer here:
EDIT In R2016b, anonymous functions are supported for code generation and thus can be used directly inside of the MATLAB function block:
For cfit, sfit objects you will still need to call those inside of a separate MATLAB function labeled as coder.extrinsic in the MATLAB function block.
  4 commentaires
Ezor
Ezor le 16 Jan 2017
Unfortunatly, I have to work on Matlab2014a, but it's good to know !
Wes Yeagley
Wes Yeagley le 22 Jan 2018
Could you show an example where you use a cfit object in Simulink. I am having trouble calling the cfit object in a separate Matlab function and thus cannot use it in Simulink.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by