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!

 采纳的回答

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

更多回答(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 个评论

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

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Simulink 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by