- Place your entire code in a regular MATLAB function .m file, and call it from Simulink using an Interpreted MATLAB Function block instead.
- Place just the unsupported piece (the generation of the function handle) in a separate function and call it as interpreted using coder.extrinsic.
How can I use a function handle in Simulink "matlab function" block?
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello,
I am trying to simulate this first order function
*function [f,h] = Model_First_order(u,deltat)
f=@(x)[x(1)+deltat*(-x(2)*x(1)+u(1)); x(2)]; h=@(x)x(1);*
using the function handle in Simulink Matlab function block. But as I try to simulate it, it gives me an error that
Anonymous functions are not supported for code generation. Function 'Model_first_order' (#23.313.314), line 21, column 3: "@" Launch diagnostic report. Component: MATLAB Function | Category: Coder error
Please help me to solve this problem.
0 Kommentare
Antworten (1)
Sebastian Castro
am 11 Aug. 2015
Bearbeitet: Sebastian Castro
am 11 Aug. 2015
If you won't be generating code from your Simulink model (i.e., you just want a desktop simulation), you could do a few things:
... or, my favorite approach:
3. Given that you seem to be modeling some kind of first-order set of equations, it would probably be MUCH easier (and numerically accurate) to implement the equations in Simulink with Integrator blocks!
- Sebastian
2 Kommentare
Vignesh Ramakrishnan
am 12 Jun. 2023
Bearbeitet: Vignesh Ramakrishnan
am 12 Jun. 2023
@Sebastian Castro, quick follow-up on this question: Say I have solved a first order ODE in Simulink and called the simulink file say ode.slx, using:
y=sim("ode.slx");
I wish to make a function handle for this call, and hopefully make a phase portrait with a quiver plot and contour lines. Is there some way to pull that off?
Siehe auch
Kategorien
Mehr zu Interactive Model Editing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!