在另一个MATLAB类中创建一个类的对象数组

时间:2013-04-20 20:06:11

标签: matlab matlab-class

我正在尝试在另一个类Cell Cell`中创建类in MATLAB. The class的对象数组:

classdef Cell
 properties
    ID;
    EntityID;
    ZoneID;
    NeighborID; 
    State;
    nextChangeTime;
 end

 methods
 % Define the constructor
    function obj = Cell()
        obj.ID = zeros(1);
        obj.EntityID = zeros(1);
        obj.ZoneID = zeros(1);
        obj.NeighborID = zeros(1); 
        obj.State = zeros(1);
        obj.nextChangeTime = zeros(1);
    end
 end

现在我有另一个班级System。我尝试制作一组​​Cell个像这样的对象:

classdef System
  properties
    Cells;
  end

  methods
    function obj = System(dimx,dimy)
      obj.Cells(dimx,dimy) = Cell();
    end
  end

但我认为我使用的是错误的格式。不确定这是否可行。任何有关如何实现这一目标的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

为了能够创建用户定义类的对象数组(例如Cell类),为用户定义的类提供默认构造函数是很方便的。默认构造函数是不带参数的构造函数(即nargin==0时)。创建数组时,数组对象的隐式初始化由此构造函数完成。如果缺少此构造函数,则尝试通过“扩展”标量对象来构建数组将生成错误。

创建对象数组(不定义默认构造函数)的另一种方法是使用horzcatvertcatcat

Aaaaand ...在访问对象的属性时,不要忘记提及您正在访问的对象:

obj.Cells = Cell.empty(0,0);  % Force the type of empty Cells to Cell class
obj.Cells(dimx,dimy) = Cell();