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

下载本文档

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

文档简介

1、无线传感器网络实验指导书信息工程学院实验一质心算法、实验目的掌握合并质心算法的基本思想;学会利用MATLAB实现质心算法;学会利用数学计算软件解决实际问题。二、实验内容和原理无需测距的定位技术不需要直接测量距离和角度信息。定位精度相对较低,不过可以满足某些应用的需要。在计算几何学里多边形的几何中心称为质心,多边形顶点坐标的平均值就是质心节点的 坐标。例如,如果四边形 ABCD的顶点坐标分别为 质心坐标计算如下:假设多边形定点位置的坐标向量表示为Pi= (xi, Yi)T,则这个多边形的质心坐标为:(xi, yi), (x2, y2), (x3, y3)和(x4,y4),则它的Xy2y3y44这

2、种方法的计算与实现都非常简单,根据网络的连通性确定出目标节点周围的信标参考 节点,直接求解信标参考节点构成的多边形的质心。锚点周期性地向临近节点广播分组信息,该信息包含了锚点的标识和位置。当未知结点接收到来自不同锚点的分组信息数量超过某一门限或在一定接收时间之后,就可以计算这些锚点所组成的多边形的质心,作为确定出自身位置。由于质心算法完全基于网络连通性,无需锚点和未知结点之间的协作和交互式通信协调,因而易于实现。三、实验内容及步骤该程序在Matlab环境下完成无线传感器中的质心算法的实现。在长为 100米的正方形 区域,信标节点(锚点)为 90个,随机生成50个网络节点。节点的通信距离为30米

3、。需完成:分别画出不同通信半径,不同未知节点数目下的误差图,并讨论得到的结果所用到的函数:M = min(A)返回A最小的元素.如果A是一个向量,然后 min(A)返回A的最小元素.如果A是一个矩阵,然后 min(A)是一个包含每一列的最小值的行向量。randX = rand返回一个单一均匀分布随机数在区间(0, 1)。X = rand(n)返回n-n矩阵的随机数字。S = sum(A)返回A沿其大小不等于1的第一个数组维度的元素的总和。如果A是一个向量,sum(A)可返回元素的总和。如果A是一个矩阵,然后 sum(A)返回一个行向量包含每个列的总和。inf无穷大此MATLAB函数返回正无穷大

4、的IEEE算术表示。除以零和溢出等操作会生成无穷 值,从而导致结果因太大而无法表示为传统的浮点值zeros -创建全零数组X = zeros返回标量0.X = zeros(n)-由-n矩阵的零返回 n. plot(X,Y)画出丫随X变化的2D曲线。plot(X,Y , o)用 o 描述(X,Y)这一点。.n= norm(v)返回的2-范数或欧氏范数的向量v.n = norm (v,p)返回向量范数定义的sum(abs(v)Ap)A(1/p),这里p是任何正值,Inf或-Inf.8.s = num2str(A)数值数组转换为字符数组输出,它表示的数字。输出格式取决于原始值的大小。num2str是

5、用于标签和标题情节与数字值。所用到的变量:xy:均匀分布的信标节点位置矩阵n:未知节点数量SS:未知节点位置矩阵dm:通信半径cent:质心MM:未知节点估计坐标矩阵e:估计位置和实际位置距离矩阵(误差)四、源程序clearclc%锚节点节点设置for i=1:1:10%1到10,步长是1;画出锚点,前一个括号是标号。for j=1:1:10 x(j+(i-1)*10)=(i-1)*10;y(j+(i-1)*10)=(j-1)*10;endend figure%出现图形界面plot(x,y,k.); % 黑点 hold on %继续画图 axis(0 100 0 100);xy=x;y;把X,

6、Y的坐标付给矩阵XY xy;hold on xm=90;ym=90;n=50; %未知节点for i=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 轴);hold onenddm=30 ;%通信半径m=100; 一 共 100 个点;for j=1:1:n%未知节点循环;每一个未知节点都与在通讯范围内所有的锚点算一遍 距离,放到一个矩阵中,通讯距离以外的点为零。SS=Sx(j);Sy(j);k=0;%表示通信半

