Je fais quelque chose comme ça:
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
end
Mon problème est que l'intrigue n'est pas affichée tant que la boucle n'est pas terminée. Comment puis-je afficher/mettre à jour l'intrigue à chaque itération?
Une autre façon de procéder si vous souhaitez simplement la visualiser sans enregistrer l'animation consiste à utiliser refreshdata
au lieu de plot
pour les tracés suivants. Vous aurez toujours besoin d'appeler drawnow
pour qu'il se mette à jour à l'écran.
soit utiliser
set(fig_handle,'XData',new_xdata_array)
set(fig_handle,'YData',new_ydata_array)
refreshdata
drawnow
ou utiliser
set(fig_handle,'XDataSource',xdata_array)
set(fig_handle,'YDataSource',ydata_array)
%call this whenever xdata_array and ydata_array are assigned new values to see it updated in the plot
refreshdata
drawnow
pour votre exemple, cela pourrait ressembler à:
a=[1:100];
figure;
h=plot(1,a(1));
for i=2:100
set(h,'XData',[1:i])
set(h,'YData',a(1:i))
refreshdata
drawnow
end
Ce n'est pas très utile pour les tracés linéaires simples (pour lesquels plot(); drawnow;
est plus simple et plus rapide), mais lorsque vous devez créer des figures plus complexes impliquant plusieurs types de tracé, cela peut être utile.
De la documentation pour comet.m
t = 0:.01:2*pi;
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);
Matlab
vous permet d'automatiser une instruction de boucle pour les variables
x = 0.0:0.1:2*pi
plot(x,cos(x));
est un exemple ......
Souvent, vous n'avez pas vraiment besoin de tracer une boucle