【Dvhop定位】基于加权双曲线定位的Dvhop算法附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

个人主页:Matlab科研工作室

个人信条:格物致知。

更多Matlab仿真内容点击

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

针对基于双曲线定位的 DV-Hop 算法中误差项的异方差性引起的定位误差大的问题,提出了一种基于加权双曲线定位的 DV-Hop 改进算法。算法分析了基于双曲线定位的 DV-Hop 算法模型中误差项的异方差性,用加权最小二乘法对异方差性进行纠正,对加权最小二乘法中的权值矩阵进行了理论推导并得到与跳数相关的最佳权值矩阵,使得误差项满足同方差性,所得估计值接近最佳线性无偏估计。仿真结果表明,所提算法在定位精度上较目前常见的基于双曲线定位的 DV-Hop 算法都有一定提高。

【Dvhop定位】基于加权双曲线定位的Dvhop算法附matlab代码_第1张图片

【Dvhop定位】基于加权双曲线定位的Dvhop算法附matlab代码_第2张图片

⛄ 部分代码

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  基于加权双曲线的DV-Hop算法  ~~~~~~~~~~~~~~~~~~~~~~~~

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

% BorderLength-----正方形区域的边长,单位:m

% NodeAmount-------网络节点的个数

% BeaconAmount-----信标节点数

% Sxy--------------用于存储节点的序号,横坐标,纵坐标的矩阵

% Beacon-----------信标节点坐标矩阵;BeaconAmount*BeaconAmount

% UN---------------未知节点坐标矩阵;2*UNAmount

% Distance---------未知节点到信标节点距离矩阵;2*BeaconAmount

% h----------------节点间初始跳数矩阵

% X----------------节点估计坐标初始矩阵,X=[x,y]'

% R----------------节点的通信距离,一般为10-100m

clear,close all;

BorderLength=100;

NodeAmount=100;

BeaconAmount=20;

UNAmount=NodeAmount-BeaconAmount;

R=25;

shortest_Path=zeros(NodeAmount,NodeAmount);%初始跳数为0;NodeAmount行NodeAmount列

UN_Coordinates_Estimate=zeros(2,UNAmount);%节点估计坐标初始矩阵

times=100;

for num=1:times

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在正方形区域内产生均匀分布的随机拓扑~~~~~~~~~~~~~~~~~~~~

C=BorderLength.*rand(2,NodeAmount);

% %带逻辑号的节点坐标

Sxy=[[1:NodeAmount];C];

Anchor_Coordinates=[Sxy(2,1:BeaconAmount);Sxy(3,1:BeaconAmount)];%信标节点坐标矩阵,2*BeaconAmount

UN_Coordinates_True=[Sxy(2,(BeaconAmount+1):NodeAmount);Sxy(3,(BeaconAmount+1):NodeAmount)];%未知节点坐标

%画出节点分布图

% figure(1)

% plot(Sxy(2,1:BeaconAmount),Sxy(3,1:BeaconAmount),'r+',Sxy(2,(BeaconAmount+1):NodeAmount),Sxy(3,(BeaconAmount+1):NodeAmount),'k.')

% xlim([0,BorderLength]);

% ylim([0,BorderLength]);

% title('+ 红色信标节点 . 黑色未知节点','FontSize',14)

%%

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~初始化节点间距离、跳数矩阵~~~~~~~~~~~~~~~~~~~~~~

for i=1:NodeAmount

    for j=1:NodeAmount

        Distance(i,j)=((Sxy(2,i)-Sxy(2,j))^2+(Sxy(3,i)-Sxy(3,j))^2)^0.5;%所有节点间相互距离

        if (Distance(i,j)<=R)&(Distance(i,j)>0)

            shortest_Path(i,j)=1;%跳数矩阵,仅仅根据节点之间的实际距离判断跳数:假如实际距离小于通信半径,则认为节点之间能够直接通信,跳数为1

%             shortest_Path(i,j)=Distance(i,j)/R;

        elseif i==j

            shortest_Path(i,j)=0;

        else shortest_Path(i,j)=inf;

        end

    end

end

⛄ 运行结果

【Dvhop定位】基于加权双曲线定位的Dvhop算法附matlab代码_第3张图片

【Dvhop定位】基于加权双曲线定位的Dvhop算法附matlab代码_第4张图片

⛄ 参考文献

[1]史跃飞. 无线传感器网络加权定位算法的改进[D]. 太原理工大学, 2014.

[2]沈静静, 辛元芳, 唐燕. 基于DV-Hop的加权改进定位算法[J]. 西昌学院学报:自然科学版, 2017, 31(4):5.​

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

你可能感兴趣的:(无线传感器,matlab,算法,开发语言)