在 for 循环中检查每个 if 或 elseif 语句

Check every if or elseif statements during a for loop

我是 MATLAB 的新手,我正在尝试编写这段代码。但我不确定 if 或 elseif 语句是否正常工作。我也知道现在我的代码中可能有很多问题,如果有人注意到它会有所不同,请提及它。但我的问题是如何检查在此 for 循环期间是否真的使用 MATLAB 检查了每个语句。 对大量代码深表歉意。 Ps。我不知道为什么我在每个数组的开头得到 0,例如 delta_theta.

clc
B=1.2;H=0.35;R=2.93;b=1;h=0.24;d_c=0.06;e_s=0.055;D_s=0.03;d_s=0.4;r_s=15*10^(-3);N_s=2;E_s=200*10^(9);f_y=500*10^(6);E_c=43.6*10^(9);v_c=0.24;f_c=35.5*10^(6);F=1.9;

A_s=pi*r_s^2;
M=zeros(200,200);
N=zeros(200,200);
delta_thetavalue=zeros(200,1);
delta_lvalue=zeros(1,200);
Idx_1 = 1;
for delta_theta =-10:0.1:10
    Idx_1 = Idx_1 + 1;
    Idx_2 = 1;
    alpha_e=0;
    alpha_p=0;
    beta_e=0;
    beta_p=0;
    r_b=0;
    r_s=0;
    r_e=0;
    delta_thetavalue(Idx_1)=delta_theta;
    A=r_s-(f_y*d_s/(E_s*delta_theta));
    for delta_l=-10:0.1:10
        Idx_2 = Idx_2 + 1;
        delta_lvalue(Idx_2)=delta_l;
        r_0=R-(delta_l/delta_theta);
        r_1=1/delta_theta*(delta_l+(F*f_c*d_c)/E_c);
      if delta_theta >= 0
           r_op=R+h/2;
           r_cl=R-h/2;
                if r_0 >= r_op && r_1<=r_cl
                    alpha_e=1;
                    r_b=r_op;
                    r_e=r_cl;
                elseif r_0 >=r_op && r_cl<r_1 && r_1<r_op
                    alpha_e=1;
                    alpha_p=1;
                    r_b=r_op;
                    r_e=r_1;
                elseif r_0 >=r_op && r_1>=r_op
                    alpha_p=1;
                    r_b=r_op;
                    r_e=r_op;
                elseif r_s<r_0 && r_0<r_op && r_1<=r_cl
                    alpha_e=1;
                    r_b=r_0;
                    r_e=r_cl;
                elseif r_s<r_0 && r_0<r_op && r_1>r_cl
                    alpha_e=1;
                    alpha_p=1;
                    r_b=r_0;
                    r_e=r_cl;
                elseif A<r_0 && r_cl<r_0 && r_0<=r_s && r_1<=r_cl
                     alpha_e=1;
                     beta_e=1;
                     r_b=r_0;
                     r_e=r_cl;
                elseif A<r_0 && r_cl<r_0 && r_0<=r_s && r_1>r_cl
                     alpha_e=1;
                     alpha_p=1;
                     beta_e=1;
                     r_b=r_0;
                     r_e=r_1;
                elseif A>=r_0 && r_0>r_cl && r_1<=r_cl
                     alpha_e=1;
                     beta_p=1;
                     r_b=r_0;
                     r_e=r_cl;
                elseif A>=r_0 && r_0>r_cl && r_1>r_cl
                     alpha_e=1;
                     alpha_p=1;
                     beta_p=1;
                     r_b=r_0;
                     r_e=r_1;
                elseif r_0 <= r_cl
                    r_b=r_cl;
                    r_e=r_cl;
                
                end
       
                 
      elseif  delta_theta < 0
          r_op=R-h/2;
          r_cl=R+h/2;
                if r_0 <= r_op && r_1 >= r_cl
                    alpha_e=1;
                    r_b=r_op;
                    r_e=r_cl;
                elseif r_0 <=r_op && r_cl>r_1 && r_1>r_op
                    alpha_e=1;
                    alpha_p=1;
                    r_b=r_op;
                    r_e=r_1;
                elseif r_0 <=r_op && r_1>r_op
                    alpha_p=1;
                    r_b=r_op;
                    r_e=r_op;
                elseif r_s>r_0 && r_0>r_op && r_1>=r_cl
                    alpha_e=1;
                    r_b=r_0;
                    r_e=r_cl;
                elseif r_s>r_0 && r_0>r_op && r_1<r_cl
                    alpha_e=1;
                    alpha_p=1;
                    r_b=r_0;
                    r_e=r_cl;
                elseif A>r_0 && r_cl>r_0 && r_0>=r_s && r_1>=r_cl
                     alpha_e=1;
                     beta_e=1;
                     r_b=r_0;
                     r_e=r_cl;
                elseif A>r_0 && r_cl>r_0 && r_0>=r_s &&r_1<r_cl
                     alpha_e=1;
                     alpha_p=1;
                     beta_e=1;
                     r_b=r_0;
                     r_e=r_1;
                elseif A<=r_0 && r_0>r_cl && r_1>=r_cl
                     alpha_e=1;
                     beta_p=1;
                     r_b=r_0;
                     r_e=r_cl;
                elseif A<=r_0 && r_0<r_cl &&r_1<r_cl
                     alpha_e=1;
                     alpha_p=1;
                     beta_p=1;
                     r_b=r_0;
                     r_e=r_1;
                elseif r_0 >= r_cl
                    r_b=r_cl;
                    r_e=r_cl;
                 end
      end
    M(Idx_1,1)=alpha_e*(E_c*b)/d_c*((delta_l/2)*abs((r_b-R)^2-(r_e-R)^2)+delta_theta*abs((r_b-R)^3-(r_e-R)^3))+alpha_p*(-F*f_c*b*abs(r_cl-r_e)*((r_cl+r_e)/2-R))+beta_e*E_s*A_s*(delta_l/d_s+delta_theta/d_s*(r_s-R))*(r_s-R)+beta_p*f_y*A_s*(r_s-R);
    N(Idx_1,1)=alpha_e*(E_c*b)/d_c*(delta_l*(r_e-r_b)*(delta_theta/2)*abs((r_s-R)^2-(r_b-R)^2))+alpha_p*(-F*f_c*b*abs(r_cl-r_e))+beta_e*E_s*A_s*(delta_l/d_s+delta_theta/d_s*(r_s-R))+beta_p*f_y*A_s;
    end
    

end   
j=M/(E_c*b*h^2);
figure(1)
plot(delta_thetavalue, j)```


这更像是评论而不是真正的答案(因为我还没有理解这个问题):很难遵循所有可能的分支,因为很多条件都是多余的。为了解决这个问题,做一些嵌套可能是个好主意,例如这个:

if cond1 && cond2 && cond3
    statement1
elseif cond1 && cond2 && ~cond3
    statement2
end

应该变成这样:

if cond1 && cond2
   if cond3
      statement1
   else
      statement2
   end
end

所以现在更清楚了,例如~cond1 不包括在内,而 cond3 在任何一种情况下都包括在内。