如何在MATLAB/GNU Octave的TREEPLOT函数中统计节点与边的数量
在MATLAB/GNU Octave中统计Treeplot的节点与边数量
方法一:从图形对象中直接统计(符合先创建图形再统计的要求)
运行示例代码生成树图后,可通过提取图形对象的属性区分节点和边:treeplot绘制的节点是带有标记(默认圆形)的Line对象,边是不带标记的Line对象。筛选这两类对象的数量即可得到统计值。
完整代码:
clf; tree = [2 4 2 0 6 4 6]; treeplot(tree); % 绘制树图 % 获取当前坐标轴下所有Line类型的图形对象 line_objs = findobj(gca, 'Type', 'Line'); % 统计节点数量:筛选Marker属性不为'none'的对象 node_num = sum(~strcmp({line_objs.Marker}, 'none')); % 统计边数量:筛选Marker属性为'none'的对象 edge_num = sum(strcmp({line_objs.Marker}, 'none')); % 输出结果 disp(['节点数量:', num2str(node_num)]); disp(['边数量:', num2str(edge_num)]);
方法二:从输入数组直接推导(快速验证)
treeplot的输入向量tree中,每个索引对应一个节点,元素值是该节点的父节点(0代表根节点)。因此:
- 节点数量 = 输入向量的长度,即
length(tree) - 树结构的边数 = 节点数 - 1,即
length(tree) - 1
对于示例输入[2 4 2 0 6 4 6],节点数为7,边数为6,和图形统计的结果一致。
内容的提问来源于stack exchange,提问作者challote
相关产品推荐
相关产品推荐

