MATLAB-绘制网络拓扑结构

参考文档连接:
1.拓扑结构的介绍
2.Matlab绘制树形图
3.Matlab–biograph() 函数

①星形拓扑结构

一、定义

星型拓扑结构是一个中心,多个分节点。它结构简单,连接方便,管理和维护都相对容易,而且扩展性强。网络延迟时间较小,传输误差低。中心无故障,一般网络没问题。中心故障,网络就出问题,同时共享能力差,通信线路利用率不高。
在这里插入图片描述

二、.m文件

%% 随机生成31个点
x=100*rand(31,1);
y=100*rand(31,1);
plot(x,y,'r*');
hold on;
%% center代表中心节点一个,children代表子节点30个
for center=1:1
for children=2:31
line([x(center,1),x(children,1)],[y(center,1),y(children,1)])   %将中心节点与所有的子节点连线
text(x(center,1),y(center,1),sprintf('%2.0f',center))  %备注出中心节点的序号
text(x(children,1),y(children,1),sprintf('%2.0f',children))  %备注出子节点的序号
end
end

三、 运行结果

在这里插入图片描述

②树形拓扑结构

一、定义

树形拓扑结构从总线拓扑演变而来。形状像一棵倒置的树,顶端是树根,树根以下带分支,每个分支还可再带子分支,树根接收各站点发送的数据,然后再广播发送到全网。好扩展,容易诊断错误,但对根部要求高。
在这里插入图片描述

二、.m文件

1.第一种方式

利用biograph函数生成树

%% 创建31个节点
for n=1:31
    ChannelName{n} = sprintf('%2.0f',n);
end
disp(ChannelName);
%% 画树状拓扑图
tree = [1 2;1 3;1 4;2 5;2 6;2 7;
  3 9;3 10;4 11;4 12;4 13;5 14;5 15;5 16;
    6 17;6 18;6 19;7 20;7 21;7 22;2 8;
    8 23;8 24;8 25;8 26;9 27;9 28;9 29;9 30;10 31;6 8;];
cm = zeros(31);
for i = 1:31
   cm(tree(i,1),tree(i,2)) = 1; %CM是这个图的邻接矩阵
end
bg1 = biograph(cm,ChannelName);
view(bg1);
  • biograph函数生成一个bioinformatics图对象。
  • BG = biograph(CM,IDs) 语句设置节点的序号名称。①IDs可以使一个元胞数组,数组中每个元素表示一个名字,数组长度与CM矩阵行列长度一致。IDs也可以是一个字符数组(此时各个节点的名字长度相同)。IDs必须是唯一的,不能重复。②参数CM是这个图的邻接矩阵(CM可以是稀疏矩阵形式表示也可以是一般方阵形式)。
  • 具体注解见参考文档链接

2.第二种方式

利用treeplot、treelayout函数
(如果你们用第一种方式biograph函数,运行出现’biograph’ requires Bioinformatics Toolbox 错误,出现这个错误是因为你的matlab没有Bioinformatics Toolbox工具包)

%用treeVec放树节点一共33个节点,数组每位存放的的内容是对应节点它的父节点

%如数组前三位,0 1 1,

% 0代表节点1的父节点为0

% 0后面的1代表节点2的父节点为1

% 1后面的1代表节点3的父节点为1,依次类推

treeVec = [0 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4
4 4 5 5 5 5 6 6 6 6 6 7 7 9 9 10 10];

%treeplot 在给定父指针向量的情况下绘制树形图

treeplot(treeVec);

count = size(treeVec,2);

%treelayout设置树或森林的布局

[x,y] = treelayout(treeVec);

x = x';

y = y';

%显示节点名

name1 = cellstr(num2str((1:count)'));

text(x(:,1),y(:,1),name1,'VerticalAlignment','bottom','HorizontalAlignment','right');

三、运行结果

1.第一种方式

biograph函数生成树

在这里插入图片描述

2.第二种方式

利用treeplot、treelayout函数
在这里插入图片描述

总结

  • 虽然想要的拓扑结构图大致呈现出来了,但是算法有点暴力,不是很便捷,效率不是很高,尤其体系在树形拓扑结构图那,因为所需的邻接矩阵是手动设置的,那对于有大量节点需求的应用是不适合的,运用起来会很繁琐。
  • 欢迎大家来交流,提供更好的解法,去改进脚本!
  • 9
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 如果你觉得使用biograph函数生成的拓扑图不好看,可能是因为你没有使用合适的节点名称或者邻接矩阵。在biograph函数中,你可以使用参数IDs来设置节点的序号名称。IDs可以是一个元胞数组,数组中每个元素表示一个名字,数组长度与邻接矩阵的行列长度一致。另外,你也可以使用字符数组作为IDs参数,但是需要注意各个节点的名字长度相同。确保节点名称的唯一性,不能重复。\[2\] 此外,如果你对拓扑图的整体布局不满意,你可以尝试使用其他布局算法来改善图的可视化效果。biograph函数提供了多种布局算法,例如星型拓扑结构。星型拓扑结构是一种简单的结构,中心节点连接多个分节点,具有简单的连接方式和管理维护,扩展性强。但是需要注意,星型拓扑结构的中心节点是关键,如果中心节点出现故障,整个网络可能会出现问题。此外,星型拓扑结构的共享能力较差,通信线路利用率也不高。\[3\] 综上所述,如果你认为matlab生成的拓扑图不好看,你可以尝试调整节点名称和使用其他布局算法来改善图的可视化效果。 #### 引用[.reference_title] - *1* *2* *3* [MATLAB-绘制网络拓扑结构](https://blog.csdn.net/weixin_36003005/article/details/115812142)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值