【WSN定位】基于chan算法、fang算法、taylor算法和最小二乘定位算法lsm实现目标定位matlab源码

415 阅读2分钟

 1 模型

超宽带无线定位技术有广阔的应用前景,本文列出了主要针对室内物体的基于到达时间差(TDOA)的定位算法.首先对常用的chan算法、fang算法、taylor算法和最小二乘定位算法在LOS情况下的性能展开研究,得出此算法对于服从正态分布的误差有很好的性能,然后仿真结果表明,chan算法、fang算法、taylor算法和最小二乘定位算法定位性能可以达到理想效果.


2 部分代码

clc;
clear all
close all
BSN = 4;%基站数量
%目标位置
MSP(1,1) =250*rand(1);
MSP(1,2) = 250*rand(1);
% 算法开始:
Noise = 10*rand(1);%噪声
X=500;
Y=500;
BS = [0, X, 0,X   0, 0,  Y,Y];          % 参考基站坐标
figure(1)%画出基站位置
plot(BS(1,1),BS(2,1),'rs','LineWidth',2,...
   'MarkerEdgeColor','k',...
   'MarkerFaceColor','r',...
   'MarkerSize',20);hold on
plot(BS(1,2),BS(2,2),'rs','LineWidth',2,...
   'MarkerEdgeColor','k',...
   'MarkerFaceColor','r',...
   'MarkerSize',20);
plot(BS(1,3),BS(2,3),'rs','LineWidth',2,...
   'MarkerEdgeColor','k',...
   'MarkerFaceColor','r',...
   'MarkerSize',20);
plot(BS(1,4),BS(2,4),'rs','LineWidth',2,...
   'MarkerEdgeColor','k',...
   'MarkerFaceColor','r',...
   'MarkerSize',20);
grid on
axis ([-10 1000 -10 1000]);
%chan算法
EMSCI = ChanAlgorithm1(BSN, MSP,BS, Noise);
EMSC(11) = EMSCI(1);
EMSC(12) = EMSCI(2);
%Fang算法
EMSCF = FangAlgorithm(BSN, MSP,BS, Noise);
EMSF(11) = EMSCF(1);
EMSF(12) = EMSCF(2);
%泰勒定位
EMST_taylor = TaylorAlgorithm1(BSN, MSP,BS, Noise);
%% 最小二乘法
EMST_lsm = lsm(BSN, MSP,BS, Noise)';

plot(MSP(1),MSP(2),'rp','MarkerSize',10);
plot(EMSC(11),EMSC(12),'co','MarkerSize',10);
plot(EMSF(1 ,1),EMSF(1 ,2),'ks','MarkerSize',10);
plot(EMST_taylor(11),EMST_taylor(12),'m^','MarkerSize',10);
plot(EMST_lsm(1 ,1),EMST_lsm(1 ,2),'g*','MarkerSize',10);
title('TDOA定位')
legend('基站1','基站2','基站3','基站4','目标真实位置','CHAN算法','FANG算法','泰勒定位','最小二乘定位')
chan_wucha(1)=sqrt((MSP(1) - EMSC(1,1))^2 + (MSP(2) - EMSC(1,2))^2);
Fang_wucha(1)=sqrt((MSP(1) - EMSF(1,1))^2 + (MSP(2) - EMSF(1,2))^2);
taylor_wucha(1)=sqrt((MSP(1) - EMST_taylor(1,1))^2 + (MSP(2) - EMST_taylor(1,2))^2);
lsm_wucha(1)=sqrt((MSP(1) - EMST_lsm(1,1))^2 + (MSP(2) - EMST_lsm(1,2))^2);
disp(['chan算法定位误差=',num2str(chan_wucha)])
disp(['Fang算法定位误差=',num2str(Fang_wucha)])
disp(['泰勒算法定位误差=',num2str(taylor_wucha)])
disp(['最小二乘法算法定位误差=',num2str(lsm_wucha)])
% rmse_c = TDOA_RMSE(MSP,EMSC);
% rmse_t = TDOA_RMSE(MSP,EMST);

3 仿真结果

4 参考文献

[1]张志良, 孙棣华, 张星霞. TDOA定位中到达时间及时间差误差的统计模型[J]. 重庆大学学报, 2006, 29(001):85-88.

[2]孙胜, 李辉, & 韩崇昭. (2002). 基于tdoa定位技术的仿真研究. 无线通信技术(04), 40-43.

5 完整MATLAB代码与数据下载地址

见博客主页头条