MATLAB Answers

@FinalProject_ode must return a column vector (solved)

2 views (last 30 days)
Alexander Reynolds
Alexander Reynolds on 11 Dec 2019
Edited: Alexander Reynolds on 11 Dec 2019
I have attached some of my ode and calculation functions. Im juist confused on what the matlab error "ode must return a column vector" and how i should go about resolving it
function dydt = FinalProject_ODE(t,y,p)
%% Stuff that is in the format of ode
pCell = mat2cell(p,ones(size(p,1),1),ones(size(p,2),1));
[FFAtot,PUFAtot,OXYSTtot,GLUCOSEtot,PPARtot,LXRtot,RXRtot,Kon_1,Koff_1,Kon_2,...
Koff_2,Kon_6,Koff_6,Kon_7,Koff_7,Kon_TF1,Koff_TF1,Kon_TF2,Koff_TF2,Kon_TF3,Koff_TF3,Kon_TF4,Koff_TF4,...
Kon_10, Koff_10, Kon_5, Koff_5] = pCell{:};
yCell = mat2cell(y,ones(size(y,1),1),ones(size(y,2),1));
[PPARuFFA, PPARuPUFA, LXRuGLUCOSE, LXRuOXYST,...
TF1, TF2, TF3, TF4, PPARuLXR, LXRuPUFA] = yCell{:};
%% Conservation equations
FFA = FFAtot - PPARuFFA - TF1;
PUFA = PUFAtot - PPARuPUFA - TF2;
OXYST = OXYSTtot - LXRuOXYST - TF3;
GLUCOSE = GLUCOSEtot - LXRuGLUCOSE - TF4;
PPAR = PPARtot - PPARuFFA - PPARuPUFA - TF1 - TF2 - PPARuLXR;
LXR = LXRtot - LXRuOXYST - LXRuGLUCOSE - LXRuPUFA - PPARuLXR - TF3 - TF4;
RXR = RXRtot - TF1 - TF2 - TF3 - TF4;
%% Rate Equations
dPPARuFFA = Kon_1*FFA*PPAR - Koff_1*PPARuFFA + Koff_TF1*TF1 - Kon_TF1*PPARuFFA*RXR;
dPPARuPUFA = Kon_2*PPAR*PUFA - Koff_2*PPARuPUFA - Kon_TF2*PPARuPUFA*RXR + Koff_TF2*TF2;
dLXRuOXYST = Kon_6*LXR*OXYST - Koff_6*LXRuOXYST + Koff_TF3*TF3 - Kon_TF3*LXRuOXYST*RXR;
dLXRuGLUCOSE = Kon_7*LXR*GLUCOSE - Koff_7*LXRuGLUCOSE + Koff_TF4*TF4 - Kon_TF4*LXRuGLUCOSE*RXR;
dTF1 = Kon_TF1*PPARuFFA*RXR - Koff_TF1*TF1;
dTF2 = Kon_TF2*PPARuPUFA*RXR - Koff_TF2*TF2;
dTF3 = Kon_TF3*LXRuOXYST*RXR - Koff_TF3*TF3;
dTF4 = Kon_TF4*LXRuGLUCOSE*RXR - Koff_TF4*TF4;
dLXRuPUFA = Kon_10*LXR*PUFA - Koff_10*LXRuPUFA;
dPPARuLXR = Kon_5*PPAR*LXR - Koff_5*PPARuLXR;
dydt = [dPPARuFFA dPPARuPUFA dLXRuOXYST dLXRuGLUCOSE...
dTF1 dTF2 dTF3 dTF4 dPPARuLXR dLXRuPUFA];
I am just trying to plot the for TF# values on a plot to compare their outputs and eventually do a sensitivity analysis of the data

  0 Comments

Sign in to comment.

Answers (2)

Walter Roberson
Walter Roberson on 11 Dec 2019
dydt = [dPPARuFFA dPPARuPUFA dLXRuOXYST dLXRuGLUCOSE...
dTF1 dTF2 dTF3 dTF4 dPPARuLXR dLXRuPUFA];
creates a row. You need to output a column. You can add the .' operator after the ] to transpose it.

  1 Comment

Sign in to comment.


Star Strider
Star Strider on 11 Dec 2019
Assuming all the elements are scalars, either transpose ‘dydt’ or put semicolons between the elements:
dydt = [dPPARuFFA; dPPARuPUFA; dLXRuOXYST; dLXRuGLUCOSE; dTF1; dTF2; dTF3; dTF4; dPPARuLXR; dLXRuPUFA];
That should work.

  1 Comment

Sign in to comment.

Sign in to answer this question.

Tags