质心定位算法 江南大学

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

无线传感网技术实验报告(三)

班级:微电子1101学号:0301110115姓名:杨海平

一,实验目的:

通过仿真实验掌握无线传感器网络的定位算法—质心定位算法。

二,实验内容:

在100*100M2的正方形区域里,有n个信标节点和一个未知节点,未知节点和新表节点的通信半径均为R,则:

(1),当通信半径R=50M,信标节点个数n=6,12,18,24,30时,利用Monte Carlo方法,分别计算未知节点的实际位置与估计未知的平均误差;

(2),当信标节点个数n=20,通信半径R=5,10,15,20,25,30,35,40,45,50m时,利用Monte Carlo方法,分别计算未知节点的实际位置与估计位置的平均误差;

三,实验方法:

(1),在边长为100m的正方形中,产生一个信标节点为n,未知节点为1的随机分布图;

(2),确定与未知节点相连的信标节点;

(3),利用质心算法,对未知节点的位置进行估计;

(4),每一组数据(信标节点个数n,通信半径R)需要仿真800次,得出该组数据下未知节点的实际位置与估计位置的平均误差。

四,实验分析过程:

(1),实验内容一:当通信半径R=50M,信标节点个数n=6,12,18,24,30时,按照实验一的方法随机产生X,Y坐标为0~100的n个信标节点的坐标,再随机产生一个未知节点的X,Y坐标,然后判断n个信标节点是否能与未知节点通信,把能与未知节点通信的信标节点X,Y坐标相加,除以能与未知节点通信的节点数,即为用质心定位算法估计的未知节点个数,误差即为未知节点与估计未知节点坐标的距离。每组信标节点个数仿真800次,累加每次仿真的误差,取平均值即得到估计误差。

(2),实验内容二:思想方法与实验内容一相同,当信标节点个数n=20,通信半径R=5,10,15,20,25,30,35,40,45,50m时,每组通信半径仿真800次,累加每次仿真的误差,取平均值即得到估计误差。

五,程序

(1),实验内容一程序如下:

clear all;

close all;

nbeacon=[612182430];%信标节点个数n=6,12,18,24,30

nbeaconi=5;

error=zeros(1,nbeaconi);%误差数组error

nunknow=1;%知节点个数为1

r=50;%通信半径r为50

optimes=800;

for ni=1:1:5;%每组信标节点得到一个平均误差

errorsum=0;

validtimes=0;%800次仿真中至少有一个信标与未知节点通信的次数

for optimei=1:1:optimes

x=100*rand(1,nbeacon(ni));%随机产生X坐标为0~100的信标节点的坐标y=100*rand(1,nbeacon(ni));%随机产生Y坐标为0~100的信标节点的坐标xunknow=100*rand(1,nunknow);%随机产生未知节点的坐标

yunknow=100*rand(1,nunknow);%随机产生未知节点的坐标

error1=0;%800次仿真中的一小次仿真计算出的误差

xsum=0;

ysum=0;

xunknowcal=0;%800次仿真中的一小次仿真计算的未知节点的坐标

yunknowcal=0;%800次仿真中的一小次仿真计算的未知节点的坐标

connectedtime=0;%信标与未知节点通信的次数

for i=1:1:nbeacon(ni)

d=sqrt((x(i)-xunknow)^2+(y(i)-yunknow)^2);

if d

xsum=xsum+x(i);

ysum=ysum+y(i);

connectedtime=connectedtime+1;

end

end

if connectedtime~=0

xunknowcal=xsum/connectedtime;

yunknowcal=ysum/connectedtime;

validtimes=validtimes+1;

error1=sqrt((xunknowcal-xunknow)^2+(yunknowcal-yunknow)^2);

errorsum=errorsum+error1;%累加误差

end

end

error(ni)=errorsum/validtimes;%计算平均误差

end

(2),实验内容二程序如下:

clear all;

close all;

r=5:5:50;%通讯半径数组

error=zeros(1,10);%误差统计

for ri=1:1:10;%大循环,总共10个通讯半径

errorsum=0;

validtimes=0;

error1=0;

for optime=1:1:800

x=100*rand(1,20);%随机产生X坐标为0~100的信标节点的坐标

y=100*rand(1,20);%随机产生Y坐标为0~100的信标节点的坐标

xunknow=100*rand(1,1);%随机产生未知节点的坐标

yunknow=100*rand(1,1);%随机产生未知节点的坐标

xsum=0;

ysum=0;

xunknowcal=0;%800次仿真中的一小次仿真计算的未知节点的坐标

yunknowcal=0;%800次仿真中的一小次仿真计算的未知节点的坐标

connectedtime=0;

for i=1:1:20

d=sqrt((x(i)-xunknow)^2+(y(i)-yunknow)^2);

if d

xsum=xsum+x(i);

ysum=ysum+y(i);

connectedtime=connectedtime+1;

end

end

if connectedtime~=0

xunknowcal=xsum/connectedtime;

yunknowcal=ysum/connectedtime;

validtimes=validtimes+1;

error1=sqrt((xunknowcal-xunknow)^2+(yunknowcal-yunknow)^2);

errorsum=errorsum+error1;%累加误差

end

end

error(ri)=errorsum/validtimes;%计算平均误差

end

六,实验结果和分析:

(1),实验内容一:

表1不同信标节点个数时的误差(通信半径50m)

信标节点个数612182430误差(米)21.430219.017217.811317.187216.6767分析:在通信半径一定的情况下,信标节点数越多,定位就越准确。

(1),实验内容二:

表2不同通信半径时的误差(信标节点个数为20)

通信半径(米)5101520253035404550误差(米) 3.281 6.0258.0159.26410.13111.34812.29514.05715.39417.628分析:在信标节点个数一定的情况下,通信半径越大,定位就越不准确。

相关文档
最新文档