Класс: дескриптор
Поиск объектов-дескрипторов
Hmatch = findobj(H)
Hmatch = findobj(H,property,value,...,property,value)
Hmatch = findobj(H,'-not',property,value)
Hmatch = findobj(H,'-regexp',property,expression)
Hmatch = findobj(H,property,value,logicaloperator,property,value)
Hmatch = findobj(H,'-function',fh)
Hmatch = findobj(H,'-function',property,fh)
Hmatch = findobj(H,'-class',class)
Hmatch = findobj(H,'-isa',class)
Hmatch = findobj(H,'-property',property)
Hmatch = findobj(H,'-method',methodname)
Hmatch = findobj(H,'-event',eventname)
Hmatch = findobj(H,'-depth',d,___)
возвращает объекты, перечисленные в Hmatch = findobj(H)H и всех их потомков.
находит Hmatch = findobj(H,property,value,...,property,value)handle объекты с заданным значением свойства.
инвертирует выражение в следующем Hmatch = findobj(H,'-not',property,value)property
value пара. То есть найти объекты, указанное свойство которых не равно value.
использует регулярное выражение, определенное в Hmatch = findobj(H,'-regexp',property,expression)expression для поиска свойств с определенными значениями. Не все классы поддерживают использование регулярного выражения для поиска значений свойств.
применяет логический оператор к парам имя/значение. Поддерживаемые логические операторы:Hmatch = findobj(H,property,value,logicaloperator,property,value)
'-or'
'-and' (по умолчанию, если оператор не указан)
'-xor'
вызывает дескриптор функции Hmatch = findobj(H,'-function',fh)fh на объектах в H и возвращает объекты, для которых функция возвращает true.
вызывает дескриптор функции Hmatch = findobj(H,'-function',property,fh)fh по значению указанного свойства для объектов в H и возвращает объекты, для которых функция возвращает true. Функция должна возвращать скалярное логическое значение.
находит все объекты, принадлежащие указанному классу.Hmatch = findobj(H,'-class',class)
находит все объекты, принадлежащие указанному классу.Hmatch = findobj(H,'-isa',class)
находит все объекты в Hmatch = findobj(H,'-property',property)H с именованным свойством.
находит объекты с указанным именем метода.Hmatch = findobj(H,'-method',methodname)
находит объекты с указанным именем события.Hmatch = findobj(H,'-event',eventname)
указывает, сколько уровней в иерархиях экземпляров под объектами в Hmatch = findobj(H,'-depth',d,___)H для поиска.
Указать все -options в виде векторов символов или строковых скаляров.
Найдите объект с определенным значением свойства. Учитывая handle класс, BasicHandle:
classdef BasicHandle < handle properties Prop1 end methods function obj = BasicHandle(val) if nargin > 0 obj.Prop1 = val; end end end end
Создание массива BasicHandle объекты:
h(1) = BasicHandle(7); h(2) = BasicHandle(11); h(3) = BasicHandle(27);
Найти дескриптор объекта, чей Prop1 свойство имеет значение 7:
h7 = findobj(h,'Prop1',7);
h7.Prop1
ans =
7Найдите объект с определенным динамическим свойством. Учитывая button класс:
classdef button < dynamicprops properties UiHandle end methods function obj = button(pos) if nargin > 0 if length(pos) == 4 obj.UiHandle = uicontrol('Position',pos,... 'Style','pushbutton'); else error('Improper position') end end end end end
Создайте массив объектов-кнопок, только один элемент которых определяет динамическое свойство. Использовать findobj для получения дескриптора объекта с динамическим свойством ButtonCoord:
b(1) = button([20 40 80 20]); addprop(b(1),'ButtonCoord'); b(1).ButtonCoord = [2,3]; b(2) = button([120 40 80 20]); b(3) = button([220 40 80 20]); h = findobj(b,'-property','ButtonCoord'); h.ButtonCoord
ans =
2 3Поиск объектов на основе значения свойств объектов с помощью регулярных выражений. В то время как findobj имеет -regexp параметры, не все классы поддерживают этот параметр. В этом примере используется -function использование регулярного выражения из функции в качестве альтернативы -regexp вариант.
Этот класс определяет статический метод, строящий массив объектов. Каждый объект имеет Name свойство, содержащее символ, представляющий номер элемента массива.
classdef FindRegExpr < handle properties Name end methods (Static) function b = regXArray b = FindRegExpr.empty(0,50); for i = 1:50 b(i).Name = sprintf('%d',i); end end end end A = FindRegExpr.regXArray;
a =
1×50 FindRegExpr array with properties:
NameПоиск объектов, чьи Name свойство содержит вектор символов, начинающийся с символа '1'.
subArray = findobj(a, '-function', 'Name', @(x) ~isempty(regexp(x, '^1\d*')));
subArray =
11×1 testRegExpr array with properties:
Namefindobj имеет доступ только к публичным членам.
Если нет совпадений, findobj возвращает пустой массив того же класса, что и входной массив H.
Приоритет логического оператора соответствует правилам приоритета MATLAB. Дополнительные сведения см. в разделе Приоритет оператора.
Управление приоритетом путем группирования в массивах ячеек