我对MATLAB真的很陌生,我正在尝试编写此代码。但我不确定if或elseif语句是否正常工作。我也知道现在我的代码中可能有很多问题,如果有人注意到这一点,我会很感激地提到它。但我的问题是,我怎么能检查是否真的每一个语句与MATLAB在此for循环检查。对于大量的代码,非常抱歉。Ps,我不知道为什么每个数组开头都是0比如delta_θ
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
在两种情况下都被覆盖。