首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab绘制一个复杂的结构

Matlab绘制一个复杂的结构
EN

Stack Overflow用户
提问于 2013-11-27 03:17:13
回答 1查看 234关注 0票数 0

我用Matlab实现了ID3决策树,并使用struct()来存储决策树。

基本上,树结构是这样的:

代码语言:javascript
复制
root: Attr1
left: [1x1 struct]
right: [1x1 struct]

是的,树结构是以递归的方式构造的。

有什么快速解决办法吗?这样我就可以画出我的树了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-27 04:54:26

我认为(如果我错了,有人可以纠正我),没有内置的方法来平缓递归结构。绘制树的一种可能的方法是使用treeplot,它要求您的数据以特定的格式。您可以通过以下方式实现这一点:

代码语言:javascript
复制
function [nodes,attr] = flatten_struct(dtree,level,nodes,attr)
% Flattens the decision tree struct into a format usable by treeplot
if isempty(dtree)
    return;
end
if nargin==1
    level=0;
    nodes=[];
    attr={}; 
end
nodes = [nodes,level];
attr = [attr,dtree.root];
[nodes,attr] = flatten_struct(dtree.right,level+1,nodes,attr);
[nodes,attr] = flatten_struct(dtree.left,level+1,nodes,attr);

您可以使用[nodes,attr] = flatten_struct(tree)调用此代码,然后可以使用treeplot(nodes)绘制树。您应该能够使用this中概述的方法添加标签,回答另一个问题。类似于:

代码语言:javascript
复制
[nodes,attr] = flatten_struct(tree);
treeplot(nodes);
[x,y] = treelayout(nodes);
for k=1:length(nodes)
    text(x(k),y(k),attr(k));
end

不过,您可能需要修改xy值,这样它们就不会重叠树节点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20233253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档