matlab死循环,问题如图中所示,求救啊,问题解决之后还能加分
2个回答
展开全部
1、MATLAB中,for循环是基于索引的,逻辑上不可能出现死循环(当然,如果循环次数太多,导致执行时间超出所能忍受的可能性是存在的);而while循环是基于判断的,如果不满足结束循环的条件,就会一直执行下去。
2、题主的程序包含多重嵌套循环,大致结构如下(仅写出循环的结构,其他条件判断相关的忽略):
B = PX(P);
while B(1)+B(2)<=1
while k1==0|k2==0
for i1=1:n
end
for j1=1:a-1
end
while i2<=n&i2~=i1
end
while j2<=a-1&j2~=j1
end
end
while E>B(k)&k-1<n
end
while k<=n
end
end
这里面的两个for循环都不可能导致死循环,第3个以及最后两个while循环也不可能导致死循环(因其循环体中包含对i2、k的更新,必然会满足结束条件),存在死循环可能的,就是下面这3个嵌套的while循环:
while B(1)+B(2)<=1
while k1==0|k2==0
while j2<=a-1&j2~=j1
end
end
end
3、到底是什么原因导致了死循环,仅通过现在的静态代码分析是不可能得到结论的。合理的做法是对程序运行过程进行跟踪,比如,可以从最外一层while循环入手,使其每一次循环都输出B(1)+B(2)的值,看是否循环体一直在执行:如果在执行,查看B(1)+B(2)的值是否变化(不变的话找原因);如果长时间无输出,说明下一层循环存在问题,那么就参照类似的做法继续查。
4、上面说了查问题的思路,如果题主需要我帮助分析,请把代码发给我(可通过网盘或私信,注意务必包括子函数PX)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询