1 内容介绍
Chan 算法是 TDOA 定位方法的一个很赞的 trick。但是很多方法一旦从学术的角度去看,就罩上了奇异的光环。TDOA,the time differnces of arrival,到达时间差。Chan 算法1是非递归双曲线方程组解法,具有解析表达式解。其主要的特点为在测量误差服从理想高斯分布时,它的定位精度高、计算量小。该算法的推导的前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。
2 仿真代码
% 本程序实现taylor算法3参考占定位
clear all
clc
tic
BSN = 3; %基站数目
N = 200; %产生的位置个数
Noise =0.015; %测距误差1.5厘米
distribute = [];
num0 = 0;
num1 = 0;
num2 = 0;
num3 = 0;
num4 = 0;
num5 = 0;
% %*********************画出大于门限值的点的位置*******************
figure(1);
grid on
if(rmse_t(i)>0.05)
EMSTI
MS
rmse_t(i)
plot(MS(1,1),MS(1,2),'o');
hold on
elseif((rmse_t(i)<0.05)&&(rmse_t(i)>0.04))
plot(MS(1,1),MS(1,2),'*');
hold on
elseif((rmse_t(i)<0.04)&&(rmse_t(i)>0.03))
plot(MS(1,1),MS(1,2),'d');
hold on
elseif((rmse_t(i)<0.03)&&(rmse_t(i)>0.02))
plot(MS(1,1),MS(1,2),'+');
hold on
elseif((rmse_t(i)>0.01)&&(rmse_t(i)<0.02))
plot(MS(1,1),MS(1,2),'x');
hold on
elseif((rmse_t(i)<0.01))
plot(MS(1,1),MS(1,2),'.');
hold on
end
%*****************统计各个误差段的分布情况******************
if(rmse_t(i)>0.05)
num5 = num5+1;
elseif(rmse_t(i)>0.04)
num4 = num4+1;
elseif(rmse_t(i)>0.03)
num3 = num3+1;
elseif(rmse_t(i)>0.02)
num2 = num2+1;
elseif(rmse_t(i)>0.01)
num1 = num1+1;
else
num0 = num0+1;
end
end
%*******************************************************
plot(BS(1,1),BS(2,1),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',10)
plot(BS(1,2),BS(2,2),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',10)
plot(BS(1,3),BS(2,3),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',10)
% plot(BS(1,4),BS(2,4),'rs','LineWidth',2,...
% 'MarkerEdgeColor','k',...
% 'MarkerFaceColor','r',...
% 'MarkerSize',10)
grid on
axis ([0 50 0 50]);
%***********************需要显示的值***********************
site_distribute = [num0 num1 num2 num3 num4 num5];
distribute = site_distribute./N
site_distribute1 = [num0 ...
num0+num1 ...
num0+num1+num2 ...
num0+num1+num2+num3...
num0+num1+num2+num3+num4...
num0+num1+num2+num3+num4+num5];
distribute1 = site_distribute1./N
%*******************画出误差分布图**********************
figure(2)
error = 1:1:6;
bar(error,distribute,'b');
xlabel('定位误差分布(cm)');
ylabel('百分比');
figure(3)
bar(error,distribute1,'b');
xlabel('定位误差(cm)');
ylabel('百分比');
%****************************************************
3 运行结果
4 参考文献
[1]罗平. 基于TDOA的无线传感器网络定位系统研究与设计[D]. 昆明理工大学, 2014.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。