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

조회 수: 1 (최근 30일)
Wa3id
Wa3id 2019년 11월 14일
답변: Wa3id 2019년 11월 18일
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!

채택된 답변

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

추가 답변 (1개)

Fangjun Jiang
Fangjun Jiang 2019년 11월 14일
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
Fangjun Jiang
Fangjun Jiang 2019년 11월 14일
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 2019년 11월 18일
Thanks a lot Fangjun. That makes sense

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Programmatic Model Editing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by