质心定位算法 江南大学
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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分析:在信标节点个数一定的情况下,通信半径越大,定位就越不准确。