matlab练习程序(TOA算法)
TOA全称time of arrival,根据测量移动台和基站之间的信号到达时间,再转换为距离从而进行定位的方法。
类似的技术还有TDOA和AOA,真实的应用场景就是GNSS和UWB了。
定位原理可以用下图表示:
如上图三个基站可列三个方程,就能解出定位点,但一般基站通常更多,因此需要用到最小二乘的方法解方程组。
设MS坐标为(x,y),BS坐标为(xi,yi),则有方程组:
展开得:
到这里就能用最小二乘来求解了。
matlab代码如下:
clear all; close all; clc; num = 6; %可以认为是基站或卫星数,随机做6个 loc = [20,30] %实际坐标位置 sat = 100*rand(num,2); %基站或卫星二维坐标 dist = loc - sat + 0.2*rand(num,2); %加20厘米测距误差 dist = dist(:,1).^2 + dist(:,2).^2; r = sat(:,1).^2 + sat(:,2).^2; X = [-2*sat ones(length(sat),1)]; Y = dist - r; C = inv(X'*X)*X'*Y; C(1:2) %计算结果
结果如下:
设定的位置和最终计算得到的位置基本一致。