Main Content

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 sintaxis de notación de puntos utiliza el objeto variable y el nombre de la propiedad, que distingue entre mayúsculas y minúsculas, conectado con un punto (.) para formar una notación de nombre de propiedad de punto del objeto:

object.PropertyName

Si el objeto variable 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 esta determinada propiedad Color de la línea:

h.Color
ans =

         0    0.4470    0.7410

Si asigna el valor de color a un 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 a la primera columna en y utilizando el índice de arreglo:

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

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

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

Unión de datos a los valores de propiedad

Con la notación de puntos, puede utilizar la indexación "final" para unir datos a las propiedades que contengan arreglos de datos como la línea XData y YData. Por ejemplo, este código actualiza la línea XData y YData 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 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 de objetos de gráficas son identificadores

Las variables de objetos devueltas por las funciones de gráficas son identificadores. Los identificadores son referencias a los objetos actuales. 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 la misma a la que se accede desde la variable h2.

h.Color
ans =

     1     0     0

h y h2 hacen referencia al mismo objeto. La copia de una variable de objeto del identificador 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 contenga 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 prioridades que contiene un objeto, utilice la función get:

get(h)

MATLAB devuelve una lista de las propiedades de objetos 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 del formulario:

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 estructura 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'