2016-06-21 18 views
-1

Wir versuchen, fahrende Autos mit verschiedenen farbigen und großen Punkten zu simulieren (Autotyp 1: rot Größe 20, Auto Typ 2: grün Größe 40 usw.), das Problem ist, wenn es da ist zwei Autos des gleichen Typs war sie sich überlappen, wo sie einander folgen sollte, ist dies der verwendete Code:Bewegen einer Reihe von Punkten (Autos)

x = linspace(0,30,1000); 
axis([0,20,-0.4,1.5]); 
ax = gca; 
h = hgtransform('Parent',ax); 
type1=plot(-1,0.4,'s','Parent',h,'MarkerFaceColor','red','MarkerSize',20); 
type2=plot(-1,0.4,'s','Parent',h,'MarkerFaceColor','green','MarkerSize',40); 
car=[1 2 2 1 1]; 
for k = 1:10:700 
    for i = 1:length(car) 
     if(car(i)==1) 
      set(type1,'XData',x(k),'YData',0.4); 
      pause(0.1); 
     elseif(car(i)==2) 
      set(type2,'XData',x(k)-3,'YData',0.4); 
      pause(0.1); 
     end 
    end 
end 

Wie Sequenz zu halten, dass jeder (x = 3) ein neues Auto zu bewegen, ohne zu löschen oder über beginnen Läppen die Autos davor.

Dank inadvance

Antwort

1

Sie unter Code wollen könnte.

x = linspace(0,30,1000); 
axis([0,20,-0.4,1.5]); 
ax = gca; 
car=[1 2 2 1 1]; 
h = hgtransform('Parent',ax); 
Ncar=length(car); 

for n=1:Ncar %generate 5 cars having one type among type1 and type2 
    if car(n)==1; 
     types(n)=plot(-1,0.4,'s','Parent',h,'MarkerFaceColor','red','MarkerSize',20); 
    else 
     types(n)=plot(-1,0.4,'s','Parent',h,'MarkerFaceColor','green','MarkerSize',40); 
    end 
end 

for k = 1:10:700 %plotting the cars sequencially 
    for i = 1:length(car) 
      set(types(i),'XData',x(k)-3*(i-1),'YData',0.4); 
     pause(0.1); 
    end 
end 
+0

Das ist großartig, es funktioniert gut – user3332603