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

1 view (last 30 days)
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!

Accepted Answer

Wa3id
Wa3id on 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.

More Answers (1)

Fangjun Jiang
Fangjun Jiang on 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 Comments
Fangjun Jiang
Fangjun Jiang on 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.

Sign in to comment.

Categories

Find more on Programmatic Model Editing in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!