Input struct in function
이전 댓글 표시
When I try to run a function that needs constants defined in a struct outside of it, it give the error "Not enough input arguments.". How can I give as input in the function the data struct?
data.fluid.rho = 890;
data.accumulator.V_N2 = 10e-3;
data.accumulator.P_N2 = 2.5e6;
data.accumulator.p0 = 21e6;
data.accumulator.gamma = 1.2;
data.delivery.D23 = 1;
function dydt = problem(t,y,data)
A23 = (data.delivery.D23^2/4)*pi;
end
This is just an example with some line of codes, I get an error on A23, not enough input arguments. I suspect the function doesnt know what data.delivery.D23 is even if its written outside, how can I pass the data structure in the function?
댓글 수: 3
"how can I pass the data structure in the function?"
t_in = ..
y_in = ..
data = ..
out = problem(t_in,y_in,data)
Note that your function returns one output argument dydt which is not defined anywhere inside the function.
Matt J
2021년 10월 31일
The error is not caused by anything in the code you've shown us. It is caused by the code where problem() is actually invoked.
Nader Mohamed
2021년 11월 1일
편집: Nader Mohamed
2021년 11월 1일
답변 (1개)
Sulaymon Eshkabilov
2021년 10월 31일
data.fluid.rho = 890;
data.accumulator.V_N2 = 10e-3;
data.accumulator.P_N2 = 2.5e6;
data.accumulator.p0 = 21e6;
data.accumulator.gamma = 1.2;
data.delivery.D23 = 1;
% A few things are missing:
t = ... % initialize t
y = ... % initialize y
function dydt = problem(t,y,data)
A23 = (data.delivery.D23^2/4)*pi;
dydt = ... % Define dydt
end
댓글 수: 2
Nader Mohamed
2021년 11월 1일
Walter Roberson
2021년 11월 1일
options = odeset('RelTol',1e-9,'AbsTol',1e-9,'Events',@event);
[tt,yy] = ode15s(@(t,y)problem(t,y,data),[t0,tf],[0,0,1e-3,data.accumulator.Vf],options);
카테고리
도움말 센터 및 File Exchange에서 Programming에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!