如何使用数字范围制作If语句 - MatLab

时间:2013-11-28 15:52:23

标签: matlab if-statement range

我正在尝试生成HH模型的动作电位,我需要计算alphaN率。但是,在一些值,它们是0/0,所以我需要使用L'hopitals规则。我似乎无法使脚本工作。有人可以帮忙吗? 如何为一系列数字执行if语句?像:

    if Vm == -50:-49
       syms Vm;
       x = diff((0.01.*(10-(Vm+60))));
       y = diff((exp((10-(Vm+60))./10)-1));
       alphaN  = x./y;
    else
       alphaN =  (0.01.*(10-(Vm+60)))./(exp((10-(Vm+60))./10)-1);  % l/ms
       betaN  = 0.125*exp(-(Vm+60)/80);                            % 1/ms
    end
       plot(alphaN,Vm)

然而,有了上面的脚本,我得到矩阵不同意。我怎样才能做到这一点?希望这只是我忘记的事情。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

要测试Vm是否在ab之间,请编写

if Vm >= a && Vm <= b %# include a and b

测试Vm是否为ab之间的任意整数

if any(Vm == a:b) 

答案 1 :(得分:0)

您可以使用开关/案例构造:

Vm_all = -50:50;   %all Vm

for ii = 1:length(Vm)           
    Vm = Vm_all(ii);

    switch Vm
        case {-50,-49}
            syms Vm;
            x           = diff((0.01.*(10-(Vm+60))));
            y           = diff((exp((10-(Vm+60))./10)-1));
            alphaN(ii)  = x./y;
            betaN(ii)   = NaN;
        otherwise
            alphaN(ii)  =  (0.01.*(10-(Vm+60)))./(exp((10-(Vm+60))./10)-1); 
            betaN(ii)   = 0.125*exp(-(Vm+60)/80);                          
    end
end

这样,无论您的特定值是连续的还是其他任何内容都无关紧要,只需键入逗号分隔即可。

如果您的阵列中包含exc = [-50,-49,-12,42]等例外情况,则可以按照以下方式使用它作为开关/案例:

case {exc(:)}