Advertisement

MATLAB-绘制网络拓扑结构

阅读量:

MATLAB-绘制网络拓扑结构

  • ①星形拓扑结构
    • 一、定义
    • 二、.m文件
    • 三、 运行结果

情况一

  • 总结

参考链接如下:

  1. 拓扑结构的相关资料
    拓扑结构的介绍

①星形拓扑结构

一、定义

星型拓扑结构由一个核心节点与多个连接点构成;其架构简单明了;管理与维护较为便捷;并且具有良好的扩展性;较低的时间延迟;极低的传输错误率;当核心无故障,则整个网络运行正常;而当核心出现故障时,则可能导致整个网络出现问题,并且共享功能将受到限制;因此,在设计网络时应优先考虑星型拓扑结构作为基础架构

在这里插入图片描述

二、.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函数用于创建一个生物信息学图象对象。
  • 通过biograph(CM,IDs)语句来设定节点编号及名称。
    ①当IDs为元胞数组时:
    • 每个元素对应一个节点的名字
    • 元胞组的数量应与邻接矩阵行数及列数一致
    • 或者也可以是字符数组
    • 此时各节点名称具有相同的长度
    • 必须唯一且不重复避免重复出现同一个名字
  • 参数CM代表该图的邻接矩阵
    其中CM可采用稀疏矩阵形式或一般方阵形式表示
  • 详细说明可参考附录中的相关链接

2.第二种方式

主要采用treeplot和treelayout函数进行绘图操作

复制代码
    %用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函数

在这里插入图片描述

总结

尽管我们期望得到清晰的拓扑结构图实现,但目前的方法在某些环节显得略显笨拙,难以满足便捷操作的需求,尤其是在涉及树形拓扑结构时,由于邻接矩阵需手动配置,因此对于大规模节点应用存在明显局限性,使用起来往往需要较多步骤。

诚挚地邀请各位分享更优的解决方案,共同探讨如何改进当前脚本!

全部评论 (0)

还没有任何评论哟~