我在MATLAB中使用我自己的类my_class
创建了一个对象
car = my_class();
与
classdef my_class < handle
properties
color = 'red';
end
methods
function obj = my_class()
% ...
end
end
end
现在我试图通过类(my_class
)或属性(color
)来查找我的对象。但是findall
或findobj
总是会返回一个空矩阵,无论我在做什么。你有什么线索吗?感谢。
编辑我需要这样的事情:
car1 = my_classA();
car2 = my_classA();
house1 = my_classB(); ... house25 = my_classB();
tree1 = my_classC(); ... tree250 = my_classC();
在我的代码中,我不能引用句柄的名称(如car2.color
),因为我有许多不同的对象,我想通过一个函数来搜索它们,如下所示:
loop over all objects (maybe with findobj/findall without knowing object name/handle)
if object is of class `my_classA`
get handle of `my_classA`
change `color`
else if object is of class `my_classB`
get handle of `my_classB`
do something ...
end
end
答案 0 :(得分:2)
我想你只想要这个:
% Create example array of objects
A(20) = object;
[A([3 14 17]).color] = deal('blue');
% Get those objects which are red, and change to orange
[A(strcmp({A.color}, 'red')).color] = deal('orange');
我不得不承认,findobj
本来要好多了。 但据我所知,这仅适用于图形句柄,因此您必须为您的课程重载它。 击>
那个重载的函数会包含类似的东西。 击>
编辑,这有效:
B = findobj(A, 'color', 'red');
[B.color] = deal('orange');
似乎也比strcmp
方法更快。