我使用自己的类 my_class
在 MATLAB 中创建了一个对象,如下所示
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
最佳答案
我想你只是想要这个:
% 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
读起来会好得多。 但据我所知,这只适用于图形句柄,因此您必须为您的类重载它。 罢工>
那个重载函数将包含与此类似的内容。 罢工>
编辑正如 Navan 所指出的,这有效:
B = findobj(A, 'color', 'red');
[B.color] = deal('orange');
似乎比 strcmp
更快方法也是如此。
关于matlab - 如何找到自己的类创建的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40835225/