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

标签 matlab class oop object find

我使用自己的类 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/

相关文章:

matlab - 如何使用 MATLAB 获取 SVM 中的预测值?

c# - 我应该在创建任何实例之前调用 static init()

matlab - 带实线和灰色的小网格

matlab - 此MATLAB代码有什么问题?

C++ 类定义分为两个 header ?

python - 将带有指针数组的不同 "C"函数作为函数参数传递给类

c# - 是否有静态方法返回非单例类糟糕设计的类实例(例如通过 id)?

oop - Go 是否支持模板或泛型?

matlab - 在 MATLAB 中绘制元胞数组

java - 在抽象类中初始化 Enum 变量