如何创建一个属性的对象在MATLAB列表
问题描述:
我定义Node
类像这样在MATLAB:如何创建一个属性的对象在MATLAB列表
classdef Node
properties
X;
Y;
end
end
我需要定义一个HeadNode
类是这样的:
classdef HeadNode
properties
X;
Y;
% list<Node> NodeList = new list<Node>(); (C# syntax)
end
end
而且我需要Add
这种属性的方法(C#语法):
HeadNode HeadNode1 = new HeadNode();
Node Node1 = new Node();
Node1.X = 1;
Node1.Y = 2;
HeadNode1.Nodes.Add(Node1);
如果有人能解释如何为matlab中的对象列表创建一个属性并为此定义Add方法,这将是非常有帮助的?
谢谢。
答
Matlab没有像列表那样的数据结构,所以一般的方法是将对象存储在一个数组中。
classdef Node < handle
properties
x
y
end
end
初始化nodes
的HeadNode
属性来使用empty()
方法,这是所有非抽象Matlab的类的隐藏方法的空Node
阵列:首先,从手柄继承这两个类。在构造函数中,而不是在属性定义块来执行这样的初始化是很重要的,否则HeadNode
所有实例将reference the same location in memory:
classdef HeadNode < handle
properties
x
y
nodes
end
methods
function obj = HeadNode()
obj.nodes = Node.empty();
end
end
end
这种方式可以如添加node1
到nodes
数组的末尾:
node1 = Node();
node1.x = 1;
node1.y = 2;
headNode1 = HeadNode();
headNode1.nodes(end+1) = node1;
另一种方法是使用Java的名单,但这样一来,你只限于存储一些基本类型和Java对象,即你将不能够存储一个Matlab在java列表中的对象。
开始想起它......我误解了这个问题,他说他想创建一个传统的c样式列表(即包含指向下一个成员的指针)。他所要求的是没有'handle'类的完全可行的。 –
虽然这是一个非常奇怪的结构,如果你问我。我不得不怀疑OP是否误解/歪曲了他被要求解决的问题。 –
谢谢你回答我的问题。我使用了一个数组而不是一个列表。 –