资源描述:
《WSN定位蒙特卡洛盒MCB算法MATLAB源码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、clear;clc;%初始化工作Ns=40;Nn=400;Vmax=50;Xrange=500;Yrange=500;tr=100;Rg=0.5*0;step=6;N=50;ns_range=200;%每个采样盒子的最大采样次数Nf=1.5;%采样盒子确定时,估计位置要扩大圆面积fori=1:NsXseed(1,i)=unifrnd(Rg,(Xrange-Rg),1,1);Yseed(1,i)=unifrnd(Rg,(Yrange-Rg),1,1);endfori=1:NnXnode(1,i)=rand(1,1)*Xrange;Y
2、node(1,i)=rand(1,1)*Yrange;Xnode_g(1,i)=Xnode(1,i);%MCL估计位置,初始值设置为真实位置Ynode_g(1,i)=Ynode(1,i);end%初始时刻的粒子群,foreverynodefori=1:Nnforj=1:Nlx(i,j,1)=0;ly(i,j,1)=0;endendfori=1:Nnerror(1,i)=0;end%figure(1);%plot(Xseed,Yseed,'bo',Xnode,Ynode,'k*');%节点们开始运动,每次定位完成才开始下一次运动,这
3、里假设这个定位过程耗时非常短%仿真步数fork=2:step%新的时刻,节点们先运动一下,RWP模型ifYnode(k,i)>Yrange
4、
5、Ynode(k,i)<0Xnode(k,i)=Xnode(k-1,i)+r*cos(thita);Ynode(k,i)=Ynode(k-1,i)-r*sin(thita);endend%对每一个node逐个进行定位fori=1:Nn%测试每个seed是否可以用来定位A1=[];%存储1跳锚节点序号A2=[];%存储2跳锚节点序号forj=1:Nsd1=sqrt((Xnode(k,i)-Xse
6、ed(k,j))^2+(Ynode(k,i)-Yseed(k,j))^2);ifd1<=trA1=[A1j];endendiftemp1~=0&&temp2==0a1_x_min=[];a1_x_max=[];a1_y_min=[];a1_y_max=[];form=1:temp1a1_x_min=[a1_x_minXseed(k,A1(m))-tr];a1_x_max=[a1_x_maxXseed(k,A1(m))+tr];a1_y_min=[a1_y_minYseed(k,A1(m))-tr];a1_y_max=[a1_y_m
7、axYseed(k,A1(m))+tr];endXanbox_min(k,i)=max(a1_x_min);Xanbox_max(k,i)=min(a1_x_max);Yanbox_min(k,i)=max(a1_y_min);Yanbox_max(k,i)=min(a1_y_max);endiftemp1==0&&temp2~=0a2_x_min=[];a2_x_max=[];a2_y_min=[];a2_y_max=[];form=1:temp2a2_x_min=[a2_x_minXseed(k,A2(m))-2*tr];a2
8、_x_max=[a2_x_maxXseed(k,A2(m))+2*tr];a2_y_min=[a2_y_minYseed(k,A2(m))-2*tr];a2_y_max=[a2_y_maxYseed(k,A2(m))+2*tr];endXanbox_min(k,i)=max(a2_x_min);Xanbox_max(k,i)=min(a2_x_max);Yanbox_min(k,i)=max(a2_y_min);Yanbox_max(k,i)=min(a2_y_max);endiftemp1~=0&&temp2~=0a1_x_mi
9、n=[];a1_x_max=[];a1_y_min=[];a1_y_max=[];form=1:temp1a1_x_min=[a1_x_minXseed(k,A1(m))-tr];a1_x_max=[a1_x_maxXseed(k,A1(m))+tr];a1_y_min=[a1_y_minYseed(k,A1(m))-tr];a1_y_max=[a1_y_maxYseed(k,A1(m))+tr];enda2_x_min=[];a2_x_max=[];a2_y_min=[];a2_y_max=[];form=1:temp2a2_x
10、_min=[a2_x_minXseed(k,A2(m))-2*tr];a2_x_max=[a2_x_maxXseed(k,A2(m))+2*tr];a2_y_min=[a2_y_minYseed(k,A2(m))-2*tr];a2_y_max=[a