Why is there an error when I call my function?

1 view (last 30 days)
random
random on 12 Apr 2017
Answered: Rollin Baker on 14 Apr 2017
if true
function dzdt = hodgefun(t,z)
Vna = 115; Vk = -12; V = 10.6;
g_na = 120; g_K = 36; g_L = 0.3;
Cm = 1; i = 9;
Vm=z(1);
m=z(2);
n=z(3);
h=z(3);
Er = -70;
E = [-50 -55];
Vm = E - Er;
A_n = (0.01.*(Vm+10))./(exp(((Vm+10)./10)-1));
B_n = 0.125.*exp(Vm./80);
A_m = (0.1.*(Vm+25))./(exp(((Vm+25)./10)-1));
B_m = 4.*exp(Vm./18);
A_h = 0.07.*exp(Vm./20);
B_h = 1./(exp(((Vm+30)./10)+1));
dVmdt= [i - ((g_K.*(n.^4)).*(Vm - Vk)) - ((g_na.*(m.^3).*h).*(Vm - Vna)) - (g_L.*(Vm - V_L))]./Cm;
dmdt= (A_m.*Vm.*(1-m)) - (B_m.*Vm.*m)
dndt= (A_n.*Vm.*(1-n)) - (B_n.*Vm.*n)
dhdt= (A_h.*Vm.*(1-h)) - (B_h.*Vm.*h)
dzdt=[dVmdt; dmdt; dndt; dhdt]
end of function this was my main function:
if true
initial_conditions= [0,9]
tspan=[0 100];
[t,z] = ode45 ('part1',tspan,initial_conditions)
end
but i get this error and I don't know why:
Index exceeds matrix dimensions.
Error in part1 (line 8) m=z(2);
Error in odearguments (line 90) f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 115) odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin); end
  1 Comment
Star Strider
Star Strider on 12 Apr 2017
‘i get this error and I don't know why’
Neither do we, because you did not post the code to ‘part1’.

Sign in to comment.

Answers (1)

Rollin Baker
Rollin Baker on 14 Apr 2017
You are seeing this error because you are trying to access 'z(2)', but 'z' only contains one element. It seems that you are expecting the 'ode45' function to return multiple solutions.
Since we don't have access to 'part1', it would be hard for anyone to figure out why this is happening, but I would begin by confirming that the solutions from 'ode45' are what you expect. This should be a good starting point to reach your solution.
I hope this was helpful. Good luck on your project!

Community Treasure Hunt

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

Start Hunting!