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代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。