2014-06-11 5 views
-1

J'ai besoin de déplacer plusieurs objets en même temps dans l'environnement MATLAB. J'ai fait un code pour trois objets en mouvement. Cependant, ces objets se déplacent de manière consécutive. J'ai besoin de voir tous les objets se déplacer en même temps.Plusieurs objets en mouvement simultanément

% Create data 
t = -4:0.1:4; % Time data 
x = t; % Position data 
y = x; % Position data 

h = plot(x(1),0,'o','MarkerSize',20,'MarkerFaceColor','g'); 

xlim([-5,5]); 
ylim([-5,5]); 
grid on 

% Animation Loop one 
i = 1; 

while i<=length(x) 
    set(h,'XData',x(i), 'YData',y(i)); 

      drawnow; 
    M(i) = getframe(1); 
     i=i+1; 

end 

hold on 

t = -4:0.1:4; % Time data 
x = t; % Position data 
y = -x; % Position data 
h = plot(x(1),0,'o','MarkerSize',20,'MarkerFaceColor','r'); 
i = 1; 
while i<=length(x) 
    set(h,'XData',x(i), 'YData',y(i)); 

      drawnow; 
    M(i) = getframe(1); 
     i=i+1; 

end 


hold on 

t = -4:0.1:4; % Time data 
x = t; % Position data 

h = plot(x(1),0,'o','MarkerSize',20,'MarkerFaceColor','b'); 
i = 1; 
while i<=length(x) 
    set(h,'XData',x(i)); 

      drawnow; 
    M(i) = getframe(1); 
     i=i+1; 

end 
+0

les Voulez-vous apparaître comme ils se déplacent en même temps ou voulez-vous le code qui se déplace les objets à exécuter en parallèle (c'est-à-dire comme le filetage) de sorte que les objets se déplacent en même temps? – kkuilla

+0

J'ai besoin que tous les objets bougent en même temps pour qu'une fenêtre me montre tous les objets qui se déplacent avec des vitesses et des directions différentes. Actuellement, quand l'un a terminé son déménagement, puis le deuxième apparaît .. – user3481947

Répondre

0

Peut-être que vous voulez essayer ceci:

% Create data 
    t = -4:0.1:40; % Time data 
    x = t; % Position data 
    y = x; % Position data 
    x1 = x; 
    y1 = -y; 
    h = plot(x(1),y(1),'o','MarkerSize',20,'MarkerFaceColor','g'); 
    hold on 
    h1 = plot(x1(1),y1(1),'o','MarkerSize',20,'MarkerFaceColor','r'); 
    hold on 
    xlim([0,50]); 
    ylim([-50,50]); 
    grid on 
    % Animation Loop one 
    i = 1; 
    while i<=length(x) 
     set(h,'XData',x(i), 'YData',y(i)); 
     set(h1,'XData',x1(i), 'YData',y1(i)); 
       drawnow; 
     M(i) = getframe(1); 
      i=i+1; 
    end 
0

La boucle externe doit être l'heure (x est votre cas) et la boucle interne des objets. De cette façon, ils seront vus comme volant simultanément. Dans une note quelque peu abstraite:

% outer loop over animation time 
for time = 1 : last_time 
    % inner loop over all objects 
    for object = 1 : last_object 
    % draw a specific object at a specific time 
    draw(object, time); 
    end 
end 
+0

pourriez-vous appliquer cela à mon exemple s'il vous plaît – user3481947

+0

@ user3481947 Mais vous avez accepté cette réponse ...? Cela signifie que vous êtes satisfait de la réponse donnée. – kkuilla

+0

Oui, je suis satisfait de la réponse. juste je veux appliquer pour mon exemple – user3481947

Questions connexes