如何以增加的幅度运行30-40个值的脚本

时间:2014-04-23 20:20:35

标签: matlab

我希望以更大的幅度运行以下30到40个电流(I0)的值。有人可以告诉我如何实现这一目标吗?

GNa = 400;
GK = 200;
GL = 2;
ENa = 99;
EK = -85;
VL = -65;
C = 2;
dt = .01;
t = 0:dt:200;
I0 = 200;
It= I0 + 0*t;
It(1:40/dt)=0;
m = zeros(1,length(t));
n = zeros(1,length(t));
h = zeros(1,length(t));
V = zeros(1,length(t));
V(1) = -65;
am = zeros(1,length(t));
bm = zeros(1,length(t));
an = zeros(1,length(t));
bn = zeros(1,length(t));
ah = zeros(1,length(t));
bh = zeros(1,length(t));
for i=1:length(t)-1 
    I=It(i); 
    am(i) = (0.1*(V(i) + 40))/(1 - exp(-0.1*(V(i)+40)));
    bm(i) = 4*exp(-0.0556*(V(i)+65));  
    ah(i) = 0.07*exp(-0.05*(V(i)+65));
    bh(i) = 1./(1+exp(-0.1*(V(i)+35))); 
    an(i) = (0.01*(V(i)+55))/(1 - exp(-0.1*(V(i)+55)));
    bn(i) = 0.125*exp(-0.0125*(V(i)+65));  
    m(i+1) = m(i) + dt*(am(i)*(1 - m(i)) - bm(i)*m(i));
    h(i+1) = h(i) + dt*(ah(i)*(1 - h(i)) - bh(i)*h(i));
    n(i+1) = n(i) + dt*(an(i)*(1 - n(i)) - bn(i)*n(i));
    V(i+1) = V(i) + dt*(((-GL*(V(i) - VL) - GNa*(m(i).^3)*h(i)*(V(i) - ENa) - GK*     (n(i).^4)*(V(i) - EK)+ I))/C);
end

1 个答案:

答案 0 :(得分:0)

你总是可以将它包装在另一个for循环中,不是吗?

I0list = 200:2.5:300   % 41 values including endpoints
for j = 1:length(IOlist)
  I0 = IOlist(j);
  % Rest of your code, minus setting I0, goes here
end

如果您需要存储所有值,请将m等设为m = zeros(length(IOlist),length(t));,然后在分配时使用这两个索引,例如

am(j,i) = ...