• 【WSN定位】基于chan算法实现无源定位附matlab代码


    1 内容介绍

    Chan 算法是 TDOA 定位方法的一个很赞的 trick。但是很多方法一旦从学术的角度去看,就罩上了奇异的光环。TDOA,the time differnces of arrival,到达时间差。Chan 算法1是非递归双曲线方程组解法,具有解析表达式解。其主要的特点为在测量误差服从理想高斯分布时,它的定位精度高、计算量小。该算法的推导的前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。

    读取基站经纬度---获取每个基站测到目标信号的时间--根据速度*时间求其基站与基站到目标的距离差,得到两组方程--使用CHAN算法求解该双曲线方程组--舍弃无效解,得到目标位置,与GPS定位进行比较,使用大地主题公式求其距离误差。

    2 仿真代码

    % TDOA定位的Chan算法Matlab源码

    clc;

    clear all;

    close all

    weizhi=xlsread('4月21日.xlsx','实验四','B1:C3');

    shijian=xlsread('4月21日.xlsx','实验四','D1:D150');

    gps=xlsread('4月21日.xlsx','实验四','B4:C4');

    cc = 3e8;%g光速

    length=floor(length(shijian)/3);

    x=zeros(1,length);

    y=zeros(1,length);

    x3=zeros(1,length);

    y1=zeros(1,length);

    [X(1,1),X(1,2)]= jingwei(weizhi(1,1),weizhi(1,2));   %网关1

    [X(2,1),X(2,2)]= jingwei(weizhi(2,1),weizhi(2,2));   %网关2

    [X(3,1),X(3,2)]= jingwei(weizhi(3,1),weizhi(3,2));   %网关3

    % X(1,1)=weizhi(1,1);X(1,2)=weizhi(1,2);   %网关1

    % X(2,1)=weizhi(2,1);X(2,2)=weizhi(2,2);   %网关1

    % X(3,1)=weizhi(3,1);X(3,2)=weizhi(3,2);   %网关1

    X=X';

    for i=1:length

        

        for j= 1:3

            K(j)=X(1,j)^2 + X(2,j)^2;

        end

    %% 方差

    m=mean(diff,2);

    var=sum((diff(1,:)-m).^2)/100 ;

        %% 画图

        figure(1)

        t=1:100;

        plot(t,diff,'bo-');

        xlabel('次数');

        ylabel('误差大小(m)');    axis([0 100 0 700])

        title('实验四')

      disp(['平均误差为',num2str(mean(diff,2)),'方差为',num2str(var)]);

        figure(2)

        plot( weizhi(1,1),weizhi(1,2),'rs','LineWidth',2,...

            'MarkerEdgeColor','k',...

            'MarkerFaceColor','r',...

            'MarkerSize',10);hold on

        plot(weizhi(2,1),weizhi(2,2),'rs','LineWidth',2,...

            'MarkerEdgeColor','k',...

            'MarkerFaceColor','m',...

            'MarkerSize',10);hold on

        plot(weizhi(3,1),weizhi(3,2),'rs','LineWidth',2,...

            'MarkerEdgeColor','k',...

            'MarkerFaceColor','g',...

            'MarkerSize',10);hold on

        plot(gps(1,1),gps(1,2),'yo','LineWidth',2,...

            'MarkerEdgeColor','k',...

            'MarkerFaceColor','y',...

            'MarkerSize',10);hold on

         title('实验四')

         xlabel('经度');

         ylabel('纬度');

        for i=1:length

            plot(xx(i),yy(i),'bo');hold on

        end

         axis([108.93 108.95 34.05 34.09]);

        legend('基站1','基站2','基站3','目标真实位置','TDOA定位结果');

             figure(3);

         plot( weizhi(1,1),weizhi(1,2),'rs','LineWidth',2,...

            'MarkerEdgeColor','k',...

            'MarkerFaceColor','r',...

            'MarkerSize',10);hold on

        plot(weizhi(2,1),weizhi(2,2),'rs','LineWidth',2,...

            'MarkerEdgeColor','k',...

            'MarkerFaceColor','m',...

            'MarkerSize',10);hold on

        plot(weizhi(3,1),weizhi(3,2),'rs','LineWidth',2,...

            'MarkerEdgeColor','k',...

            'MarkerFaceColor','g',...

            'MarkerSize',10);hold on

        plot(gps(1,1),gps(1,2),'yo','LineWidth',2,...

            'MarkerEdgeColor','k',...

            'MarkerFaceColor','y',...

            'MarkerSize',10);hold on

          legend('基站1','基站2','基站3','目标真实位置');

         title('实验四')

         xlabel('经度');

         ylabel('纬度');

    3 运行结果

    4 参考文献

    [1]沙勇. 基于Matlab的WSN定位算法仿真设计[J]. 齐齐哈尔大学学报:自然科学版, 2017, 33(6):3.

    博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

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

  • 相关阅读:
    信息流广告投放的技巧
    基于工业智能网关的PLC远程控制解决方案
    【计算机网络】Cookie、Session和上传文件重点知识汇总
    C、指针基础2
    【DP】Block Sequence—CF1881E
    正则表达式实战:最新豆瓣top250爬虫超详细教程
    SSM学习——spring整合mybatis与junit(7)
    [附源码]计算机毕业设计springboot万佳商城管理系统
    flutter3-weos手机OS系统|Flutter3.22+Getx仿ios桌面管理OA应用
    决策树(中):数据挖掘十大算法之一
  • 原文地址:https://blog.csdn.net/matlab_dingdang/article/details/126673473