matlab chan算法定位,chan算法定位 matlab

Chan算法及其验证

由于实际条件,以TOA得出测量值对硬件要求很高,难以实现。所以我们由TDOA来得出算法所需的测量值。

实际中,基站根据接受到的信号难以得到移动点到基站的具体距离,则TDOA 定位是接收移动台发出的信号到达不同基站的时间差,由此计算出移动台到基站间的距离之差。根据移动台到两个基站的距离差能建立唯一的一条双曲线,根据至少3个基站建立的双曲线方程组求解求交点来得到移动台的坐标。而实际中由于种种误差,完全一致的交点是不存在的,需要较多的基站得到超过未知量数目(2)的方程组得到更多的冗余信息,来实现更准确的定位。Chan算法则是一种处理TDOA测量值得到估计点的可行的方法。

Chan算法是非递归双曲线方程组解法,具有解析表达式解。其主要的特点为在测量误差服从理想高斯分布时,它的定位精度高、计算量小,并且可以通过增加基站数量来提高算法精度。该算法的推导的前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。Chan算法可分为只有三个BS参与定位和三个以上BS 定位两种。而实际中往往采用三个以上BS定位。

当基站的数量大于3时,TDOA值得到的非线性方程组个数要多于未知变量的个数,现将初始的TDOA方程组化为线性方程组,然后用加权最小二乘法得到初始解,再用第一次的到的初始解等约束变量进行第二次加权最小二乘估计,最后得到改进的位置估计。以下为该处理过程的matlab语句如下:

%计算第一次WLS估计结果(远距算法)

Za = inv(Ga.'*inv(Q)*Ga)*Ga.'*inv(Q)*ha

%第一次WLS计算(近距算法)

Va2 = sqrt((Za2(1)-Pbs(2:N,1)).^2+(Za2(2)-Pbs(2:N,2)).^2)

Ba2 = diag(Va2);

Fa2 = Ba2*Q*Ba2;

Za2 = inv(Ga.'*inv(Fa2)*Ga)*Ga.'*inv(Fa2)*ha;

Zacov2 = inv(Ga.'*inv(Fa2)*Ga);

%第二次WLS计算(近距算法)

hb = [(Za2(1)-Xb)^2; (Za2(2)-Yb)^2; Za2(3)^2]

Gb = [1 0;0 1;1 1];

Bb2 = [Za2(1)-Pbs(1,1) 0 0;0 Za2(2)-Pbs(1,2) 0;0 0 sqrt((Za2(1)-Pbs(1,1))^2+(Za2(2)-Pbs(1,2))^2)];

Fb2 = 4*Bb2*Zacov2*Bb2;

Zb2 = inv(Gb'*inv(Fb2 )*Gb)*Ga.'*inv(Fb2 )*hb;

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值