Loop imagesc together for traffic simulation

7 次查看(过去 30 天)
So i have a school assignment that is asking us to make a road with 2 cars traveling in opposite directions using imagesc. My issue is I cannot get the loop to show both cars at once as when one car gets plotted the other gets deleted. I know there are specific matlab programs to make road simulations but we can't use that. My code is this
rw = 11;
rl = 40;
road = zeros(rw,rl);
road2= zeros(rw,rl);
xpos = 1;
ypos = 3;
xpos2= 39;
ypos2= 7;
road(ypos,xpos) = 1;
road2(ypos2,xpos2)=1;
imagesc(road)
axis equal
for t = 0 : 5
road(ypos,xpos) = 0;
xpos = xpos + 1;
road(ypos,xpos) = 1;
imagesc(road); hold on
t1 = sprintf('time = %f sec' , t);
title(t1);
axis equal
pause(0.5)
road2(ypos2,xpos2)=0;
xpos2 = xpos2 - 1; hold on
road2(ypos2,xpos2)=1;
imagesc(road2)
t1 = sprintf('time = %f sec' , t);
title(t1);
axis equal
pause(0.5)
end

回答(1 个)

Pavan Guntha
Pavan Guntha 2021-3-30
Hi Anthony,
You could look at the following code:
rw = 11;
rl = 40;
road = zeros(rw,rl);
xpos1 = 1;
ypos1 = 3;
xpos2 = 39;
ypos2 = 7;
road(ypos1, xpos1) = 1;
figure(1);
clf;
imagesc(road)
axis equal
hold on
for t = 0 : 20
road(ypos1,xpos1) = 0;
xpos1 = xpos1 + 1;
road(ypos1,xpos1) = 1;
imagesc(road);
t1 = sprintf('time = %f sec' , t);
title(t1);
pause(0.1)
road(ypos2,xpos2) = 0;
xpos2 = xpos2 - 1;
road(ypos2,xpos2) = 1;
imagesc(road)
pause(0.1)
end
Calling imagesc within a loop refreshes the figure window even if you put "hold on" in your case because you have considered two roads, one each for the 2 cars. Instead you can consider a single road and appropriately vary the positions of car1 and car2 as shown in the previous code.
Hope this helps!

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by