Класс: указатель
Поиск указателя объектов
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: Name
findobj
имеет доступ только к публичным представителям.
Если совпадений нет, findobj
возвращает пустой массив того же класса, что и входной массив H
.
Приоритет логического оператора соответствует правилам приоритета MATLAB. Для получения дополнительной информации см. раздел Приоритет операторов.
Управляйте приоритетом путем группировки в массивах ячеек