我在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方法,那将会非常有用吗?
感谢。
答案 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对象。