无线传感器网络实验指导书_第1页
无线传感器网络实验指导书_第2页
无线传感器网络实验指导书_第3页
无线传感器网络实验指导书_第4页
无线传感器网络实验指导书_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

无线传感器网络实验指导书信息工程学院实验一质心算法一、实验目的掌握合并质心算法的基本思想;学会利用MATLAB实现质心算法;学会利用数学计算软件解决实际问题。二、实验内容和原理无需测距的定位技术不需要直接测量距离和角度信息。定位精度相对较低,不过可以满足某些应用的需要。在计算几何学里多边形的几何中心称为质心,多边形顶点坐标的平均值就是质心节点的坐标。假设多边形定点位置的坐标向量表示为p尸(%,Ji)T,则这个多边形的质心坐标为:(")—(字、例如,如果四边形ABCD的顶点坐标分别为(X],七),(x2,y2),(x3,y3)和(七,尸4),则它的质心坐标计算如下:(x,y)=这种方法的计算与实现都非常简单,根据网络的连通性确定出目标节点周围的信标参考节点,直接求解信标参考节点构成的多边形的质心。锚点周期性地向临近节点广播分组信息,该信息包含了锚点的标识和位置。当未知结点接收到来自不同锚点的分组信息数量超过某一门限或在一定接收时间之后,就可以计算这些锚点所组成的多边形的质心,作为确定出自身位置。由于质心算法完全基于网络连通性,无需锚点和未知结点之间的协作和交互式通信协调,因而易于实现。三、实验内容及步骤该程序在Matlab环境下完成无线传感器中的质心算法的实现。在长为100米的正方形区域,信标节点(锚点)为90个,随机生成50个网络节点。节点的通信距离为30米。需完成:分别画出不同通信半径,不同未知节点数目下的误差图,并讨论得到的结果所用到的函数:1.M=min(A)返回A最小的元素.如果A是一个向量,然后min(A)返回A的最小元素.如果A是一个矩阵,然后min(A)是一个包含每一列的最小值的行向量。2.randX=rand返回一个单一均匀分布随机数在区间(0,1)。X=rand(n)返回n--n矩阵的随机数字。S=sum(A)返回A沿其大小不等于1的第一个数组维度的元素的总和。如果A是一个向量,sum(A)可返回元素的总和。如果A是一个矩阵,然后sum(A)返回一个行向量包含每个列的总和。inf无穷大此MATLAB函数返回正无穷大的IEEE算术表示。除以零和溢出等操作会生成无穷值,从而导致结果因太大而无法表示为传统的浮点值5.zeros-创建全零数组X=zeros返回标量0.X=zeros(n)-由一n矩阵的零返回n.plot(X,Y)画出Y随X变化的2D曲线。plot(X,Y,o)用。描述(X,Y)这一点。n=norm(v)返回的2-范数或欧氏范数的向量v.n=norm(v,p)返回向量范数定义的sum(abs(v)"p)'(1/p),这里p是任何正值,Inf或一1nf.s=num2str(A)数值数组转换为字符数组输出,它表示的数字。输出格式取决于原始值的大小°num2str是用于标签和标题情节与数字值。所用到的变量:xy:均匀分布的信标节点位置矩阵n:未知节点数量SS:未知节点位置矩阵dm:通信半径cent:质心MM:未知节点估计坐标矩阵e:估计位置和实际位置距离矩阵(误差)四、源程序clearclc%锚节点节点设置fori=1:1:10%1^U10,步长是1;画出锚点,前一个括号是标号。forj=1:1:10x(j+(i-1)*10)=(i-1)大10;y(j+(i-1)*10)=(j-1)*10;endendfigure%出现图形界面plot(x,y,'k.');%黑点holdon%继续画图axis([01000100]);xy=[x;y];把X,Y的坐标付给矩阵XYxy;holdonxm=90;ym=90;n=50;%未知节点fori=1:1:nSx(i)=rand(1,1)*xm;%产生一个一行一列的矩阵;依然是0-1中任意一个值。Sy(i)=rand(1,1)大ym;plot(Sx(i),Sy(i),‘r*');%红星xlabel('x车由');ylabel('y轴');holdonenddm=30;%通信半径m=100;一共100个点;forj=1:1:n%未知节点循环;每一个未知节点都与在通讯范围内所有的锚点算一遍距离,放到一个矩阵中,通讯距离以外的点为零。SS=[Sx(j);Sy(j)];k=0;%表示通信半径内的信标节点数fori=1:1:md=norm((xy(:,i)—SS),2);%2范数就是求直线距离;不管行,第i列;ifdv=dm是否在范围内,取出信标节点,放到XX,yy中xx(j,i)=xy(1,i);第1行第i列;%X坐标都给了XXyy(j,i)=xy(2,i);第2行第i列;k=k+1;elsexx(j,i)=0;yy(j,i)=0;endendifk〜=0%k不等于零