7、径内的信标节点数for i=1:1:md=norm(xy(:,i)-SS),2);%2范数就是求直线距离;不管行,第 i列; if d=dm是否在范围内,取出彳t标节点,放到 XX , yy中 xx(j,i)=xy(1,i);第1行第i列;%X坐标都给了 XX yy(j,i)=xy(2,i);第 2 行第 i 歹U; k=k+1;elsexx(j,i)=0;yy(j,i)=0;endendif k=0%k不等于零cent(:,j)=sum(xx(j,:);sum(yy(j,:)/k;% 第 j 行的所有列else cent(:,j)=0;令第j列的所有元素为零。endplot(cent(1,j

8、),cent(2,j),o);hold onplot(cent(1,j) Sx(j),cent(2,j) Sy(j),R-) ;%估计位置和真实位置连接title(Centroid);hold onMM=cent(1,j);cent(2,j);e(j)=norm(MM-SS),2);%定位误差end% figure/dm% axis(0 n 0 1)% j=1:1:n% plot(j,e(j) ,-r.)% hold on% title(Centroid)% E=sum(e)/nE=sum(e)/(n*dm);disp(定位误差=,num2str(E); %将结果转换成字符串输出Centroi

9、d11IIIrRII*ft-崇 魅米J* J* 64/第.6萍君. 包春. .-用写屏余案麻球V.*暇XJ辞a整已、锦强6米* 焉* -米.爵卷笔Lf*一为这。聚.序库藕r由 余,“米 ,甲P号-+kidi+-来)/ *k4111a1a01020304050 M 70 SO 90100实验二 DV-hop算法实验目的掌握DV-hop算法的基本思想;学会利用MATLAB实现DV-hop算法;学会利用数学计算软件解决实际问题。二、实验内容和原理DV-Hop算法解决了低锚点密度引发的问题,它根据距离矢量路由协议的原理在全网范围内广播跳数和位置。已知锚点Li与L2、L3之间的距离和跳数。L2计算得到校

10、正值(即平均每跳距离)为 (40+75) / (2+5) =16.42m。假设传感器网络中的待定位节点A从L2获得校正值,则它与3个锚点之间的距离分别是Li=3X 16.42, L2=2X 16.42, L3=3X 16.42,然后使用多边测量法确定节点的位置。图1 DV hop算法示意图三、实验内容及步骤该程序在 Matlab环境下完成无线传感器中的DV-Hop算法的实现。在长为 100米的正方形区域,随机生成 100个网络节点,其中信标节点(锚点)为 8个,未知坐标节点为 92 个。节点的通信距离为 50米。可算出最短路经算法计算节点间跳数、每个信标节点的校正 值并可用用跳数估计距离。(1

11、000-1000, 300个节点,60个信标节点)所用到的函数:参见上节:质心算法;需完成:1)运行程序,生成随机分布的节点;2)更正程序中的错误,求每个信标节点的校正值;3)继续运行程序,利用跳数估计待求节点的距离。四、源程序%DV-Hop算法 % BorderLength正方形区域的边长,单位: m% NodeAmount网络节点的个数% BeaconAmount-信标节点数% Sxy 用于存储节点的序号,横坐标,纵坐标的矩阵%Beacon信标节点坐标矩阵;BeaconAmount*BeaconAmount%UN未知节点坐标矩阵;2*UNAmount% Distance未知节点到信标节点距

12、离矩阵;2*BeaconAmount%h节点间初始跳数矩阵%X节点估计坐标初始矩阵,X=x,y% R 节点的通信距离,一般为 10-100mclear,close all;BorderLength=100;NodeAmount=100;BeaconAmount=8;UNAmount=NodeAmount-BeaconAmount;R=50;% D=zeros(NodeAmount,NodeAmount);% 未知节 电到信 标节点 距离初 始矩阵;BeaconAmount 行 NodeAmount 歹Uh=zeros(NodeAmount,NodeAmount);% 初始跳数为 0; Node

13、Amount 行 NodeAmount 歹UX=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):NodeAmou

14、nt);%未知节点坐标%画出节点分布图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(*红色信标节点.黑色未知节点)%初始化节点间距离for i=1:NodeAmountfor j=1:NodeAmountDall(i,j)=(Sxy(2,i)-Sxy(2,j)A2+(Sxy(3,i)-Sxy(3,

15、j)A2)A0.5;%所有节点间相互距if (Dall(i,j)0)h(i,j)=1;%初始跳数矩阵elseif i=jh(i,j)=0;%自己到自己的距离else h(i,j)=inf;endendend%最短路经算法计算节点间跳数for k=1:NodeAmountfor i=1:NodeAmountfor j=1:NodeAmountif h(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)

16、;% 从大矩阵中取出信标节点的跳数D1=Dall(1:BeaconAmount,1:BeaconAmount); % 从大矩阵中取出信标节点的距离for i=1:BeaconAmountdhop(i,1)=sum(D1(i,:)/sum(h1(i,:);% 每个信标节点的平均每跳距离endD2=Dall(1:BeaconAmount,(BeaconAmount+1):NodeAmount);%新标节点与未知节点的距离,逗号前面是行的范围,后面是列的范围。for i=1:BeaconAmountfor j=1:UNAmountif min(D2(:,j)=D2(i,j)Dhop(1,j)= dh

17、op (i,j);%未知节点从最近的信标获得校正值 end endendDhop hop1=h(1:BeaconAmount,(BeaconAmount+1):NodeAmount)% 未知节点到信标跳数, BeaconAmount 行 UNAmount 列%用跳数估计距离for i=1:UNAmounthop=Dhop(1,i);%hop为从最近信标获得的校正值Distance(:,i)=hop*hop1(:,i);%Beacon 行 UN 歹U;end% %最小二乘法求未知点坐标d=Distance;for i=1:2for j=1:(BeaconAmount-1)a(i,j)=Beaco

18、n(i,j)-Beacon(i,BeaconAmount);endend%a为第一个信标节点和最后一个信号节点的坐标差值,保留最后一个信标节点% aA=-2*(a);% d=d1;for m=1:UNAmountfor i=1:(BeaconAmount-1)B(i,1)=d(i,m)A2-d(BeaconAmount,m)A2-Beacon(1,i)A2+Beacon(1,BeaconAmount)A2-Beaco n(2,i)A2+Beacon(2,BeaconAmount)A2;%前九个信标节点到未知节点的距离平方最后信标节点到未知节点的距离平方前九个信标节点横坐标平方最后信标节点到未知节点的横坐标平方%前九个信标节点纵坐标平方%最后信标节点纵坐标平方endX1=inv(A*A)*A*B;%inv是求逆矩阵X(1,m)=X1(1,1);X(2,m)=X1(2,1);end%X为估计的未知节点位置%估计出的信号位置到for i=1:UNAmounterror(Z,i)=(X(1,i)-UN(1,i)A2+(X(2,i)-UN(2,i)A2)AQ.5);实际位置间的距离endavgerror(Z)=sum(error(Z,:)/UNAmount;%平均错误Accuracy(Z)=avgerror(Z)/R;% 节点精确度R=

温馨提示

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

评论

0/150

提交评论