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