如何在matlab中为对象List创建属性

时间:2016-07-23 19:19:13

标签: matlab list class properties

我在MATLAB中定义Node这样的类:

classdef Node
   properties
    X;
    Y;
   end
end

我需要像这样定义一个HeadNode类:

classdef HeadNode 
   properties
     X;
     Y;
     % list<Node> NodeList = new list<Node>(); (C# syntax)
   end
end

此外,我需要{this 1}}此属性的方法(C#语法):

Add

如果有人能解释如何在matlab中为对象列表创建属性并为此定义Add方法,那将会非常有用吗?

感谢。

1 个答案:

答案 0 :(得分:1)

Matlab没有像列表这样的数据结构,因此一般的方法是将对象存储在数组中。首先,从handle继承这两个类:

classdef Node < handle
    properties
        x
        y
    end
end

使用empty()方法将nodes的{​​{1}}属性初始化为空HeadNode数组,这是所有非抽象Matlab类的隐藏方法。在构造函数中而不是在属性定义块中执行此类初始化非常重要,否则Node的所有实例都将reference the same location in memory

HeadNode

这样你就可以将classdef HeadNode < handle properties x y nodes end methods function obj = HeadNode() obj.nodes = Node.empty(); end end end 添加到node1数组的末尾:

nodes

另一种方法是使用java列表,但这样您只能存储一些基本类型和Java对象,即您无法在Java列表中存储Matlab对象。