WSN定位蒙特卡洛方法MCL的MATLAB实现源码Word下载.docx
- 文档编号:18979987
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:14
- 大小:142.07KB
WSN定位蒙特卡洛方法MCL的MATLAB实现源码Word下载.docx
《WSN定位蒙特卡洛方法MCL的MATLAB实现源码Word下载.docx》由会员分享,可在线阅读,更多相关《WSN定位蒙特卡洛方法MCL的MATLAB实现源码Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
ns_range=200;
%每个采样盒子的最大采样次数
fori=1:
Ns
Xseed(1,i)=rand(1,1)*Xrange;
Yseed(1,i)=rand(1,1)*Yrange;
end
Nn
Xnode(1,i)=rand(1,1)*Xrange;
Ynode(1,i)=rand(1,1)*Yrange;
Xnode_g(1,i)=Xnode(1,i);
%MCL估计位置,初始值设置为真实位置
Ynode_g(1,i)=Ynode(1,i);
%初始时刻的粒子群,foreverynode
forj=1:
N
lx(i,j,1)=Xnode_g(1,i);
ly(i,j,1)=Ynode_g(1,i);
end
%figure
(1);
%plot(Xseed,Yseed,'
bo'
Xnode,Ynode,'
k*'
);
%节点们开始运动,每次定位完成才开始下一次运动,这里假设这个定位过程耗时非常短
%仿真步数
fork=2:
step
%新的时刻,节点们先运动一下,RWP模型
fori=1:
r=rand(1,1)*Vmax;
thita=rand(1,1)*2*pi;
Xseed(k,i)=Xseed(k-1,i)+r*cos(thita);
ifYnode(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);
%对每一个node逐个进行定位
%测试每个seed是否可以用来定位
A1=[];
%存储1跳锚节点序号
A2=[];
%存储2跳锚节点序号
d1=sqrt((Xnode(k,i)-Xseed(k,j))^2+(Ynode(k,i)-Yseed(k,j))^2);
ifd1<
=tr
A1=[A1j];
ifd1>
tr&
&
d1<
=2*tr
form=1:
ifm~=i
dmi=sqrt((Xnode(k,i)-Xnode(k,m))^2+(Ynode(k,i)-Ynode(k,m))^2);
dms=sqrt((Xnode(k,m)-Xseed(k,j))^2+(Ynode(k,m)-Yseed(k,j))^2);
ifdmi<
=tr&
dms<
A2=[A2j];
%接下来要获取采样盒子,每个粒子都要有一个采样盒子,然后还要进行采样,每个采样盒子的采样都要有一个次数限制,这里还是要分四种情况
temp1=size(A1,2);
temp2=size(A2,2);
%第一种情况
iftemp1==0&
temp2==0
Xnode_g(k,i)=Xnode_g(k-1,i);
Ynode_g(k,i)=Ynode_g(k-1,i);
lx(i,j,k)=0;
%周围没有锚节点,没法进行定位,则粒子群全部置零
ly(i,j,k)=0;
%第二种情况
iftemp1~=0&
temp2==0
sambox1=[Xnode_g(k-1,i)-Nf*Vmax];
sambox2=[Xnode_g(k-1,i)+Nf*Vmax];
sambox3=[Ynode_g(k-1,i)-Nf*Vmax];
sambox4=[Ynode_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);
%从采样盒子里采样
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=[];
temp1
d1(m)=sqrt((lx(i,j,k)-Xseed(k,A1(m)))^2+(ly(i,j,k)-Yseed(k,A1(m)))^2);
ns=ns+1;
%进行最终的判断
ifd1(m)<
and=[and0];
ifd1(m)>
tr
and=[and1];
ifsum(and)~=0
%至此节点i的粒子群已经得到
%下面是进行定位,粒子群的优化
num_zero=0;
iflx(i,j,k)==0
num_zero=num_zero+1;
%k时刻的定位位置
ifnum_zero==N
Xnode_g(k,i)=Xnode_g(k-1,i);
Ynode_g(k,i)=Ynode_g(k-1,i);
ifnum_zero~=N
Xnode_g(k,i)=sum(lx(i,:
k))/(N-num_zero);
Ynode_g(k,i)=sum(ly(i,:
%粒子群补全N个
lx(i,j,k)=Xnode_g(k,i);
ly(i,j,k)=Ynode_g(k,i);
%第三种情况
temp2~=0
else
temp2
d1(m)=sqrt((lx(i,j,k)-Xseed(k,A2(m)))^2+(ly(i,j,k)-Yseed(k,A2(m)))^2);
d1(m)<
%第四种情况
error_total(k)=sum(error(k,:
))/Nn;
k=1:
size(error_total,2)
plot(k,error_total,'
b-o'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WSN 定位 蒙特卡洛 方法 MCL MATLAB 实现 源码