1

我在 Matlab 中使用“struct”类型元素作为节点实现了一个二叉树。一棵 N 节点树有 N 个这样的结构。

我的问题是我有 M 个这样的树,每个树都有不同数量的节点,N_1,N_2,...,N_M。如何将这些树保存在可以迭代的列表或数组中?像 struct of structs 这样的几次试验似乎没有奏效。

编辑:我想做类似以下的事情。myClassTree 返回具有 N_i 个节点的树。

trees = struct;
for i=1:nTrees
    tree = myClassTree(train(bags(i,:),:), entropy, depth);
    trees(i) = tree;
end
4

1 回答 1

2

最简单的事情是创建一个元胞数组。只需替换trees(i) = tree;trees{i} = tree;(注意大括号,而不是括号)。

每当您要存储混合数据类型的数组时,元胞数组都很有用。要访问元胞数组的元素,您可以再次使用大括号。例如,这应该可以按您的预期工作:

currentTree = trees{someIndex}; 

您发布的代码创建了一个结构数组,仅当结构具有相同的字段名时才有效。

如果你想要(不推荐)你可以创建一个结构体,但是做这样的事情trees.(['n' sprintf('%04d',i)]) = tree;。(但请不要。)

于 2013-06-04T00:44:24.720 回答