cent(:,j)=[sum(Xx(j,:));sum(yy(j,:))]/k;%第j行的所有列elsecent(:,j)=0;令第j列的所有元素为零。endplot(cent(1,j),cent(2,j),‘o');holdonPlot([cent(],j)Sx(j)],[cent(2,j)Sy(j)],'R—-');%估计位置和真实位置连接title('Centroid');holdonMM=[cent(1,j);cent(2,j)];e(j)=norm((MM-SS),2);%定位误差end%figure/dm%axis([0n01])%j=1:1:n%plot(j,e(j),'-r.')%holdon%title('Centroid')%E=sum(e)/nE=sum(e)/(n*dm);disp(['定位误差=,,num2str(E)]);%将结果转换成字符串输出10090ao7D60号5040302DID0Centroid0ID203040506070B090100

实验二DV-hop算法一、实验目的Centroid掌握DV-hop算法的基本思想;学会利用MATLAB实现DV-hop算法;学会利用数学计算软件解决实际问题。二、实验内容和原理DV-Hop算法解决了低锚点密度引发的问题,它根据距离矢量路由协议的原理在全网范围内广播跳数和位置。已知锚点L1与L?L3之间的距离和跳数。L2计算得到校正值(即平均每跳距离)为(40+75)/(2+5)=16.42m。假设传感器网络中的待定位节点A从L2获得校正值,则它与3个锚点之间的距离分别是L]=3X16.42,L2=2X16.42,L3=3X16.42,然后使用多边测量法确定节点的位置。图1图1DVhop算法示意图三、实验内容及步骤该程序在Matlab环境下完成无线传感器中的DV-HoP算法的实现。在长为100米的正方形区域,随机生成100个网络节点,其中信标节点(锚点)为8个,未知坐标节点为92个。节点的通信距离为50米。可算出最短路经算法计算节点间跳数、每个信标节点的校正值并可用用跳数估计距离。(1000—1000,300个节点,60个信标节点)所用到的函数:参见上节:质心算法;需完成:1)运行程序,生成随机分布的节点;2)更正程序中的错误,求每个信标节点的校正值;3)继续运行程序,利用跳数估计待求节点的距离。四、源程序DV-Hop算法〜〜〜〜〜DV-Hop算法〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜%BorderLength--—--正方形区域的边长,单位:m%NodeAmount-—网络节点的个数%BeaconAmount—--信标节点数%Sxy--———一-—--用于存储节点的序号,横坐标,纵坐标的矩阵%Beacon-信标节点坐标矩阵;BeaconAmount大BeaconAmount%UN—--——-------—未知节点坐标矩阵;2*UNAmount%Distance—-—--—未知节点到信标节点距离矩阵;2大BeaconAmount%h———-——-节点间初始跳数矩阵%X--—-—---———一-节点估计坐标初始矩阵,X=[x,y]'%R——--—-—-节点的通信距离,一般为10—100mclear,closeall;BorderLength=100;NodeAmount=100;BeaconAmount=8;UNAmount=NodeAmount-BeaconAmount;R=50;%D=zeros(NodeAmount,NodeAmount);%未知节电到信标节点距离初始矩阵;BeaconAmount彳亍NodeAmount列h=zeros(NodeAmount,NodeAmount);%初始跳数为0;NodeAmount行NodeAmount列X=zeros(2,UNAmount);%节点估计坐标初始矩阵%在正方形区域内产生均匀分布的随机拓扑〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜C=BorderLength.*rand(2,NodeAmount);%带逻辑号的节点坐标Sxy=[[1:NodeAmount];C];%<1-NodeAmount与C上下合到一起,产生一个总矩阵。Beacon=[Sxy(2,1:BeaconAmount);Sxy(3,1:BeaconAmount)];%信标节点坐标UN=[Sxy(2,(BeaconAmount+1):NodeAmount);Sxy(3,(BeaconAmount+1):NodeAmount)];%未知节点坐标%画出节点分布图plot(Sxy(2,1:BeaconAmount),Sxy(3,1:BeaconAmount),'r*',Sxy(2,(BeaconAmount+1):NodeAmount),Sxy(3,(BeaconAmount+1):NodeAmount),'k.')xlim([0,BorderLength]);ylim([0,BorderLength]);title('*红色信标节点.黑色未知节点')%〜——〜〜〜——〜〜〜〜——〜〜〜初始化节点间距离、跳数矩阵〜〜〜〜〜〜^^〜〜〜〜〜〜〜〜〜^^fori=1:NodeAmount

