Combining a function and solver to create a M-function in Simulink

If I have the following function and solver script:
The function is:
function dydt = odefcn(t,y,A,B)
dydt = zeros(2,1);
dydt(1) = y(2);
dydt(2) = (A/B)*t.*y(1);
The solver script:
A = 1;
B = 2;
tspan = [0 5];
y0 = [0 0.01];
[t,y] = ode45(@(t,y) odefcn(t,y,A,B), tspan, y0);
How can I combine both to create a "MATLAB function" block in Simulink that takes A and B as input, and outputs y?
Thanks a lot!

 Réponse acceptée

Wa3id
Wa3id le 18 Nov 2019
For the benefit of those who may have the same question, you cannot use a MATLAB function, but you can use S-Function.

Plus de réponses (1)

Simulink is the perfect tool to solve this problem (get y output based on input A and B). Why take the awkward long route? In fact, I don't think it is even possilbe if it is required to solve it with a MATLAB Function block in Simulink.

3 commentaires

Thanks, Fangjun, for your answer.
The thing is that I have a much more complicated functions that's already written as a MATLAB function, and re-creating the function in Simulink from scratch will require signifcant time.
So, I wanted to know how can I solve this kind of problem on Simulink with the functions that I already have.
When a MATLAB Function block is simulated in a Simulink model, it runs at every time step. Yet you need to solve a problem that is time related. At time t=1, the MATLAB Function block won't know or have access to info/value at time=5. That is why I think it is impossible.
Thanks a lot Fangjun. That makes sense

Connectez-vous pour commenter.

Catégories

En savoir plus sur Simulink dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by