findobj функция может сканировать иерархию объектов для получения дескрипторов объектов, имеющих определенные значения свойств.
Для идентификации все графические объекты имеют Tag свойство, для которого можно задать любой вектор символов. Затем можно выполнить поиск определенной пары свойство/значение. Например, предположим, что создается флажок, который иногда деактивируется в интерфейсе пользователя. Путем назначения уникального значения для Tag , можно найти конкретный объект:
uicontrol('Style','checkbox','Tag','save option')
Использовать findobj для определения местоположения объекта, Tag свойство имеет значение 'save option«и отключить его:»
hCheckbox = findobj('Tag','save option'); hCheckbox.Enable = 'off'
Если начальный объект не указан, findobj поиск из корневого объекта, поиск всех вхождений указанной комбинации имя/значение свойства.
Чтобы найти объекты со скрытыми маркерами, используйте findall.
В этом примере показано, как найти текстовые объекты с помощью String собственность.
Следующий график содержит текстовые объекты, маркирующие определенные значения функции.

Предположим, что требуется переместить текст, обозначающий значение sin (t) = .707, из текущего местоположения в[pi/4,sin(pi/4)] в точку [3*pi/4,sin(3*pi/4)] где функция имеет то же значение (светло-серым цветом на графике).
Определение дескриптора текстового объекта, обозначающего точку [pi/4,sin(pi/4)] и изменить его Position собственность.
Использовать findobjвыберите значение свойства, однозначно определяющее объект. В этом примере используется текст String свойство:
hText = findobj('String','\leftarrowsin(t) = .707');
Перемещение объекта в новое положение, определяющее текст Position в единицах осей.
hText.Position = [3*pi/4,sin(3*pi/4),0];
findobj позволяет ограничить поиск, указав начальную точку в иерархии, а не начинаясь с корневого объекта. Если в дереве объектов много объектов, эта возможность обеспечивает более быстрый поиск. В предыдущем примере известно, что интересующий текстовый объект находится в текущих осях, поэтому можно ввести:
hText = findobj(gca,'String','\leftarrowsin(t) = .707');
В этом примере показано, как найти дескрипторы объектов с помощью регулярных выражений для определения определенных значений свойств. Дополнительные сведения о регулярных выражениях см. в разделе regexp.
Предположим, что создается следующий график и требуется изменить определенные свойства созданных объектов.
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';

Передача регулярного выражения findobj позволяет сопоставить определенные шаблоны. Например, предположим, что необходимо задать значение MarkerFaceColor свойство для зеленого цвета на всех стволовых объектах, которые не имеют Tag свойство имеет значение 'Steady State' (то есть стебли, представляющие распадающиеся и растущие экспоненты).
hStems = findobj('-regexp','Tag','^(?!Steady State$).'); for k = 1:length(hStems) hStems(k).MarkerFaceColor = 'green' end
Укажите начальную точку в дереве объектов, чтобы ограничить область поиска. Начальной точкой может быть маркер перемещения фигуры, осей или группы маркеров перемещения объектов.
Например, предположим, что требуется изменить цвет грани маркера стеблей в определенных осях:
x = 0:30; y = [1.5*cos(x);4*exp(-.1*x).*cos(x);exp(.05*x).*cos(x)]'; tiledlayout(3,1) ax1 = nexttile; stem(x,y(:,1)) ax2 = nexttile; stem(x,y(:,2)) ax3 = nexttile; stem(x,y(:,3))
Задайте цвет граней маркера только в третьих осях.
h = findobj(ax3,'Type','stem'); h.MarkerFaceColor = 'red';

Дополнительные сведения об ограничении области и глубины поиска объектов см. в разделе findobj и findall.