无线传感网技术实验二.doc_第1页
无线传感网技术实验二.doc_第2页
无线传感网技术实验二.doc_第3页
无线传感网技术实验二.doc_第4页
无线传感网技术实验二.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

无线传感网技术实验二 班级:微电子1102 学号:0301110213 姓名:王绪安1、 实验目的 通过仿真实验,掌握无线传感网络联通率与通信半径以及节点数目之间的关系。2、 实验内容 (1)在不同节点数目n情况下,用Matlab拟合出连通率与通信半径的关系曲线。 (2)在不同通信半径R情况下,用Matlab拟合出连通率与节点数量n的关系曲线。3、 实验思路分析过程(包括程序说明)用计算机语言编写图的连通性判断算法,判断节点是否连通以及确定连通分支的个数,Warshell算法实现方法Warshell算法Warshell算法可解决图是否连通的问题, 而且效率很高。在该算法中,矩阵是判断矩阵,表示从到连通,表示从到不连通。T矩阵是模拟节点的两两直接连通矩阵Tij =1表示从到连通,Tij=0表示从到不连通。 (1)置新矩阵 P:= T; (2)k=1.9,P=P*T;循环叠乘得出最终连通矩阵。(3)对P矩阵Pij进行连续判断,若有Pij=0,则该图不连通,跳出循环。(4)重复上面操作1000次,累计连通图的次数n,得出连通率。4、 实验程序(1) 在不同节点数目n情况下,用Matlab拟合出连通率与通信半径的关系曲线。rate_1 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(10,1);y=rand(10,1);for num=1:1:10 for sec_num=1:1:10 if(sqrt(x(num)-x(sec_num)2+(y(num)-y(sec_num)2)r(k) p(num,sec_num)=1; else p(num,sec_num)=0; end endendt=p;for s=1:1:9 t=t*p;endfor i=1:1:10 for j=1:1:10 if t(i,j)=10 flag_overflow=0; break; end end if flag_overflow=0 break; endendrate_1(k)=rate_1(k)+flag_overflow;endrate_1(k)=rate_1(k)/1000;endrate_2 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(20,1);y=rand(20,1);for num=1:1:20 for sec_num=1:1:20 if(sqrt(x(num)-x(sec_num)2+(y(num)-y(sec_num)2)r(k) p(num,sec_num)=1; else p(num,sec_num)=0; end endendt=p;for s=1:1:19 t=t*p;endfor i=1:1:20 for j=1:1:20 if t(i,j)=10 flag_overflow=0; break; end end if flag_overflow=0 break; endendrate_2(k)=rate_2(k)+flag_overflow;endrate_2(k)=rate_2(k)/1000;endrate_3 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(50,1);y=rand(50,1);for num=1:1:50 for sec_num=1:1:50 if(sqrt(x(num)-x(sec_num)2+(y(num)-y(sec_num)2)r(k) p(num,sec_num)=1; else p(num,sec_num)=0; end endendt=p;for s=1:1:49 t=t*p;endfor i=1:1:50 for j=1:1:50 if t(i,j)=10 flag_overflow=0; break; end end if flag_overflow=0 break; endendrate_3(k)=rate_3(k)+flag_overflow;endrate_3(k)=rate_3(k)/1000;endrate_4 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(100,1);y=rand(100,1);for num=1:1:100 for sec_num=1:1:100 if(sqrt(x(num)-x(sec_num)2+(y(num)-y(sec_num)2)r(k) p(num,sec_num)=1; else p(num,sec_num)=0; end endendt=p;for s=1:1:99 t=t*p;endfor i=1:1:100 for j=1:1:100 if t(i,j)=10 flag_overflow=0; break; end end if flag_overflow=0 break; endendrate_4(k)=rate_4(k)+flag_overflow;endrate_4(k)=rate_4(k)/1000;endx_lab=0.01:0.01:1;plot(x_lab,rate_1,+-r);hold all;plot(x_lab,rate_2,b-);hold all;plot(x_lab,rate_3,ko-);hold all;plot(x_lab,rate_4,g*-);xlabel( 通信半径)ylabel(网络连接概率)(2)在不同通信半径R情况下,用Matlab拟合出连通率与节点数量n的关系曲线。%联通半径是0.05,0.15,0.25,0.35%x轴是节点数%y轴是联通率%k是结点数number_max = 1000;rate_1 = zeros(1,100);x_y_1 = ;r_1 = 0.15;for k=1:1:100 p = zeros(k,k);%存放k*k矩阵的联通值0或1 for number=1:1:number_max flag_overflow=1; %x=rand(k,1);%每次随x生成1-100 %y=rand(k,1);%生成联通点,x,y x_y_1 =rand(k,2,1); %生成p的联通矩阵 for num=1:1:k for sec_num=1:1:k if(sqrt(x_y_1(num,1)-x_y_1(sec_num,1)2+(x_y_1(num,2)-x_y_1(sec_num,2)2)r_1) p(num,sec_num)=1; else p(num,sec_num)=0; end end end %p复制给t进行联通率判断 t=p; p; %图论的联通率判断法 for s=1:1:k-1 t=t*p; end %两层循环判断是否全联通 for i=1:1:k for j=1:1:k if t(i,j)=0 flag_overflow=0; break; end end if flag_overflow=0 break; end end rate_1(k)=rate_1(k)+flag_overflow; end rate_1(k)=rate_1(k)/number_max;endrate_2 = zeros(1,100);x_y_2 = ;r_2 = 0.25;for k=1:1:100 p = zeros(k,k);%存放k*k矩阵的联通值0或1 for number=1:1:number_max flag_overflow=1; %x=rand(k,1);%每次随x生成1-100 %y=rand(k,1);%生成联通点,x,y x_y_2 =rand(k,2,1); %生成p的联通矩阵 for num=1:1:k for sec_num=1:1:k if(sqrt(x_y_2(num,1)-x_y_2(sec_num,1)2+(x_y_2(num,2)-x_y_2(sec_num,2)2)r_2) p(num,sec_num)=1; else p(num,sec_num)=0; end end end %p复制给t进行联通率判断 t=p; p; %图论的联通率判断法 for s=1:1:k-1 t=t*p; end %两层循环判断是否全联通 for i=1:1:k for j=1:1:k if t(i,j)=0 flag_overflow=0; break; end end if flag_overflow=0 break; end end rate_2(k)=rate_2(k)+flag_overflow; end rate_2(k)=rate_2(k)/number_max;endrate_3 = zeros(1,100);x_y_3 = ;r_3 = 0.35;for k=1:1:100 p = zeros(k,k);%存放k*k矩阵的联通值0或1 for number=1:1:number_max flag_overflow=1; %x=rand(k,1);%每次随x生成1-100 %y=rand(k,1);%生成联通点,x,y x_y_3 =rand(k,2,1); %生成p的联通矩阵 for num=1:1:k for sec_num=1:1:k if(sqrt(x_y_3(num,1)-x_y_3(sec_num,1)2+(x_y_3(num,2)-x_y_3(sec_num,2)2)r_3) p(num,sec_num)=1; else p(num,sec_num)=0; end end end %p复制给t进行联通率判断 t=p; p; %图论的联通率判断法 for s=1:1:k-1 t=t*p; end %两层循环判断是否全联通 for i=1:1:k for j=1:1:k if t(i,j)=0 flag_overflow=0; break; end end if flag_overflow=0 break; end end rate_3(k)=rate_3(k)+flag_overflow; end rate_3(k)=rate_3(k)/number_max;endrate_4 = zeros(1,100);x_y_4 = ;r_4 = 0.45;for k=1:1:100 p = zeros(k,k);%存放k*k矩阵的联通值0或1 for number=1:1:number_max flag_overflow=1; %x=rand(k,1);%每次随x生成1-100 %y=rand(k,1);%生成联通点,x,y x_y_4 =rand(k,2,1); %生成p的联通矩阵 for num=1:1:k for sec_num=1:1:k if(sqrt(x_y_4(num,1)-x_y_4(sec_num,1)2+(x_y_4(num,2)-x_y_4(sec_num,2)2)r_4) p(num,sec_num)=1; else p(num,sec_num)=0; end end end %p复制给t进行联通率判断 t=p; p; %图论的联通率判断法 for s=1:1:k-1 t=t*p; end %两层循环判断是否全联通 for i=1:1:k for j=1:1:k if t(i,j)=0 flag_overflow=0; break; end end if flag_overflow=0 break; end end

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论