Matlab 中的醉汉

计算科学 matlab 算法
2021-12-14 03:41:53

我编写了一个脚本,在 MATLAB 中绘制了“醉酒灯柱”问题的结果。现在我需要创建一个从 -3 到 +3 的道路宽度,从 0 到无穷大的长度,但是醉酒的人可以走在前面。这意味着当他到达道路的边缘时,MATLAB 将自动停止绘图。

我的代码在这里:

r=[0 0];
for t= 0:0.1:100 
    B1=rand(1,2);
    B=B1>0.5;
    if B==1
        rnew=r+[0 1];

    elseif B(1)==1
        rnew=r+[-1 1];

    elseif B(2)==1
        rnew=r+[1 1];
    end

    hold on;
    plot([r(1) rnew(1)],[r(2) rnew(2)]);
    drawnow ;
    r=rnew;
end

在此处输入图像描述

1个回答

您已经在单独处理每个步骤,因此正如@user2697246 在评论中所说,您可以简单地添加一个 if 语句来检查您的条件,然后休息一下。

换句话说,在endfor 你的for循环之前添加这个:

if ((rnew(2) < -3) || (rnew(2) > 3))
    break;
end

我确实对您的第一个条件有评论,B==1. B是一个逻辑矩阵,我在文档中找不到 matlab 如何处理这个问题。请确保这是在做你认为的事情,如果你能找到更好的方式来表达你的逻辑,请考虑重写它。