matlab的for迭代

运行了一下发现出大问题

为什么这串代码的M只取了最后的M=0.8,而中间的M=0和M=0.4都没有生效啊

求大佬解释

S=N-E-I-R-D-M*N

for i =1:length(T)-1
    if i>=0&&i<=30
        M=0;
        S(i+1)=S(i)- contact_I*infect_rate*S(i)*I(i)/N -contact_E*infect_rate*S(i)*E(i)/N;
        E(i+1) = E(i) + contact_I*infect_rate*S(i)*I(i)/N-A*E(i) + contact_E*infect_rate*S(i)*E(i)/N;
        I(i+1) = I(i) + A*E(i) - r*I(i)-Death_from_illness_rate*I(i);
        R(i+1) = R(i) + r*I(i);
    elseif i>=31&&i<=60
        M=0.4;
        S(i+1)=S(i)- contact_I*infect_rate*S(i)*I(i)/N -contact_E*infect_rate*S(i)*E(i)/N;
        E(i+1) = E(i) + contact_I*infect_rate*S(i)*I(i)/N-A*E(i) + contact_E*infect_rate*S(i)*E(i)/N;
        I(i+1) = I(i) + A*E(i) - r*I(i)-Death_from_illness_rate*I(i);
        R(i+1) = R(i) + r*I(i);
    else
        M=0.8;
        S(i+1)=S(i)- contact_I*infect_rate*S(i)*I(i)/N -contact_E*infect_rate*S(i)*E(i)/N;
        E(i+1) = E(i) + contact_I*infect_rate*S(i)*I(i)/N-A*E(i) + contact_E*infect_rate*S(i)*E(i)/N;
        I(i+1) = I(i) + A*E(i) - r*I(i)-Death_from_illness_rate*I(i);
        R(i+1) = R(i) + r*I(i);
    end
end 
plot(T,S,T,E,T,I,T,R,T,D);grid on;

因为M是标量,后面循环后执行的分支对M赋值时,会覆盖前面的M值。