当前位置:   article > 正文

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

chan算法

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代码问题可私信交流。

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/607432
推荐阅读
相关标签
  

闽ICP备14008679号