如何使用matlab在类中实现结构数组?

时间:2014-03-09 14:58:12

标签: matlab class struct structure

classdef myclass
    properties
        prop
    end

methods

    function obj=myclass(p)
        p=struct('field1',[],'field2',[]);
        obj.prop=p;
    end


    function r = plus(p,q)

        r.prop = p;
        r.prop = q;

        obj1 = myclass(struct('field1',[],'field2',[]));
        obj2 = myclass(struct('field1',[],'field2',[]));


        r = myclass(add(obj1.prop, obj2.prop));
    end 

end
end

这是我的代码。我的结构数组由字段组成:字段1和字段1。域2。我的班级有一个属性:道具。我已经创建了使用struct的函数,我想在类方法下使用这些函数。我如何在课堂上定义我将在全班使用struct?

由于

2 个答案:

答案 0 :(得分:0)

在我看来,您正在尝试使用构造函数初始化prop结构。然后,您使用plus方法将新结构作为数组项添加到prop。如果这是你想要做的,你可以这样做:

classdef myClass < handle
   properties
      prop
   end

   methods
      function obj = myClass(p)
         obj.prop = p;
      end

      function addItem(obj, q)
         obj.prop = [obj.prop, q];
      end 
   end
end

你可以这样使用:

p = struct('field1',[],'field2',[]);
x = myClass(p);
x.addItem(p);

然后x.prop将是:

1x2 struct array with fields:

    field1
    field2

此类不强制输入值为结构。如果输入值不是所需的格式,您可以进行一些检查并抛出错误。

答案 1 :(得分:0)

您可以在属性定义块中定义属性的类型。

classdef myclass
    properties
        prop = struct
    end
end

如果您尝试将另一种类型写入道具,例如在构造函数中使用obj.prop = 2的double值,会出现错误。