Evitar búsquedas repetitivas de los objetos
Cuando busca identificadores, MATLAB® tiene que buscar la jerarquía del objeto para encontrar los identificadores que coincidan, lo que consume tiempo. Guardar los identificadores a los que necesita acceder después es un método más rápido. La indexación de arreglos es, por lo general, más rápida que utilizar las funciones findobj
o findall
.
Este código crea 500 objetos de línea y, a continuación, llama a findobj
en un bucle.
figure ax = axes; for ix=1:500 line(rand(1,5),rand(1,5),'Tag',num2str(ix),'Parent',ax); end drawnow; for ix=1:500 h = findobj(ax,'Tag',num2str(ix)); set(h,'Color',rand(1,3)); end drawnow;
Un método mejor es guardar los identificadores en un arreglo e indexarlos en el arreglo en el segundo bucle for
.
figure ax = axes; h = gobjects(1,500); for ix = 1:500 h(ix) = line(rand(1,5),rand(1,5),'Tag',num2str(ix),'Parent',ax); end drawnow; % Index into handle array for ix=1:500 set(h(ix),'Color',rand(1,3)); end drawnow
Limitar el ámbito de búsqueda
Si es necesario buscar identificadores, limite el número de objetos a buscar especificando un punto de inicio en el árbol de objetos. Por ejemplo, especifique el punto de inicio en la figura o los ejes que contengan los objetos que busca.
Otra forma de limitar el tiempo dedicado a la búsqueda de objetos es restringir la intensidad de la búsqueda. Por ejemplo, llamar a findobj
con la opción 'flat'
restringe la búsqueda a los objetos en un arreglo de identificadores determinado.
Utilice las funciones findobj
y findall
para buscar identificadores.
Para obtener más información, consulte Buscar objetos