Main Content

Identificadores en expresiones lógicas

Los objetos identificadores no se evalúan en valores lógicos de true o false. Debe utilizar la función que prueba el estado de interés y devuelve un valor lógico.

Si el identificador es válido

Utilice isgraphics para determinar si una variable contiene un identificador de objeto de gráficas válido. Por ejemplo, suponga que hobj es una variable en el área de trabajo. Antes de operar sobre esta variable, pruebe su validez:

if isgraphics(hobj)
   ...
end

También puede determinar el tipo de objeto:

if isgraphics(hobj,'figure')
   ...% hobj is a figure handle
end

Si el resultado está vacío

No puede utilizar objetos vacíos directamente en instrucciones lógicas. Utilice isempty para devolver un valor lógico que se pueda utilizar en instrucciones lógicas.

Algunas propiedades contienen el identificador de otros objetos. En los casos en que no exista el otro objeto, la propiedad contiene un objeto vacío:

close all
hRoot = groot;
hRoot.CurrentFigure
ans = 

0x0 empty GraphicsPlaceholder array.

Por ejemplo, para determinar si existe una figura actual consultando la propiedad raíz CurrentFigure, utilice la función isempty:

hRoot = groot;
if ~isempty(hRoot.CurrentFigure)
   ... % There is a current figure
end

Otro caso en que el código puede encontrarse con un objeto vacío es al buscar identificadores. Por ejemplo, suponga que define la propiedad Tag de una figura en el vector de caracteres 'myFigure' y utiliza findobj para obtener el identificador de esta figura:

if isempty(findobj('Tag','myFigure'))
   ... % That figure was NOT found
end

findobj devuelve un objeto vacío si no hay ninguna coincidencia.

Si los identificadores son iguales

Hay dos estados en que los identificadores son iguales:

  • Dos identificadores cualesquiera hacen referencia al mismo objeto (pruebe con ==).

  • Los objetos a los que dos objetos cualesquiera hacen referencia son de la misma clase y todas las propiedades tienen los mismos valores (pruebe con isequal).

Suponga que desea determinar si h es un identificador de una figura concreta con un valor de myFigure para su propiedad Tag:

if h == findobj('Tag','myFigure')
   ...% h is correct figure
end

Si desea determinar si distintos objetos presentan el mismo estado, utilice isequal:

hLine1 = line;
hLine2 = line;
isequal(hLine1,hLine2)
ans =

     1