MATLAB中的结构/类?

时间:2010-03-07 14:53:03

标签: matlab

我有一个带有根,节点和叶子的简单加权树。现在我想为从根到叶子的每条路径分配一个值,它将是所有权重的总和。

有没有办法创建一个包含2个字段的结构:值和向量(将保存路径),即:(10,[root,node1,node3,node5])(路径的长度不是' t每次都必须相同!)然后我可以将它存储在一个向量中[path1 path2 path3 ...]?

@Edit:另外,我知道有结构()但是我真的不喜欢它,还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

您应该看看单元格数组是否符合您的要求:{10 [root,node1,node3,node5]}。阅读他们here

答案 1 :(得分:1)

我建议将值和路径向量存储在两个单独的数组中,并将它们组合成一个结构。您也可以将路径长度添加为单独的矢量。它们将通过数组索引相互映射。

leavesN = 20; % number of leaves
treestruct.path = cell(leavesN,1); % to store path vectors
treestruct.sumofweights = zeros(leavesN,1); % to store sum of weights
treestruct.pathlength = zeros(leavesN,1); % to store path length

treestuct.path{i} = [root,node1,node3,node5]; % I suppose those variables are numbers
treestruct.sumofweights(i) = 10;

treestruct.pathlength(i) = numel(treestuct.path{i});

或整棵树:

treestruct.pathlength = cellfun(@numel,treestuct.path);