wsn定位蒙特卡洛盒mcb算法matlab源码.doc

上传人:文库蛋蛋多 文档编号:3025785 上传时间:2023-03-09 格式:DOC 页数:21 大小:240KB
返回 下载 相关 举报
wsn定位蒙特卡洛盒mcb算法matlab源码.doc_第1页
第1页 / 共21页
wsn定位蒙特卡洛盒mcb算法matlab源码.doc_第2页
第2页 / 共21页
wsn定位蒙特卡洛盒mcb算法matlab源码.doc_第3页
第3页 / 共21页
wsn定位蒙特卡洛盒mcb算法matlab源码.doc_第4页
第4页 / 共21页
wsn定位蒙特卡洛盒mcb算法matlab源码.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《wsn定位蒙特卡洛盒mcb算法matlab源码.doc》由会员分享,可在线阅读,更多相关《wsn定位蒙特卡洛盒mcb算法matlab源码.doc(21页珍藏版)》请在三一办公上搜索。

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; %采样盒子确定时,估计位置要扩大圆面积for i = 1:Ns Xseed(1,i) = unifrnd(Rg,(Xrange-Rg),1,1); Yseed(1,i) = unifrnd(Rg,(Yrange-Rg),1,1);endfor i = 1:Nn Xnode(1,i)=rand(1,1)*Xra

2、nge; Ynode(1,i)=rand(1,1)*Yrange; Xnode_g(1,i)=Xnode(1,i); %MCL估计位置,初始值设置为真实位置 Ynode_g(1,i)=Ynode(1,i);end%初始时刻的粒子群,for every nodefor i = 1:Nn for j = 1:N lx(i,j,1) = 0; ly(i,j,1) = 0; endendfor i = 1:Nn error(1,i) = 0;end%figure(1);%plot(Xseed,Yseed,bo,Xnode,Ynode,k*);%节点们开始运动,每次定位完成才开始下一次运动,这里假设这个

