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.

Buscar objetos

Buscar objetos con valores de propiedad específicos

La función puede examinar la jerarquía del objeto para obtener los identificadores de los objetos que tienen valores de propiedad específicos.findobj

Para la identificación, todos los objetos gráficos tienen una propiedad que se puede establecer en cualquier vector de caracteres.Tag A continuación, puede buscar el par de propiedades/valores específicos. Por ejemplo, suponga que crea una casilla de verificación que a veces se inactiva en la interfaz de usuario. Al asignar un valor único para la propiedad, puede encontrar ese objeto en particular:Tag

uicontrol('Style','checkbox','Tag','save option')

Utilícelo para localizar el objeto cuya propiedad está establecida en ' y deshabilitarlo:findobjTag'save option

hCheckbox = findobj('Tag','save option'); hCheckbox.Enable = 'off'

Si no especifica un objeto de inicio, busca desde el objeto raíz, encontrando todas las apariciones de la combinación de nombre de propiedad/valor de propiedad que especifique.findobj

Para buscar objetos con identificadores ocultos, utilice.findall

Buscar texto por propiedad de cadena

En este ejemplo se muestra cómo buscar objetos de texto mediante la propiedad.String

El siguiente gráfico contiene objetos de texto que etiquetan valores concretos de la función.

Supongamos que desea mover el texto etiquetando el valor sin (t). 707 desde su ubicación actual hasta el punto donde la función tiene el mismo valor (se muestra en gris claro en el gráfico).=[pi/4,sin(pi/4)][3*pi/4,sin(3*pi/4)]

Determine el identificador del objeto de texto que etiqueta el punto y cambie su propiedad.[pi/4,sin(pi/4)]Position

Para usar, elija un valor de propiedad que identifique de forma única el objeto.findobj Este ejemplo utiliza la propiedad Text:String

hText = findobj('String','\leftarrowsin(t) = .707');

Mueva el objeto a la nueva posición, definiendo el texto en unidades de ejes.Position

hText.Position = [3*pi/4,sin(3*pi/4),0];

permite restringir la búsqueda especificando un punto inicial en la jerarquía, en lugar de comenzar con el objeto raíz.findobj Si hay muchos objetos en el árbol del objeto, esta capacidad genera búsquedas más rápidas. En el ejemplo anterior, sabe que el objeto de texto de interés está en los ejes actuales, por lo que puede escribir:

hText = findobj(gca,'String','\leftarrowsin(t) = .707');

Utilice expresiones regulares con findobj

En este ejemplo se muestra cómo buscar identificadores de objeto mediante expresiones regulares para identificar valores de propiedad específicos. Para obtener más información acerca de las expresiones regulares, consulte.regexp

Supongamos que crea el siguiente gráfico y desea modificar ciertas propiedades de los objetos creados.

x = 0:30; y = [1.5*cos(x);4*exp(-.1*x).*cos(x);exp(.05*x).*cos(x)]'; h = stem(x,y); h(1).Marker = 'o'; h(1).Tag = 'Decaying Exponential'; h(2).Marker = 'square'; h(2).Tag = 'Growing Exponential'; h(3).Marker = '*'; h(3).Tag = 'Steady State';

Pasar una expresión regular para que le permita hacer coincidir patrones específicos.findobj Por ejemplo, supongamos que desea establecer el valor de la propiedad en verde en todos los objetos de tallo que tienen su propiedad establecida en (es decir, tallos que representan los exponenciales en descomposición y en crecimiento).MarkerFaceColornotTag'Steady State'

hStems = findobj('-regexp','Tag','^(?!Steady State$).'); for k = 1:length(hStems)    hStems(k).MarkerFaceColor = 'green' end

Limitar el alcance de la búsqueda

Especifique el punto inicial en el árbol de objetos para limitar el ámbito de la búsqueda. El punto de partida puede ser el identificador de una figura, ejes o un grupo de identificadores de objeto.

Por ejemplo, supongamos que desea cambiar el color de la cara del marcador de los tallos en un eje específico:

x = 0:30; y = [1.5*cos(x);4*exp(-.1*x).*cos(x);exp(.05*x).*cos(x)]'; ax(1) = subplot(3,1,1); stem(x,y(:,1)) ax(2) = subplot(3,1,2); stem(x,y(:,2)) ax(3) = subplot(3,1,3); stem(x,y(:,3))

Establezca el color de la cara del marcador de los tallos solo en los terceros ejes.

h = findobj(ax(3),'Type','stem'); h.MarkerFaceColor = 'red';

Para obtener más información sobre cómo limitar el alcance y la profundidad de una búsqueda de objetos, vea y.findobjfindall