MATLAB: Solving a system of 6 ODES with 6 Unknowns and 6 known values for each value of the loop

ode45systemunknown parameters

I have tried using linear solution but to no avail, This is the RK-4 method to solve system of odes. z1 through z19 are constants and have 24 different values(Say 24 hours). And the system of 6 odes need to be solved
for m=1:24
z1(m,1)=ah(m,1);
z2(m,1)=bh(m,1);
z3(m,1)=ch(m,1);
z4(m,1)=dh(m,1);
z5(m,1)=eh(m,1);
z6(m,1)=fh(m,1);
z7(m,1)=gh(m,1);
z8(m,1)=gne(m,1);
z9(m,1)= hh(m,1);
z10(m,1)=vh(m,1);
z11(m,1)=xh(m,1);
z12(m,1)=kh(m,1);
z13(m,1)=lh(m,1);
z14(m,1)=ph(m,1);
z15(m,1)=kill(m,1);
z16(m,1)=nec(m,1);
z17(m,1)=oh(m,1);
z18(m,1)=yh(m,1);
z19(m,1)=c22(m,1);
end
%SECTION 4

%initial conditions


%SECTION 4
%define function handles
fTg=@(t,Tg,Tp)z1.*Tg+z2.*Tp+z3;
fTp=@(t,Tg,Tp,Tb)z4.*Tg+z5.*Tp+z6.*Tb+z7;
fTb= @(t,Tp,Tb,Tt,Ti)z8.*Tp+z9*Tb+z10.*Tt+z11.*Ti;
fTt=@(t,Tb,Tt,Tf)z12.*Tb+z13.*Tt+z14.*Tf1;
fTf1=@(t,Tb,Tt)z15.*Tb+z16.*Tt;
fTi=@(t,Tb,Ti)z17.*Tb+z18.*Ti+z19;
%update loop
%initial conditions
t(1)=0;
Tg(1,1)=Tcover3(1,1);
Tp(1,1)=avg1temp(1,1);
Tb(1,1)=avg1temp(1,1);
Ti(1,1)=Tin(1,1);
Tf1(1,1)=(avg1temp(1,1));
Tt(1,1)=avg1temp(1,1);
%initial conditions
h=0.1;
NK=ceil((2.4-0)/h);% don't know quite how to set this. Not completely understood, Would be great if explained?
count=0;
for i = 1:NK
t(i+1)=t(i)+h;
k1Tg= fTg(t(i),Tg(i),Tp(i));
k1Tp = fTp(t(i),Tg(i),Tp(i),Tb(i));
k1Tb = fTb(t(i),Tp(i),Tb(i),Tt(i),Ti(i));
k1Tt = fTt(t(i),Tb(i),Tt(i),Tf1(i));
k1Tf1 = fTf1(t(i),Tb(i),Tt(i));
k1Ti= fTi(t(i),Tb(i),Ti(i));
k2Tg = fTg(t(i)+h/2,Tg(i)+h/2*k1Tg,Tp(i)+h/2*k1Tp);
k2Tp = fTp(t(i)+h/2,Tg(i)+h/2*k1Tg,Tp(i)+h/2*k1Tp,Tb(i)+h/2*k1Tb);
k2Tb= fTb(t(i)+h/2,Tp(i)+h/2*k1Tp,Tb(i)+h/2*k1Tb,Tt(i)+h/2*k1Tt,Ti(i)+h/2*k1Ti);
k2Tt = fTt(t(i)+h/2,Tb(i)+h/2*k1Tb,Tt(i)+h/2*k1Tt,Tf1(i)+h/2*k1Tf1);
k2Tf1 = fTf1(t(i)+h/2,Tb(i)+h/2*k1Tb,Tt(i)+h/2*k1Tt);
k2Ti= fTi(t(i)+h/2,Tb(i)+h/2*k1Tb,Ti(i)+h/2*k1Ti);
k3Tg = fTg(t(i)+h/2,Tg(i)+h/2*k2Tg,Tp(i)+h/2*k2Tp);
k3Tp = fTp(t(i)+h/2,Tg(i)+h/2*k2Tg,Tp(i)+h/2*k2Tp,Tb(i)+h/2*k2Tb);
k3Tb = fTb(t(i)+h/2,Tp(i)+h/2*k2Tp,Tb(i)+h/2*k2Tb,Tt(i)+h/2*k2Tt,Ti(i)+h/2*k2Ti);
k3Tt = fTt(t(i)+h/2,Tb(i)+h/2*k2Tb,Tt(i)+h/2*k2Tt,Tf1(i)+h/2*k2Tf1);
k3Tf1 = fTf1(t(i)+h/2,Tb(i)+h/2*k2Tb,Tt(i)+h/2*k2Tt);
k3Ti= fTi(t(i)+h/2,Tb(i)+h/2*k2Tb,Ti(i)+h/2*k2Ti);
k4Tg = fTg(t(i)+h,Tg(i)+h*k3Tg,Tp(i)+h*k3Tp);
k4Tp = fTp(t(i)+h,Tg(i)+h*k3Tg,Tp(i)+h*k3Tp,Tb(i)+h*k3Tb);
k4Tb = fTb(t(i)+h,Tp(i)+h*k3Tp,Tb(i)+h*k3Tb,Tt(i)+h*k3Tt,Ti(i)+h*k3Ti);
k4Tt = fTt(t(i)+h,Tb(i)+h*k3Tb,Tt(i)+h*k3Tt,Tf1(i)+h*k3Tf1);
k4Tf1 = fTf1(t(i)+h,Tb(i)+h*k3Tb,Tt(i)+h*k3Tt);
k4Ti = fTi(t(i)+h,Tb(i)+h*k3Tb,Ti(i)+h*k3Ti);
logg(i)=(h/6)*(k1Tg + 2*k2Tg + 2*k3Tg + k4Tg);
logp(i)=(h/6)*(k1Tp + 2*k2Tp + 2*k3Tp + k4Tp);
logb(i)=(h/6)*(k1Tb + 2*k2Tb+ 2*k3Tb+ k4Tb);
logt(i)=(h/6)*(k1Tt+ 2*k2Tt+ 2*k3Tt + k4Tt);
logf(i)=(h/6)*(k1Tf1 + 2*k2Tf1+ 2*k3Tf1 + k4Tf1);
logi(i)=(h/6)*(k1Ti + 2*k2Ti + 2*k3Ti + k4Ti);
lol=transpose(logg)
lop=transpose(logp)
lou=transpose(logb)
loy=transpose(logt)
loz=transpose(logf)
lox=transpose(logi)
end
i=1;
for klj=1:365
for i=i:i+23
Tg(i+1) = Tg(i) + lol(i);
Tp(i+1) = Tp(i) + lop(i);
Tb(i+1) = Tb(i) + lou(i);
Ti(i+1) = Ti(i) + lox(i);
Tf1(i+1) = Tf1(i) + loz(i);
Tt(i+1) = Tt(i) + loy(i);
end
i=i+1;
Tg(i)=Tg(i-1);
Tp(i)=Tp(i-1);
Tb(i)=Tb(i-1);
Ti(i)=Ti(i-1);
Tf1(i)=Tf1(i-1);
Tt(i)=Tt(i-1);
end
But I keep getting this error message. how do i proceed from here?
Error using *
Inner matrix dimensions must agree.
Error in codeversion22>@(t,Tp,Tb,Tt,Ti)z8.*Tp+z9*Tb+z10.*Tt+z11.*Ti
Error in codeversion22(line 356)
k2Tb= fTb(t(i)+h/2,Tp(i)+h/2*k1Tp,Tb(i)+h/2*k1Tb,Tt(i)+h/2*k1Tt,Ti(i)+h/2*k1Ti);

Best Answer

For all aother multiplications you used the elementwise product. Therefore I guess, this is meant hear also:
z9 .* Tb
fTb = @(t,Tp,Tb,Tt,Ti) z8 .* Tp + z9 .* Tb + z10 .* Tt + z11 .* Ti;
% ^
If this is the solution: Think twice. If a foreign user in a forum, who has not idea about what you are doing, can guess the problem, something went wrong.
Insert spaces around the operators. Add a lot of meaningful comments, which allow to reconsider, what the code should do. It looks like you have inserted the calculations hard coded in a RK integrator. This is a very bad idea. Better write an integrator and test it exahustively at first. Then you can trust the integration and the actual calculations are provided as separate code.