Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Acceder a los valores de las propiedades

Propiedades de los objetos y notación de puntos

La representación de las funciones devuelve el objeto u objetos creados por la función. Por ejemplo:

h = plot(1:10);

h se refiere a la línea dibujada en la gráfica de los valores 1 hasta 10.

La notación de puntos es una nueva sintaxis para acceder a las propiedades de los objetos a partir de la versión R2014b. Esta sintaxis utiliza la variable del objeto y el nombre de la propiedad, distinguiendo entre mayúsculas y minúsculas para esta, conectados con un punto (.) para formar una notación de objeto-punto-nombre de propiedad:

object.PropertyName

Si la variable del objeto no es escalar, utilice la indexación para referirse a un solo objeto:

object(n).PropertyName

Variable del objeto escalar

Si h es la línea creada por la función plot, la expresión h.Color es el valor de la propiedad Color de esta línea en particular:

h.Color
ans =

         0    0.4470    0.7410

Si asigna el valor de color a una variable:

c = h.Color;

La variable c es doble.

whos
  Name      Size            Bytes  Class  

  c         1x3                24  double   
  h         1x1               112  matlab.graphics.chart.primitive.Line 

Puede cambiar el valor de la propiedad Color de esta línea con una instrucción de asignación:

h.Color = [0 0 1];

Utilice referencias de propiedad de notación de puntos en expresiones:

meanY = mean(h.YData);

O para cambiar el valor de la propiedad:

h.LineWidth = h.LineWidth + 0.5;

Haga referencia a otros objetos contenidos en propiedades con varias referencias de puntos:

h.Annotation.LegendInformation.IconDisplayStyle
ans =

on

Configure las propiedades de los objetos contenidos en las propiedades:

ax = gca;
ax.Title.FontWeight = 'normal';

Variable del objeto no escalar

Las funciones gráficas pueden devolver un arreglo de objetos. Por ejemplo:

y = rand(5);
h = plot(y);
size(h)
ans =

     5     1

Acceda a la línea que representa la primera columna en y utilizando el índice de arreglo:

h(1).LineStyle = '--';

Utilice la función set para configurar LineStyle de todas las líneas en el arreglo:

set(h,'LineStyle','--')

Anexar datos a los valores de propiedad

Con la notación de puntos, puede utilizar la indexación "final" para anexar datos a las propiedades que contengan arreglos de datos, como las propiedades XData e YData de la línea. Por ejemplo, este código actualiza XData e YData de la línea a la vez para aumentar la línea. Debe asegurarse de que el tamaño de los datos x e y de la línea son los mismos antes de la representación con la llamada a drawnow o volviendo a la línea de comandos de MATLAB®.

h = plot(1:10);
for k = 1:5
   h.XData(end + 1) = h.XData(end) + k;
   h.YData(end + 1) = h.YData(end) + k;
   drawnow
end

Las variables del objeto de gráficos son identificadores

Las variables de objetos devueltos por las funciones gráficas son identificadores. Los identificadores son referencias a los objetos en sí. Las variables de objetos que son identificadores se comportan de maneras específicas cuando se copian y cuando se elimina el objeto.

Copiar variable del objeto

Por ejemplo, cree una gráfica con una línea:

h = plot(1:10);

Ahora copie la variable del objeto a otra variable y establezca un valor de propiedad con la nueva variable del objeto:

h2 = h;
h2.Color = [1,0,0]

La asignación de una variable de objeto h a h2 crea una copia del identificador, pero no del objeto al que hace referencia la variable. El valor de la propiedad Color a la que se accede desde la variable h es el mismo al que se accede desde la variable h2.

h.Color
ans =

     1     0     0

h y h2 hacen referencia al mismo objeto. Copiar el identificador de una variable de objeto no copia el objeto.

Eliminar variables de objetos

Actualmente hay dos variables de objetos en el área de trabajo que hacen referencia a la misma línea.

whos
  Name      Size            Bytes  Class                
  h         1x1               112  matlab.graphics.chart.primitive.Line
  h2        1x1               112  matlab.graphics.chart.primitive.Line

Ahora cierre la figura que contiene la gráfica de líneas:

close gcf

El objeto de línea ya no existe, pero las variables del objeto que hacía referencia a la línea siguen existiendo:

whos
  Name      Size            Bytes  Class                
  h         1x1               112  matlab.graphics.chart.primitive.Line
  h2        1x1               112  matlab.graphics.chart.primitive.Line

Sin embargo, las variables de objetos ya no son válidas:

h.Color
Invalid or deleted object.
h2.Color = 'blue'
Invalid or deleted object.

Para eliminar las variables de objetos no válidas, utilice clear:

clear h h2

Enumeración de las propiedades de los objetos

Para ver las propiedades que contiene un objeto, utilice la función get:

get(h)

MATLAB devuelve una lista de las propiedades del objeto y su valor actual:

    AlignVertexCenters: 'off'
            Annotation: [1x1 matlab.graphics.eventdata.Annotation]
          BeingDeleted: 'off'
            BusyAction: 'queue'
         ButtonDownFcn: ''
              Children: []
              Clipping: 'on'
                 Color: [0 0.4470 0.7410]
...
             LineStyle: '-'
             LineWidth: 0.5000
                Marker: 'none'
...

Puede ver los valores de las propiedades con un conjunto enumerado de valores posibles utilizando la función set:

set(h,'LineStyle')
    '-'
    '--'
    ':'
    '-.'
    'none'

Para mostrar todas las propiedades configurables incluyendo los valores posibles para las propiedades con un conjunto enumerado de valores, utilice set con la variable del objeto:

set(h)

Modificar las propiedades con set y get

También puede acceder y modificar las propiedades utilizando las funciones set y get.

La sintaxis básica para la configuración del valor de una propiedad en un objeto existente es:

set(object,'PropertyName',NewPropertyValue)

Para consultar el valor actual de una propiedad de objeto específica, utilice una instrucción de esta forma:

returned_value = get(object,'PropertyName');

Los nombres de propiedad siempre son vectores de caracteres. Puede utilizar comillas simples o una variable que sea un vector de caracteres. Los valores de propiedad dependen de la propiedad particular.

Operaciones de varios objetos/propiedades

Si el argumento del objeto es un arreglo, MATLAB configura el valor especificado en todos los objetos identificados. Por ejemplo:

y = rand(5);
h = plot(y);

Configura todas las líneas en rojo:

set(h,'Color','red')

Para configurar las mismas propiedades en un número de objetos, especifique los nombres y valores de propiedad utilizando un arreglo de estructuras o de celdas. Por ejemplo, defina una estructura para configurar las propiedades de los ejes de manera adecuada para mostrar una gráfica en concreto:

view1.CameraViewAngleMode = 'manual';
view1.DataAspectRatio = [1 1 1];
view1.Projection = 'Perspective';

Para configurar estos valores en los ejes actuales, escriba:

set(gca,view1)

Consultar varias propiedades

Puede definir un arreglo de celdas de los nombres de propiedades y utilizarlo para obtener los valores de esas propiedades. Por ejemplo, suponga que desea consultar los valores de las propiedades del "modo cámara" de los ejes. En primer lugar, defina el arreglo de celdas:

camModes = {'CameraPositionMode','CameraTargetMode',...
'CameraUpVectorMode','CameraViewAngleMode'};

Utilice este arreglo de celdas como un argumento para obtener el valor actual de estas propiedades:

get(gca,camModes)
ans = 
     'auto' 'auto' 'auto' 'auto'