最小二乘法和加权最小二乘法的非视距传播下的3个基站的二维TDOA定位性能均方误差对比,并给出完整matlab代码
时间: 2023-06-11 15:08:26 浏览: 193
首先,最小二乘法(LS)和加权最小二乘法(WLS)的二维TDOA定位公式为:
LS:(x,y) = argmin∑(r_i - ||p_i - (x,y)||)^2
WLS:(x,y) = argmin∑w_i(r_i - ||p_i - (x,y)||)^2
其中,r_i表示第i个基站到目标点的距离,p_i表示第i个基站的位置,w_i表示第i个基站的权重,|| ||表示向量的模长。
对于非视距传播(NLOS),我们可以采用加权最小二乘法来解决。具体地,我们可以根据实际测量数据来计算每个基站的权重,从而提高定位精度。
下面是完整的matlab代码:
```
clear;clc;
% 基站坐标
p1 = [0,0];
p2 = [100,0];
p3 = [50,100];
% 目标点坐标
x = 30;
y = 40;
% 计算距离
r1 = norm([x,y]-p1);
r2 = norm([x,y]-p2);
r3 = norm([x,y]-p3);
% 加入噪声
r1 = r1 + randn()*2;
r2 = r2 + randn()*2;
r3 = r3 + randn()*2;
% 计算权重
d12 = norm(p1-p2);
d23 = norm(p2-p3);
d13 = norm(p1-p3);
w1 = (r2+r3-d23-d13)/(2*r1);
w2 = (r1+r3-d12-d13)/(2*r2);
w3 = (r1+r2-d12-d23)/(2*r3);
% 加权最小二乘法
A = [2*(p1-p3);2*(p2-p3)];
b = [r3^2-r1^2-p1*p1'+p3*p3';r3^2-r2^2-p2*p2'+p3*p3'];
x = inv(A'*diag([w1,w2])*A)*A'*diag([w1,w2])*b;
x = x';
% 最小二乘法
A = [2*(p1-p3);2*(p2-p3)];
b = [r3^2-r1^2-p1*p1'+p3*p3';r3^2-r2^2-p2*p2'+p3*p3'];
x_ls = inv(A'*A)*A'*b;
x_ls = x_ls';
% 计算均方误差
mse_wls = norm([x,y]-x)^2;
mse_ls = norm([x,y]-x_ls)^2;
% 绘图
figure(1);
plot([p1(1),p2(1),p3(1),x,x_ls(1)],[p1(2),p2(2),p3(2),y,x_ls(2)],'o');
text(p1(1),p1(2),'BS1');
text(p2(1),p2(2),'BS2');
text(p3(1),p3(2),'BS3');
text(x,y,'Target');
text(x_ls(1),x_ls(2),'LS');
title(['WLS MSE = ',num2str(mse_wls),', LS MSE = ',num2str(mse_ls)]);
```
代码中,我们首先定义了基站坐标和目标点坐标,然后计算了三个距离,并加入了噪声。接着,我们根据测量数据计算了每个基站的权重,并采用加权最小二乘法和最小二乘法分别进行定位,并计算了均方误差。最后,我们绘制了图形,并在标题中显示了均方误差。
注意:由于非视距传播下的定位问题比较复杂,上述代码仅供参考,实际应用中需要根据具体情况进行调整。
阅读全文