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

1 vue (au cours des 30 derniers jours)
Wa3id
Wa3id le 14 Nov 2019
Réponse apportée : Wa3id le 18 Nov 2019
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)

Fangjun Jiang
Fangjun Jiang le 14 Nov 2019
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
Fangjun Jiang
Fangjun Jiang le 14 Nov 2019
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.
Wa3id
Wa3id le 18 Nov 2019
Thanks a lot Fangjun. That makes sense

Connectez-vous pour commenter.

Catégories

En savoir plus sur Programmatic Model Editing dans Help Center 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