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函數
在這裏插入圖片描述

總結

  • 雖然想要的拓撲結構圖大致呈現出來了,但是算法有點暴力,不是很便捷,效率不是很高,尤其體系在樹形拓撲結構圖那,因爲所需的鄰接矩陣是手動設置的,那對於有大量節點需求的應用是不適合的,運用起來會很繁瑣。
  • 歡迎大家來交流,提供更好的解法,去改進腳本!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章