3、定位过程耗时非常短%仿真步数for k=2:step %新的时刻,节点们先运动一下,RWP模型 if Ynode(k,i) Yrange | Ynode(k,i) 0 Xnode(k,i) = Xnode(k-1,i) + r*cos(thita); Ynode(k,i) = Ynode(k-1,i) - r*sin(thita); end end %对每一个node逐个进行定位 for i = 1:Nn %测试每个seed是否可以用来定位 A1 = ; %存储1跳锚节点序号 A2 = ; %存储2跳锚节点序号 for j = 1:Ns d1 = sqrt(Xnode(k,i)-Xseed(k

4、,j)2+(Ynode(k,i)-Yseed(k,j)2); if d1=Xsambox_max(i,j,k) | Ysambox_min(i,j,k)=Ysambox_max(i,j,k) Xsambox_min(i,j,k) = Xanbox_min(k,i); Xsambox_max(i,j,k) = Xanbox_max(k,i); Ysambox_min(i,j,k) = Yanbox_min(k,i); Ysambox_max(i,j,k) = Yanbox_max(k,i); end %从采样盒子里采样 lx(i,j,k) = unifrnd(Xsambox_min(i,j,k)

5、,Xsambox_max(i,j,k),1,1); ly(i,j,k) = unifrnd(Ysambox_min(i,j,k),Ysambox_max(i,j,k),1,1); ns = 1; %滤波 and = ; for m = 1:temp1 d1(m) = sqrt(lx(i,j,k)-Xseed(k,A1(m)2+(ly(i,j,k)-Yseed(k,A1(m)2); if d1(m)=tr and = and 0; end %进行最终的判断 and = ; for m = 1:temp1 d1(m) = sqrt(lx(i,j,k)-Xseed(k,A1(m)2+(ly(i,j,

6、k)-Yseed(k,A1(m)2); if d1(m)tr and = and 1; end end if sum(and)=0 lx(i,j,k) = 0; ly(i,j,k) = 0; end end %至此 节点 i 的粒子群已经得到 %下面是进行定位,粒子群的优化 num_zero = 0; for j = 1:N if lx(i,j,k) = 0 num_zero = num_zero+1; end end %k时刻的定位位置 end %第二种情况 的 上一时间没有锚节点,没有采样粒子的更新,那么这种情况下 采样盒子就是锚盒子 if temp1=0 & temp2=0 & sum(

7、lx(i,:,k-1)=0 for j = 1:N sambox1 = Xanbox_min(k,i) ; sambox2 = Xanbox_max(k,i) ; sambox3 = Yanbox_min(k,i) ; sambox4 = Yanbox_max(k,i) ; Xsambox_min(i,j,k) = max(sambox1); Xsambox_max(i,j,k) = min(sambox2); Ysambox_min(i,j,k) = max(sambox3); Ysambox_max(i,j,k) = min(sambox4); %从采样盒子里采样 lx(i,j,k) =

8、unifrnd(Xsambox_min(i,j,k),Xsambox_max(i,j,k),1,1); ly(i,j,k) = unifrnd(Ysambox_min(i,j,k),Ysambox_max(i,j,k),1,1); ns = 1; %滤波 and = ; for m = 1:temp1 d1(m) = sqrt(lx(i,j,k)-Xseed(k,A1(m)2+(ly(i,j,k)-Yseed(k,A1(m)2); if d1(m)tr and = and 1; end end while(sum(and)=0 & ns = ns_range) %从采样盒子里采样 lx(i,j

9、,k) = unifrnd(Xsambox_min(i,j,k),Xsambox_max(i,j,k),1,1); ly(i,j,k) = unifrnd(Ysambox_min(i,j,k),Ysambox_max(i,j,k),1,1); %滤波 and = ; for m = 1:temp1 d1(m) = sqrt(lx(i,j,k)-Xseed(k,A1(m)2+(ly(i,j,k)-Yseed(k,A1(m)2); if d1(m)tr and = and 1; end end ns = ns+1; end %进行最终的判断 and = ; for m = 1:temp1 d1(m

10、) = sqrt(lx(i,j,k)-Xseed(k,A1(m)2+(ly(i,j,k)-Yseed(k,A1(m)2); if d1(m)tr and = and 1; end end if sum(and)=0 lx(i,j,k) = 0; ly(i,j,k) = 0; end end %至此 节点 i 的粒子群已经得到 %下面是进行定位,粒子群的优化 num_zero = 0; for j = 1:N if lx(i,j,k) = 0 num_zero = num_zero+1; end end %k时刻的定位位置 if num_zero = N Xnode_g(k,i) = Xnode

11、_g(k-1,i); Ynode_g(k,i) = Ynode_g(k-1,i); end if num_zero = N Xnode_g(k,i) = sum(lx(i,:,k)/(N-num_zero); Ynode_g(k,i) = sum(ly(i,:,k)/(N-num_zero); end %粒子群补全N个 if num_zero = N for j = 1:N lx(i,j,k) = 0; ly(i,j,k) = 0; end end if num_zero = N for j = 1:N if lx(i,j,k) = 0 lx(i,j,k) = Xnode_g(k,i); ly

12、(i,j,k) = Ynode_g(k,i); end end end end %第三种情况 的 上一时间有锚节点,也就是有采样粒子的更新 if temp1=0 & temp2=0 & sum(lx(i,:,k-1)=0 for j = 1:N sambox1 = Xanbox_min(k,i) Xnode_g(k-1,i)-Nf*Vmax; sambox2 = Xanbox_max(k,i) Xnode_g(k-1,i)+Nf*Vmax; sambox3 = Yanbox_min(k,i) Ynode_g(k-1,i)-Nf*Vmax; sambox4 = Yanbox_max(k,i) Y

13、node_g(k-1,i)+Nf*Vmax; Xsambox_min(i,j,k) = max(sambox1); Xsambox_max(i,j,k) = min(sambox2); Ysambox_min(i,j,k) = max(sambox3); Ysambox_max(i,j,k) = min(sambox4); %增加一步判断项,若是锚盒子和运动圆能够有交集,就使用交集,如果没有交集,则使用锚盒子 if Xsambox_min(i,j,k)=Xsambox_max(i,j,k) | Ysambox_min(i,j,k)=Ysambox_max(i,j,k) Xsambox_min(

14、i,j,k) = Xanbox_min(k,i); Xsambox_max(i,j,k) = Xanbox_max(k,i); Ysambox_min(i,j,k) = Yanbox_min(k,i); Ysambox_max(i,j,k) = Yanbox_max(k,i); end %从采样盒子里采样 lx(i,j,k) = unifrnd(Xsambox_min(i,j,k),Xsambox_max(i,j,k),1,1); ly(i,j,k) = unifrnd(Ysambox_min(i,j,k),Ysambox_max(i,j,k),1,1); ns = 1; %滤波 and = ; for m = 1:temp2 d1(m) = sqrt(lx(i,j,k)-Xseed(k,A2(m)2+(ly(i,j,k)-Yseed(k,A2(m)2); if d1(m)tr & d1(m)tr & d1(m)tr & d1(m)tr & d1(m)=2*tr and = and 0; else and = and 1; end end ns = ns+1; end %进

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号