如何在MATLAB/OCTAVE GNU的TREEPLOT函数中找到节点和边的数量?

t9aqgxwy  于 11个月前  发布在  Matlab
关注(0)|答案(1)|浏览(106)

如何在MATLAB/OCTAVE GNU的TREEPLOT函数中找到节点和边的数量?
创建树型图,并对TREEPLOT中连接的标记和线段进行计数。

clf;  
treeplot([2 4 2 0 6 4 6]);  
% Plot a simple tree plot

字符串

qgzx9mmu

qgzx9mmu1#

应该可以将属性确定为节点、边、树等的数量。只需要解析数组。
假设数组格式良好,并命名为 trep

properties.totalNodes=numel(trep);
properties.totalEdges=numel(trep)-sum(trep==0);
properties.separateTrees=sum(trep==0);

if sum(trep==0)>1
for zz=1:sum(trep==0)
    mask=find(~[0 trep 0]);
    nonZeroSeq=diff(mask);
    properties.(['tree' num2str(zz)]).Nodes=nonZeroSeq(zz+1);
    properties.(['tree' num2str(zz)]).Edges=nonZeroSeq(zz+1)-1;
end
end

字符串

免责声明:我没有时间为每种情况 * 验证 * 这段代码,所以它可能会返回错误的结果。逐个手动复查

或者,可以使用有向图函数代替treepot

dg=digraph(trep(trep~=0),find(trep));
plot(dg);


有向图对象dg带有两个属性,边和节点,可以通过以下方式访问:

dg.Edges
dg.Nodes

相关问题