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


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

    🍎个人主页:Matlab科研工作室

    🍊个人信条:格物致知。

    更多Matlab仿真内容点击👇

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

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

    ⛄ 内容介绍

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

    ⛄ 部分代码

    %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  基于加权双曲线的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

    ⛄ 运行结果

    ⛄ 参考文献

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

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

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

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

  • 相关阅读:
    垃圾判断算法与4大引用
    C# String转DateTime
    Adobe发布Firefly 2,提升图像质量和用户体验
    xss漏洞简单案例
    在线副业教程之 02 你学的越多,你赚的越多+你必须开始学习的5个最好的在线副业
    JAVA经典百题之3的倍数
    [Gym 102423]-Elven Efficiency | 思维
    跨链桥已成行业最大安全隐患,为什么和怎么办
    Unity 中使用波浪动画创建 UI 图像
    centos7安装部署ElasticSearch
  • 原文地址:https://blog.csdn.net/qq_59747472/article/details/127451891