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.