
count=count+1; %循环次数+1
if count>10000 %循环次数过多,强制退出
break
end
强制跳出循环,从运行结果看,还是一个死循环。所以还要检查自己的判断条件。
更改了你的continue,break位置。自己看一下注释
clear
clc
%下面为输入基本数据
Hm=2500;%⑤点最高高度
Hn=1700;%⑤点最低高度
A5=83pi/180;%计算A角时的初始赋值
B2=702;
B3=320;
L1=1230;
L2=1330;
L3=1000;
L4=400;
L5=560;
%下面为各点坐标计算公式,以左下角点为(0,0)
X1=L5;Y1=B3;
%以⑤点进行高度循环,从2500降到1700时(步长为-100),利用华罗庚的0618优选法建数学模型,计算A角的对应值
%下面数学模型已建立,不知如何编制循环语句,将A角求出。
for Z=Hm:-100:Hn
A6=6pi/180;G=001;
A7=A5-A6;
count=0;%测试循环次数,检查是否为死循环
while 1
count=count+1; %循环次数+1
if count>10000 %循环次数过多,强制退出
break
end
A=A5-0618(A5-A7);
X2=X1+L1cos(A);
Y2=B3+L1sin(A);
X4=0;
Y4=B2;
L0=sqrt((X2-X4)^2+(Y2-B2)^2);%L0为辅助计算线
A8=acos((L0^2+L2^2-L4^2)/(2L0L2))pi/180;
A9=atan((Y2-B2)/(X2-X4))pi/180;
A2=A8+A9;
X3=L2cos(A2);
Y3=L2sin(A2)+B2;
A1=atan((Y3-Y2)/(X2-X3))pi/180;%A1为L3线的水平夹角
X5=X2-(L3+L4)cos(A1);Y5=Y2+(L3+L4)sin(A1);
FH=Y5-Z;
%满足条件,跳出本次循环1
if FH>G
A5=A;
continue;%返回到A=A5-0618(A5-A7);
end
%满足条件,跳出本次循环2
if FH<-G
A7=A;
continue;%返回到A=A5-0618(A5-A7);
end
if abs(FH)<G
disp([Z,A180/pi]);%结束一次,将所要高度与对应角度打出
A5=A;%为减少计算次数,将A赋值给A5
break%跳出 while 所有循环
end
% break 位置不对
% break%跳出所有循环
end
end
在这里可以运用continue语句,因为continue表示直接进入该层的下一层迭代。
实现代码如下:
拓展说明:
Matlab中有关控制循环的有三个命令,break,continue和return。
1 使用break 退出循环 可以使用break 语句直接强行退出循环,忽略循环体中任何其他语句和循环条件测试。在循环中遇到break语句时,循环被终止,程序控制在循环后面语句重新开始。
例如 ,如果for 循环被设计为从 0执行到99,然后输出0到99这些数字,但是当i等于10时,break语句终止程序。所以程序只会输出0到10。
在一系列嵌套循环中使用break 语句时,它将仅仅终止最里面循环。
2 而continue则停止执行当前的反复,然后退回循环起始和,开始新的反复。continue 用于跳过循环体中的一部分语句,也就是不执行这部分语句 。
3 return语句用来明确地从一个方法返回。也就是,return 语句使程序控制返回到调用它方法。因此,将它分类为跳转语句。
可以在editor里面进行调试运行。
写好代码以后,运行的话可以直接单击editor菜单里面的run。
调试的方法就多种多样了:
1、可以把先不想运行队部分加上注释,着重运行需要调试的部分。
2、用%%把代码分块,用run section分块运行。
3、在中间加上输出语句、监视中间的结果。
4、用breakpoints设置断点,在运行中间查看程序运行情况。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)