资源描述
一:题目利用MATLAB仿真节点个数和节点通信半径与网络连通率的关系。 二:目的 在不同节点个数的情况下,用Matlab拟合出连通率与通信半径的关系曲线。 在不同节点通信半径的情况下,用Matlab拟合出连通率与节点个数的关系曲线。 三:方法描述在1x1的单位矩形中随机部署传感器节点,而且假设每个节点的通信半径一样。在每一 组节点个数和节点通信半径下进行1000次试验,进而分别模拟出连通率随节点数增加以及 通信半径增加的变化趋势。关键算法即判断节点网络是否具有连通性,算法流程图如下:图1 连通性判断算法关键的程序设计在于找到与节点相连的节点的递归调用,通过不断的搜索邻接矩阵中 的1,并在连通向量中标记已找到为连通的的点,最后通过计算连通向量的总和判断是否连 通。之后通过改变节点个数k和通信半径r并嵌套以下实现1000次的连通判断计算连通率:for cishu=1:1000p=rand(k,2);c=Connect(p,r);liantong=liantong+c;endliantonglv(i)=liantong/1000;plot(r,liantonglv(i),b-*)(1)在不同节点个数情况下,用Mat lab拟合出连通率与通信半径r的关系曲线如下图:图 2 连通率与通信半径【P2-S2 UUOU询-芒 aM4QcJJd在实验过程中,取通信半径r=0.5,节点个数k=50的网络拓扑图如下所示:k 二50尸0.5图3 网络拓扑图对于不同的节点个数及不同的网络规模下,随着通信半径的增加,网络连通率也在增加 但当通信半径增加到某个临近值时,网络连通率近似维持在100%。且随着节点个数的增加, 临界通信半径减小。(2)在不同通信半径R情况下,用Matlab拟合出连通率与节点数量n的关系曲线如下图:1000:imcs7口1HO一 r-0.1fl -+-MI.2SNumT of ncdfls图4 连通率与节点个数在实验过程中,取通信半径r=0.35,节点个数k=30的网络拓扑图如下所示:00.10.20.30.40.&0.60.70.&0.91F=0.353k=30图5 网络拓扑图图 4中当只有一个节点时,连通率为1,所以出现连通率曲线锐减的现象。具有不同节 点通信半径的WSN,随着节点个数的增加,网络连通率也在增加。当节点个数增加到某个临 界值时,网络连通率近似维持100%。且随着节点通信半径的增加,临界节点个数减小。 四:实验结论 给定节点数目,概率上随机WSN保持连通的节点通信半径存在下限。 给定节点的通信半径,概率上随机WSN保持连通的节点个数存在上限。function C = Connect( graph,r )adjmatrix=1.-im2bw(squareform(pdist(graph),r); %生成邻接矩阵 len=size(adjmatrix,1);quit=0;for n=1:lenif sum(adjmatrix(n,:)=1 %排除孤立点quit=1;endend%判断连通性if quit=1connected(len)=0; %已连接节点 connected(1)=1;connec ted二findconnec ted(l,adjma tr ix,connec ted);%找到与节点 1 连接的节点 if sum(connected)=lenC=1;elseC=0;endelseC=0;Endfunction connected=findconnected(start,adjmatrix,connected)leaf=find(adjma trix(s tart ,:)=1);%找出与节点 st art 直接相连的节点 len=size(leaf,2) ;flag=0;nflag=1;for n=1:len辻connected(leaf(n)=O;%若节点已在连接向量(connected)中则跳过 flag(nflag)=leaf(n);nflag=nflag+1;endendlen=size(flag,2) ;if flag=0for n=1:lenconnected(flag(n)=1;endfor n=1:lenconnec ted二findconnec ted(flag(n),adjma tr ix,connec ted);%查找当前节点的子节点 end
展开阅读全文