问题遇到的现象和发生背景
元胞自动机仿真双向双车道交通流,先根据找的代码(单车道)想试着改成双车道,但是运行出来车跑到一半自动消失了
问题相关代码,请勿粘贴截图
%直行进入研究区域
%function []=in_yuanbao(p,long)
%p 车辆驶入的概率
%long 道路长度 m
%n执行的步长 为1000次
p=20;
long=500;
n=1000;
L=zeros(2,long/5+1);
V=zeros(2,long/5+1);
flag1=0;
flag2=0;%flag 用于判断是否有车在等待区即将离开该区域
a=0;
figure();
H=imshow(L,[]);
set(gcf,'position',[241 132 560 420]) ;%241 132 560 420(设定plot输出图片的尺寸)
set(gcf,'doublebuffer','on'); %设定为双缓冲模式
title('元胞自动机交通模拟','color','b');
for i=1:n
flag1=L(1,long/5+1)
flag2=L(2,long/5+1)
if p>=rand(1)*100
L(1,1)=1
end
if p>=rand(1)*100
L(2,1)=1
end
%速度设定
V(1,L(1:2,1:end-2)==1&L(1,2:end-1)==0&L(1,3:end)==0)=2
V(1,L(1:2,1:end-2)==1&L(1,2:end-1)==0&L(1,3:end)==1)=1
V(1,L(1:2,1:end-2)==1&L(1,2:end-1)==1)=0
V(2,L(1:2,1:end-2)==1&L(2,2:end-1)==0&L(2,3:end)==0)=2
V(2,L(1:2,1:end-2)==1&L(2,2:end-1)==0&L(2,3:end)==1)=1
V(2,L(1:2,1:end-2)==1&L(2,2:end-1)==1)=0
if flag1==1
a=a+1;
flag1=0;
L(1,long/5+1)=0;
V(1,long/5)=0;
elseif L(1,long/5)==1;
V(1,long/5)=1;
end
if flag2==1
a=a+1;
flag2=0;
L(2,long/5+1)=0;
V(2,long/5)=0;
elseif L(2,long/5)==1;
V(2,long/5)=1;
end
L([zeros(1,1) V(1,1:end-1)]==1)=1;
L([zeros(1,2) V(1,1:end-2)]==2)=1;
L(V(1,1:end)==2|V(1,1:end)==1)=0;
L([zeros(1,1) V(2,1:end-1)]==1)=1;
L([zeros(1,2) V(2,1:end-2)]==2)=1;
L(V(2,1:end)==2|V(2,1:end)==1)=0;
%L(1,(V(1,1:end)==2)+2)=1;
%L(1,(V(1,1:end)==2)+1)=0;
%L(1,V(1,1:end)==1+1)=1;
V=zeros(2,long/5+1);
set(H,'CData',L);
pause(0.01)
end
%end
运行结果及报错内容
我想要达到的结果
让汽车跑道结尾,最好有双向双车道的解决方法