dv-hop算法定位误差与半径的关系

上传人:飞*** 文档编号:40228975 上传时间:2018-05-24 格式:DOC 页数:5 大小:42.50KB
返回 下载 相关 举报
dv-hop算法定位误差与半径的关系_第1页
第1页 / 共5页
dv-hop算法定位误差与半径的关系_第2页
第2页 / 共5页
dv-hop算法定位误差与半径的关系_第3页
第3页 / 共5页
dv-hop算法定位误差与半径的关系_第4页
第4页 / 共5页
dv-hop算法定位误差与半径的关系_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《dv-hop算法定位误差与半径的关系》由会员分享,可在线阅读,更多相关《dv-hop算法定位误差与半径的关系(5页珍藏版)》请在金锄头文库上搜索。

1、%第二个程序 定位误差与半径关系 节点分布图 % DV-Hop 算法 (定 位误差与通信半径关系)% % BorderLength-正方形区域的边长,单位:m % NodeAmount-网络节点的个数 % BeaconAmount-信标节点数 % Sxy-用于存储节点的序号,横坐标,纵坐标的矩阵 %Beacon-信标节点坐标矩阵;BeaconAmount*BeaconAmount %UN-未知节点坐标矩阵;2*UNAmount % Distance-未知节点到信标节点距离矩阵;2*BeaconAmount %h-节点间初始跳数矩阵 %X-节点估计坐标初始矩阵,X=x,y % R-节点的通信距离

2、,一般为 10-100mclear,close all; BorderLength=100; NodeAmount=100; BeaconAmount=10; UNAmount=NodeAmount-BeaconAmount; R=20; % D=zeros(NodeAmount,NodeAmount);%未知节电到信标节点距离初始矩阵; BeaconAmount 行 NodeAmount 列for p=1:500 h=zeros(NodeAmount,NodeAmount);%初始跳数为 0;BeaconAmount 行 NodeAmount 列 X=zeros(2,UNAmount);%节

3、点估计坐标初始矩阵 Y=5; %运算次数,R=R*Y %在正方形区域内产生均匀分布的随机拓 扑C=BorderLength.*rand(2,NodeAmount); %带逻辑号的节点坐标Sxy=1:NodeAmount;C; %Sxy(2,1:BeaconAmount)=0 100 0 100 50; % 25 25 75 75; %Sxy(3,1:BeaconAmount)=0 0 100 100 50; Beacon=Sxy(2,1:BeaconAmount);Sxy(3,1:BeaconAmount);%信标节点坐标 UN=Sxy(2,(BeaconAmount+1):NodeAmoun

4、t);Sxy(3,(BeaconAmount+1):NodeAmount);%未 知节点坐标 %画出节点分布图plot(Sxy(2,1:BeaconAmount),Sxy(3,1:BeaconAmount),r*,Sxy(2,(BeaconAmount+1):Nod eAmount),Sxy(3,(BeaconAmount+1):NodeAmount),k.) xlim(0,BorderLength); ylim(0,BorderLength); title(* 红色信标节点 . 黑色未知节点) %初始化节点间距离、跳数矩阵 %Accuracy=zeros(1,Y); for Z=1:YDal

5、l=zeros(NodeAmount,NodeAmount);for i=1:NodeAmountfor j=1:NodeAmountDall(i,j)=(Sxy(2,i)-Sxy(2,j)2+(Sxy(3,i)-Sxy(3,j)2)0.5;%所有节点间相互距离if (Dall(i,j)0)h(i,j)=1;%初始跳数矩阵elseif i=jh(i,j)=0;else h(i,j)=inf;endendend %最短路经算法计算节点间跳数for k=1:NodeAmountfor i=1:NodeAmountfor j=1:NodeAmountif h(i,k)+h(k,j)h(i,j)%mi

6、n(h(i,j),h(i,k)+h(k,j)h(i,j)=h(i,k)+h(k,j);endendendend%求每个信标节点的校正值 h1=h(1:BeaconAmount,1:BeaconAmount); D1=Dall(1:BeaconAmount,1:BeaconAmount); for i=1:BeaconAmountfor j=1:BeaconAmount if i=j %为一个点跳数为 0 所以有下士。dt1(i,j)=0; else dt1(i,j)=(h1(i,j)-D1(i,j)/R) / h1(i,j);endendenddt=dt1(1:BeaconAmount,1:B

7、eaconAmount);for i=1:BeaconAmountdhop(i,1)=sum(1+dt(i,:).*D1(i,:)/sum(h1(i,:);%每个信标节点的平均每跳距离end for i=1:BeaconAmountDDt(i,1)=sum(1+dt(i,:)/( BeaconAmount-1); % end dti=DDt(1:BeaconAmount,1);D2=Dall(1:BeaconAmount,(BeaconAmount+1):NodeAmount);%BeaconAmount 行 UNAmount 列for i=1:BeaconAmountfor j=1:UNAm

8、ountif min(D2(:,j)=D2(i,j)Dhop(1,j)= dhop(i,1);%未知节点从最近的信标获得校正值endendend dhop %用跳数估计距离 hop1=h(1:BeaconAmount,(BeaconAmount+1):NodeAmount)%未知节点到信标跳数, BeaconAmount 行 UNAmount 列for i=1:UNAmount for j=1:BeaconAmounthop=Dhop(1,i);%hop 为从最近信标获得的校正值if j=mao % dt=dt1(1:BeaconAmount,1:BeaconAmount);Distance(

9、j,i)=hop*hop1(j,i) /(1+dti(j,1); elseDistance(j,i)=hop*hop1(j,i) /(1+dt(mao,j); end end end% %最小二乘法求未知点坐标 d=Distance;for i=1:2for j=1:(BeaconAmount-1)a(i,j)=Beacon(i,j)-Beacon(i,BeaconAmount);endend A=-2*(a); % d=d1;for m=1:UNAmount for i=1:(BeaconAmount-1)B(i,1)=d(i,m)2-d(BeaconAmount,m)2- Beacon(1

10、,i)2+Beacon(1,BeaconAmount)2- Beacon(2,i)2+Beacon(2,BeaconAmount)2;endX1=inv(A*A)*A*B;X(1,m)=X1(1,1);X(2,m)=X1(2,1);endfor i=1:UNAmount% error(Z,i)=(X(1,i)-UN(1,i)2+(X(2,i)-UN(2,i)2)0.5);% end% avgerror(Z)=sum(error(Z,:)/UNAmount% Accuracy(Z)=avgerror(Z)/R %红色表示原来的 error(p,i)=(X(1,i)-UN(1,i)2+(X(2,i

11、)-UN(2,i)2)0.5);ends(p,1)=sum(error(p,:)/UNAmount end avgerror(Z)=sum(s)/500Accuracy(Z)=avgerror(Z)/R% %if Accuracy = Inf disp(重新运行程序.)returnelseif Accuracy=NaNdisp(重新运行程序.)returnend R=R+20; end %画出未知节点的误差%figure;plot(error(1,1:UNAmount),-bo); %hold on; %plot(error(2,1:UNAmount),-ro); %plot(error(3,1:UNAmount),-go); %plot(error(4,1:UNAmount),-yo);%plot(error(5,1:UNAmount),-ko); title(未知节点的误差); %画出节点精确度图figure;plot(20:20:100, Accuracy,-o) xlabel(通信半径/m); ylabel(定位精度/100%); title(节点精确度);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号