ODE45 - must return a column vector.

조회 수: 14 (최근 30일)
Shraddha Inamdar
Shraddha Inamdar 2023년 1월 27일
댓글: Shraddha Inamdar 2023년 1월 31일
I have following code:
B = readtable('t13.xlsx');
t13 = table2array(B);
c = readtable('ambient.xlsx');
ambient = table2array(c);
d = readtable('solar.xlsx');
solar = table2array(d);
tspan = [0 50];
y0 = 20;
[t,y14] = ode45(@(t,y14) odefcn(t,y14,t13,solar,ambient), tspan, y0);
function dy14dt = odefcn(t,y14,t13,solar,ambient)
dy14dt = zeros(50,1)
dy14dt = [-1.3461*y14 - 1.3556*t13 + 4.3505*solar -1.3556*ambient];
%dy14dt= dy14dt(:);
end
I am getting an error as follows:
Error using odearguments
@(T,Y14)ODEFCN(T,Y14,T13,SOLAR,AMBIENT) must return a column vector.
Error in ode45 (line 107)
odearguments(odeIsFuncHandle,odeTreatAsMFile, solver_name, ode, tspan, y0, options, varargin);
Error in validation (line 11)
[t,y14] = ode45(@(t,y14) odefcn(t,y14,t13,solar,ambient), [0 41.5], y0);
Based on one of the previous post, I tried putting this line: dy14dt= dy14dt(:); but it did not work. Kindly help me to solve this error. Thanks!

채택된 답변

Torsten
Torsten 2023년 1월 27일
B = readtable('t13.xlsx');
t13 = table2array(B);
c = readtable('ambient.xlsx');
ambient = table2array(c);
d = readtable('solar.xlsx');
solar = table2array(d);
tspan = [0 50];
y0 = 20;
[t,y14] = ode45(@(t,y14) odefcn(t,y14,t13,solar,ambient), tspan, y0);
plot(t,y14)
function dy14dt = odefcn(t,y14,t13,solar,ambient)
solart = interp1(t13,solar,t);
ambientt = interp1(t13,ambient,t);
dy14dt = -1.3461*y14 - 1.3556*t + 4.3505*solart -1.3556*ambientt;
end
  댓글 수: 9
Torsten
Torsten 2023년 1월 28일
Then insert this time vector T and use
B = readtable('t13.xlsx');
t13 = table2array(B);
c = readtable('ambient.xlsx');
ambient = table2array(c);
d = readtable('solar.xlsx');
solar = table2array(d);
T = ??
tspan = [0 50];
y0 = 20;
[t,y14] = ode45(@(t,y14) odefcn(t,y14,T,t13,solar,ambient), tspan, y0);
plot(t,y14)
function dy14dt = odefcn(t,y14,T,t13,solar,ambient)
t13t = interp1(T,t13,t);
solart = interp1(T,solar,t);
ambientt = interp1(T,ambient,t);
dy14dt = -1.3461*y14 - 1.3556*t13t + 4.3505*solart -1.3556*ambientt;
end
Shraddha Inamdar
Shraddha Inamdar 2023년 1월 31일
It worked. Thank you!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Solar Power에 대해 자세히 알아보기

태그

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by