forj=1:NodeAmountDall(i,j)=((Sxy(2,i)-Sxy(2,j))A2+(Sxy(3,i)-Sxy(3,j))A2)A0.5;%所有节点间相互距离if(Dall(i,j)<=R)&(Dall(i,j)>0)h(i,j)=1;%初始跳数矩阵elseifi==jh(i,j)=0;%自己到自己的距离e1seh(i,j)=inf;endendend%〜〜最短路经算法计算节点间跳数〜〜〜〜〜〜〜fork=1:NodeAmountfori=1:NodeAmountforj=1:NodeAmountifh(i,k)+h(k,j)〈h(i,j)%min(h(i,j),h(i,k)+h(k,j))h(i,j)=h(i,k)+h(k,j);endendendendh%〜〜求每个信标节点的校正值〜〜〜〜〜〜〜〜〜〜—〜〜〜〜〜〜〜〜〜〜〜〜〜〜h1=h(1:BeaconAmount,1:BeaconAmount);%从大矩阵中取出信标节点的跳数D1=Dall(1:BeaconAmount,1:BeaconAmount);%从大矩阵中取出信标节点的距离fori=1:%〜〜求每个信标节点的校正值〜〜〜〜〜〜〜〜〜〜—〜〜dhop(i,1)=sum(D1(i,:))/sum(h1(i,:));%每个信标节点的平均每跳距离endD2=Da1l(1:BeaconAmount,(BeaconAmount+1):NodeAmount);%新标节点与未知节点的距离,逗号前面是行的范围,后面是列的范围。fori=1:BeaconAmountforj=1:UNAmountifmin(D2(:,j))==D2(i,j)Dhop(1,j)=dhop(i,j);%未知节点从最近的信标获得校正值

endDhop%〜〜〜—用跳数估计距离〜〜〜〜〜~〜~〜hop1=h(1:BeaconAmount,(BeaconAmount+1):NodeAmount)%未知节点到信标跳数,BeaconAmount行UNAmount列fori=1:UNAmounthop=Dhop(1,i);%hop为从最近信标获得的校正值Distance(:,i)=hop*hop1(:,i);%%Beacon行UN列;end%%〜~〜〜最小二乘法求未知点坐标〜~〜〜~〜〜〜〜〜〜〜〜〜〜^"^d=Distance;fori=1:2forj=1:(BeaconAmount—1)a(i,j)=Beacon(i,j)-Beacon(i,BeaconAmount);endend%a为第一个信标节点和最后一个信号节点的坐标差值,保留最后一个信标节点%a'A=—2*(a');%d=d1';form=1:UNAmountfori=1:(BeaconAmount-1)B(i,1)=d(i,m)A2-d(BeaconAmount,m)A2-Beacon(1,i)A2+Beacon(1,BeaconAmount)A2-Beacon(2,i)'2+Beacon(2,BeaconAmount)"2;最后信标节点到未知节点的距离平方前九个信标节点横坐标平方最后信标节点到未知节点的横坐标%inv最后信标节点到未知节点的距离平方前

温馨提示

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

评论

0/150

提交评论