Main Content

drawnow

Actualizar figuras y procesar callbacks

Descripción

ejemplo

drawnow actualiza figuras y procesa cualquier callback pendiente. Utilice este comando si modifica objetos de gráficas y desea ver las actualizaciones en la pantalla de inmediato.

ejemplo

drawnow limitrate limita el número de actualizaciones a 20 fotogramas por segundo. Si han transcurrido menos de 50 milisegundos desde la última actualización o si el renderizador de gráficas está ocupado con el cambio anterior, drawnow descarta las nuevas actualizaciones. Utilice este comando si está actualizando objetos de gráficas en un bucle y no necesita ver todas las actualizaciones en la pantalla. Omitiendo las actualizaciones se pueden crear animaciones más rápidas. Los callbacks pendientes se procesan, por lo que puede interactuar con figuras durante las animaciones.

drawnow nocallbacks aplaza los callbacks, como el callback ButtonDownFcn, hasta el siguiente comando drawnow completo. Utilice esta opción si desea evitar que los callbacks interrumpan el código. Aplazar los callbacks deshabilita temporalmente las interacciones de la figura, como los clics del ratón o el cambio de tamaño de la figura. Aplazar los callbacks no afecta a la velocidad de la animación.

drawnow limitrate nocallbacks limita el número de actualizaciones a 20 fotogramas por segundo y omite las actualizaciones si el renderizador está ocupado. Esta sintaxis también evita que los callbacks interrumpan el código, lo que deshabilita temporalmente las interacciones de la figura.

drawnow update omite las actualizaciones si el renderizador está ocupado y aplaza los callbacks. No se recomienda esta sintaxis. Utilice la opción limitrate en su lugar.

drawnow expose actualiza figuras, pero aplaza callbacks. No se recomienda esta sintaxis. Utilice la opción nocallbacks en su lugar.

Ejemplos

contraer todo

Cree una animación de una línea que crece conforme va acumulando 2.000 puntos de datos. Utilice drawnow para mostrar los cambios en la pantalla después de cada iteración por el bucle.

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,2000);

for k = 1:length(x)
    y = sin(x(k));
    addpoints(h,x(k),y);
    drawnow
end

Cree una animación de una línea que crece conforme va acumulando 10.000 puntos. Dado que hay 10.000 puntos, se tarda mucho en mostrar cada actualización en la pantalla. Cree una animación suave y más rápida limitando el número de actualizaciones con drawnow limitrate. A continuación, muestre las actualizaciones finales en la pantalla llamando a drawnow después de que el bucle finalice.

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,10000);

for k = 1:length(x)
    y = sin(x(k));
    addpoints(h,x(k),y);
    drawnow limitrate
end
drawnow

Calcule todos los datos antes del bucle de animación.

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,10000);
y = sin(x);

for k = 1:length(x)
    addpoints(h,x(k),y(k));
    drawnow limitrate
end
drawnow

Si tiene cálculos largos, calcular previamente los datos puede mejorar el rendimiento. Hacer el cálculo previamente minimiza el tiempo de cálculo dejando que se ejecute sin interrupciones. Además, permite garantizar una animación suave centrándose únicamente en el código de las gráficas del bucle de animación.

Más acerca de

contraer todo

Acciones equivalentes a drawnow

Estas acciones equivalen a llamar a un comando drawnow completo:

Sugerencias

  • La opción nocallbacks siempre añade los callbacks que interrumpen a la cola. Si desea descartar los callbacks que interrumpen, utilice las propiedades Interruptible y BusyAction en su lugar.

Capacidades ampliadas

Entorno basado en subprocesos
Ejecute código en segundo plano con MATLAB® backgroundPool o acelere código con Parallel Computing Toolbox™ ThreadPool.

Historial de versiones

Introducido antes de R2006a