Main Content

Creación sensata de objetos

Carga de objetos

Los objetos de gráficas son estructuras complejas que almacenan información (características de objetos y datos), están atentos a determinadas situaciones que se producen (propiedades callback) y pueden provocar cambios en otros objetos para incluir su existencia (actualizar los límites de ejes, etc.). Por tanto, crear un objeto supone el consumo de recursos.

Cuando el rendimiento se convierte en una consideración importante, intente alcanzar sus objetivos de forma que consuman la mínima cantidad de recursos.

A menudo, puede mejorar el rendimiento siguiendo las pautas que se indican a continuación:

  • No cree objetos innecesarios.

  • Evite buscar la jerarquía del objeto.

No crear objetos innecesarios

Busque casos en los que pueda crear menos objetos y lograr los mismos resultados. Por ejemplo, suponga que desea representar un arreglo de puntos de 10 por 1000 mostrando solo los marcadores.

Este código crea 1000 objetos de línea:

x = rand(10,1000);
y = rand(10,1000);
plot(x,y,'LineStyle','none','Marker','.','Color','b');

Convierta los datos de 10 por 1000 a 10 000 por 1. Este código crea una gráfica que parece la misma, pero solo crea un objeto:

plot(x(:),y(:),'LineStyle','none','Marker','.','Color','b')

Utilizar NaN para simular varias líneas

Si coordina los datos que contienen NaN, MATLAB® no representa dichos puntos. Puede añadir NaN a los datos del vértice para crear segmentos de línea que parezcan líneas independientes. Coloque los NaN en las mismas ubicaciones de los elementos en cada vector de datos. Por ejemplo, aparece este código para crear tres líneas independientes:

x = [0:10,NaN,20:30,NaN,40:50];
y = [0:10,NaN,0:10,NaN,0:10];
line(x,y)

Modificar datos en vez de crear nuevos objetos

Para ver distintos datos sobre lo que básicamente es la misma gráfica, resulta más eficiente el actualizar los datos de objetos existentes (líneas, texto, etc.) que volver a crear toda la gráfica.

Por ejemplo, suponga que desea visualizar el efecto de sus datos al variar determinados parámetros.

  1. Establezca los límites de cualquier eje que se pueda determinar por adelantado o establezca los modos de los límites de los ejes en manual.

  2. Vuelva a calcular los datos con los nuevos parámetros.

  3. Utilice los nuevos datos para actualizar las propiedades de los datos de los objetos de líneas, texto, etc. utilizados en la gráfica.

  4. Llame a drawnow para actualizar la figura (y todos los objetos secundario de la misma).

Por ejemplo, suponga que desea actualizar una gráfica a medida que cambian los datos:

figure
z = peaks;
h = surf(z);
drawnow 
zlim([min(z(:)), max(z(:))]);
for k = 1:50
   h.ZData = (0.01+sin(2*pi*k/20)*z);
   drawnow
end