假设我们有类对象的数组。我们的类是handle类的子类。我们可以使用findobj函数通过第一级属性的值来查找句柄对象。没关系。
例如,类结构:
className
|——property1
|——property2
|——structproperty1
———|——innerProperty1
———|——innerProperty2
只有填充了每个结构字段时,findobj函数才会返回结果。以下是一个例子。
b: 1x1234 className
structToFind = struct ('innerProperty1', 10, 'innerProperty2', 20);
H = findobj (b, 'structproperty1', structToFind);
但我想通过innerProperty1搜索className句柄对象。有没有办法做到这一点?
更新#1
为避免误会,我想在不设置innerProperty2的情况下搜索对象数组,例如。但它将返回具有精确结构的类对象处理程序('innerProperty1',10)。因此,如果设置了object.structproperty1.innerProperty2,函数将不会返回下面示例的对象处理程序。
structToFind = struct ('innerProperty1', 10);
H = findobj (b, 'structproperty1', structToFind);
答案 0 :(得分:1)
我找到了一个更简单的解决方案。
我用了findobj(H,'-function',fh)
。我们可以使用函数句柄来过滤对象。所以对于这个测试例子,它应该是这样的:
b: 1x1234 className
H = findobj (b, '-function', 'structproperty1', @(x) isfield(x, 'innerProperty1') );