1. 程式人生 > >利用MATLAB仿真節點個數和節點通信半徑與網絡連通率的關系

利用MATLAB仿真節點個數和節點通信半徑與網絡連通率的關系

code clas 目的 rand ant 是否 節點 play end

一、目的

①在不同節點個數的情況下,用Matlab擬合出連通率與通信半徑的關系曲線。

②在不同節點通信半徑的情況下,用Matlab擬合出連通率與節點個數的關系曲線。

二、方法描述

1x1的單位矩形中隨機部署傳感器節點,而且假設每個節點的通信半徑一樣。在每一組節點個數和節點通信半徑下進行1000次試驗,進而分別模擬出連通率隨節點數增加以及通信半徑增加的變化趨勢。

關鍵算法即判斷節點網絡是否具有連通性,算法流程圖如下:

技術分享圖片

關鍵的程序設計在於找到與節點相連的節點的遞歸調用,通過不斷的搜索鄰接矩陣中的1,並在連通向量中標記已找到為連通的的點,最後通過計算連通向量的總和判斷是否連通。之後通過改變節點個數k和通信半徑r並嵌套以下實現1000次的連通判斷計算連通率:

for cishu=1:1000
        p=rand(k,2);
        c=Connect(p,r);
        liantong=liantong+c;
        end
    liantonglv(i)=liantong/1000;        
    plot(r,liantonglv(i),b-*)
 

1)在不同節點個數情況下,用Matlab擬合出連通率與通信半徑r的關系曲線如下圖:

技術分享圖片

在實驗過程中,取通信半徑r=0.5,節點個數k=50的網絡拓撲圖如下所示:

技術分享圖片

對於不同的節點個數及不同的網絡規模下,隨著通信半徑的增加,網絡連通率也在增加。但當通信半徑增加到某個臨近值時,網絡連通率近似維持在100%。且隨著節點個數的增加,臨界通信半徑減小。

2)在不同通信半徑R情況下,用Matlab擬合出連通率與節點數量n的關系曲線如下圖:

技術分享圖片

在實驗過程中,取通信半徑r=0.35,節點個數k=30的網絡拓撲圖如下所示:

技術分享圖片

4張圖中當只有一個節點時,連通率為1,所以出現連通率曲線銳減的現象。具有不同節點通信半徑的WSN,隨著節點個數的增加,網絡連通率也在增加。當節點個數增加到某個臨界值時,網絡連通率近似維持100%。且隨著節點通信半徑的增加,臨界節點個數減小。

三、結論

①給定節點數目,概率上隨機WSN保持連通的節點通信半徑存在下限。

②給定節點的通信半徑,概率上隨機WSN保持連通的節點個數存在上限。

四、MATLAB程序代碼

function [ C ] = Connect( graph,r ) 
adjmatrix=1.-im2bw(squareform(pdist(graph)),r); %生成鄰接矩陣  
len=size(adjmatrix,1);  
quit=0;  
for n=1:len   
    if sum(adjmatrix(n,:))==1      %排除孤立點  
        quit=1;  
    end  
end

%判斷連通性
if quit~=1  
    connected(len)=0; %已連接節點  
    connected(1)=1;  
    connected=findconnected(1,adjmatrix,connected);%找到與節點1連接的節點  
    if sum(connected)==len  
        C=1;  
    else  
        C=0;  
    end  
else  
    C=0;  
End

function [connected]=findconnected(start,adjmatrix,connected)
leaf=find(adjmatrix(start,:)==1);%找出與節點start直接相連的節點  
len=size(leaf,2) ; 
flag=0;  
nflag=1;  
for n=1:len  
if connected(leaf(n))==0;%若節點已在連接向量(connected)中則跳過  
    flag(nflag)=leaf(n);  
    nflag=nflag+1;  
end  
end  
len=size(flag,2) ; 
if flag~=0  
for n=1:len  
    connected(flag(n))=1;  
end  
for n=1:len  
connected=findconnected(flag(n),adjmatrix,connected);%查找當前節點的子節點  
end  
end

如果自己向後退縮,就會被人推著向前。---黑柳徹子

轉載需說明出處,筆者總結之前的知識,與大家分享,有問題的可以留給我哦~

利用MATLAB仿真節點個數和節點通信半徑與網絡連通率的關系