Trazar dentro de un ciclo en MATLAB

Estoy haciendo algo como esto:

a = [1:100]; for i=1:100, plot([1:i], a(1:i)); end 

Mi problema es que la ttwig no se muestra hasta que se termine el ciclo. ¿Cómo puedo mostrar / actualizar la ttwig en cada iteración?

Utilice DRAWNOW

 a = [1:100]; for i=1:100, plot([1:i], a(1:i)); drawnow end 

Alternativamente, es posible que desee echar un vistazo a ANYMATE desde el intercambio de archivos.

Otra forma de hacer esto, si solo quiere visualizarlo sin guardar la animación, es utilizar los datos de refreshdata lugar del plot para los gráficos posteriores. Aún deberá llamar a drawnow para que se actualice en pantalla.

ya sea uso

 set(fig_handle,'XData',new_xdata_array) set(fig_handle,'YData',new_ydata_array) refreshdata drawnow 

o usar

 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 

para su ejemplo, esto podría verse así:

 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 

No es tan útil para gráficos de líneas simples (para los cuales plot(); drawnow; es más simple y más rápido), pero cuando se necesita crear figuras más complicadas que involucren múltiples tipos de gráficos, esto puede ser útil.

De la documentación para 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 permite ordenar-automatizar una statement de bucle para las variables

 x = 0.0:0.1:2*pi plot(x,cos(x)); 

es un ejemplo ……

Muchas veces no es necesario trazar “en” un bucle