我有一个简单的加权树,有根,节点和叶子。现在我想为从根到叶子的每条路径分配一个值,这将是所有权重的总和。MATLAB中的结构/类?
有没有创建一个有两个字段的结构的方法:值和一个向量(它将保存路径)即:(10,[root,node1,node3,node5])(路径长度不每次都不必一样!),然后我可以存储在一个矢量[path1 path2 path3 ...]中?
@编辑:另外,我知道有struct(),但我不喜欢它,有没有其他的方式来做到这一点?
我有一个简单的加权树,有根,节点和叶子。现在我想为从根到叶子的每条路径分配一个值,这将是所有权重的总和。MATLAB中的结构/类?
有没有创建一个有两个字段的结构的方法:值和一个向量(它将保存路径)即:(10,[root,node1,node3,node5])(路径长度不每次都不必一样!),然后我可以存储在一个矢量[path1 path2 path3 ...]中?
@编辑:另外,我知道有struct(),但我不喜欢它,有没有其他的方式来做到这一点?
您应该看看单元格阵列是否可以实现您想要的功能:{10 [root,node1,node3,node5]}
。阅读有关他们here。
我建议将值和路径向量存储在两个单独的数组中,并将它们组合到一个结构中。您也可以将路径长度作为单独的矢量添加。它们将通过数组索引映射到对方。
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);
会做,谢谢。 –