@FinalProject_ode must return a column vector (solved)

조회 수: 1 (최근 30일)
Alexander Reynolds
Alexander Reynolds 2019년 12월 11일
편집: Alexander Reynolds 2019년 12월 11일
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

답변 (2개)

Walter Roberson
Walter Roberson 2019년 12월 11일
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.

Star Strider
Star Strider 2019년 12월 11일
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.

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by