如何找到自己的类创建的对象?

时间:2016-11-27 23:42:29

标签: matlab class oop object find

我在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)来查找我的对象。但是findallfindobj总是会返回一个空矩阵,无论我在做什么。你有什么线索吗?感谢。

编辑我需要这样的事情:

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

1 个答案:

答案 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本来要好多了。 但据我所知,这仅适用于图形句柄,因此您必须为您的课程重载它。

<击>

那个重载的函数会包含类似的东西。

如Navan所说,

编辑,这有效:

B = findobj(A, 'color', 'red');
[B.color] = deal('orange');

似乎也比strcmp方法更快。