Why I am getting this message for Luo-Rudy Model?
1 view (last 30 days)
Show older comments
Hi, I was trying to solve the Luo-Rudy model.These are the equations of the model. I used Euler method for the same.


This is the program I wrote for the same.
I got error like this.
%Luo-Rudy model using Euler method
clc; clear all; close all;
V_init=-84.5286; %y(1)=V y(2)=m y(3)=h y(4)=j y(5)=d y(6)=f y(7)=X y(8)=Cai
m_init=0.0017;
h_init=0.9832;
J_init=0.995484;
d_init=0.000003;
f_init=1;
X_init=0.0057;
Cai_init=0.00002;
[V,m,h,J,d,f,X,Cai,t]=LRrun(0.1,500,V_init,m_init,h_init,J_init,d_init,f_init,X_init,Cai_init);
function [V,m,h,J,d,f,X,Cai,t]=LRrun(I,tspan,vi,mi,hi,Ji,di,fi,Xi,Cai_i)
%I=stim1(t(1),amp,n,a,c,J,T);
dt=0.001;
loop=ceil(tspan/dt);
EK=-77.5552;
Gbar_K=0.282;
Gbar_K1=0.6047;
EK1=-87.8789;
EKp=EK1;
%Initializing variable vectors
t=(1:loop)*dt;
V=zeros(loop,1);
m=zeros(loop,1);
h=zeros(loop,1);
J=zeros(loop,1);
d=zeros(loop,1);
f=zeros(loop,1);
X=zeros(loop,1);
Cai=zeros(loop,1);
%Set initial values for variables
V(1)=vi;
m(1)=mi;
h(1)=hi;
J(1)=Ji;
d(1)=di;
f(1)=fi;
X(1)=Xi;
Cai(1)=Cai_i;
%Euler method
for i=1:loop-1
V(i+1)=V(i)+dt*(-(INa(V(i),m(i),h(i),J(i)) ...
+Isi(V(i),d(i),f(i),Cai(i))+Gbar_K*X(i)*Xi(V)*(V(i)-EK)+Gbar_K1*(alphaK1(V(i))/(alphaK1(V(i)) ...
+betaK1(V(i))))*(V(i)-EK1)+0.0183*Kp(V(i))*(V(i)-EKp)+0.03921*(V(i)+59.87))+I);
m((i+1))=m(i)+dt*(alphaM(V(i))*(1-m(i))-betaM(V(i))*m(i));
h((i+1))=h(i)+dt*(alphaH(V(i))*(1-h(i))-betaH(V(i))*h(i));
J((i+1))=J(i)+dt*(alphaJ(V(i))*(1-J(i))-betaJ(V(i))*J(i));
d((i+1))=d(i)+dt*(alphad(V(i))*(1-d(i))-betad(V(i))*d(i));
f((i+1))=f(i)+dt*(alphaf(V(i))*(1-f(i))-betaf(V(i))*f(i));
X((i+1))=X(i)+dt*(alphaX(V(i))*(1-X(i))-betaX(V(i))*X(i));
Cai((i+1))=10^-4*(V(i)-(7.7-13.0287*log(Cai(i))))+0.07*(10^-4-Cai(i));
end
end
function ina=INa(V,m,h,J)
Gbar_Na=23;
E_Na=50;
ina=Gbar_Na*m^3*h*J*(V-E_Na);
end
function isi=Isi(V,d,f,Cai)
tol=10^-10;
isi=0.09*d*f*(V-(7.7-13.02878*log(max(Cai,tol))));
end
function xi=Xi(V)
if V<=-100
xi=1;
else
xi=2.837*(exp(0.04*(V+77))-1)/(V+77)*exp(0.04*(V+35));
end
end
function aK1=alphaK1(V)
EK1=-87.8789;
aK1=1.02/(1+exp(0.2835*(V-EK1-59.215)));
end
function bK1=betaK1(V)
EK1=-87.8789;
bK1=(0.49124*exp(0.080328*(V-EK1+5.476))+(exp(0.061758*(V-EK1-594.31))))/(1+exp(-0.5143*(V-EK1+4.753)));
end
function kp=Kp(V)
kp=1/(1+exp(1+exp(7.488-V)/5.98));
end
function aM=alphaM(V)
aM=0.32*(V+47.13)/(1-exp(-0.1*(V+47.13)));
end
function bM=betaM(V)
bM=0.08*exp(-V/11);
end
function aH=alphaH(V)
if V>=-40
aH=0;
else
aH=0.135*exp((80+V)/(-6.8));
end
end
function bH=betaH(V)
if V>=-40
bH=1/(0.13*(1+exp((V+10.66)/-11.1)));
else
bH=3.56*exp(0.079*V)+3.1*10^5*exp(0.35*V);
end
end
function aJ=alphaJ(V)
if V>=-40
aJ=0;
else
aJ=(-1.2714*10^5*exp(0.2444*V)-3.474*10^-5*exp(-0.04391*V))*(V+37.78)/(1+exp(0.311*(V+79.23)));
end
end
function bJ=betaJ(V)
if V>=-40
bJ=0.3*exp(-2.535*10^-7*V)/(1+exp(-0.1*(V+32)));
else
bJ=0.1212*exp(-0.01052*V)/(1+exp(-0.1378*(V+40.14)));
end
end
function ad=alphad(V)
ad=0.095*exp(-0.01*(V-5))/(1+exp(-0.072*(V-5)));
end
function bd=betad(V)
bd=0.07*exp(-0.017*(V+44))/(1+exp(0.05*(V+44)));
end
function af=alphaf(V)
af=0.012*exp(-0.008*(V+28))/(1+exp(0.15*(V+28)));
end
function bf=betaf(V)
bf=0.0065*exp(-0.02*(V+30))/(1+exp(-0.2*(V+30)));
end
function aX=alphaX(V)
aX=0.0005*exp(0.083*(V+50))/(1+exp(0.057*(V+50)));
end
function bX=betaX(V)
bX=0.0013*exp(-0.06*(V+20))/(1+exp(-0.04*(V+20)));
end
Array indices must be positive integers or logical values.
Error in LReuler>LRrun (line 45)
V(i+1)=V(i)+dt*(-(INa(V(i),m(i),h(i),J(i))+Isi(V(i),d(i),f(i),Cai(i))+Gbar_K*X(i)*Xi(V)*(V(i)-EK)+Gbar_K1*(alphaK1(V(i))/(alphaK1(V(i))+betaK1(V(i))))*(V(i)-EK1)+0.0183*Kp(V(i))*(V(i)-EKp)+0.03921*(V(i)+59.87)));
Error in LReuler (line 11)
[V,m,h,J,d,f,X,Cai,t]=LRrun(0.1,500,V_init,m_init,h_init,J_init,d_init,f_init,X_init,Cai_init);
>>
0 Comments
Answers (1)
Alan Stevens
on 17 Aug 2020
You have a clashing definition for Xi. Once as a constant and once as a function. I suggest you change the function name to, say Xii and change the call in the following line
+Isi(V(i),d(i),f(i),Cai(i))+Gbar_K*X(i)*Xi(V)*(V(i)-EK)+Gbar_K1*(alphaK1(V(i))/(alphaK1(V(i))
to
+Isi(V(i),d(i),f(i),Cai(i))+Gbar_K*X(i)*Xii(V)*(V(i)-EK)+Gbar_K1*(alphaK1(V(i))/(alphaK1(V(i))
0 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!