北斗导航系统伪码定位原理,MATLAB迭代法求解

用户到卫星的距离可以先简单理解成通过光速×时间差得到

而用户测得的是包含各种误差影响在内的距离, 称之为伪距。

这是伪距

是用户机钟差,加上用户三维坐标,共四个未知量,所以需要至少同时看到四颗卫星才能实现定位。

设用户坐标是(X,Y,Z),三颗卫星位置根据星历可得是已知量,设为(Xi,Yi,Zi)

则用户对第i个卫星的伪距为:

后面的一串是各种误差,比如电离层影响等等,这些都根据模型可提前求得,算作已知量。

写完整: 

提前写明,最终求解这个四元方程的方法是  迭代法

因此对于(X,Y,Z)会需要一个初值,可以理解为近似值,但实际你随便取无影响,只会对迭代系数有一点点的影响。

我们把这个初值定为(X0,Y0,Z0),令

然后将一开始伪距的表达式泰勒一阶展开,这里是三元的泰勒展开,anyway只有套用三元的一阶展开公式就行

三元函数一阶泰勒展开公式

得到(5)(左图ΔX=X-X0带入了)

 后引入这个ρ01,类似到ρ04,带入(5)并求偏导

 可得    ,再带入(5),(5)就可用偏导表示 

完整版

,记

(6)写成矩阵表示:,因此

最终可解得ΔX,ΔY,ΔZ,CΔtu。通过更新用户坐标

如果超过四颗卫星的信息,前面都一样,相当于方程数多于未知量个数,此时只需要在最后加上最小二乘法的处理就可以得到最优解了。

考虑到涉及到的矩阵运算比较多,所以选用MATLAB来计算

🍞正在为您运送作品详情  代码+介绍文档

文档中写的很清楚了,其实很简单

代码中选用了三组数据,最终得到的计算位置相同

最终实验结论:

迭代次数和初始值的选定有关系,初始值准确则需要的迭代次数少。

但是总体的迭代的收敛速度非常快,不管初始值多少,通过几次迭代就可以趋向平稳。所以我想,即便一开始不知道用户的近似位置,通过伪码和卫星位置也可以很快通过迭代得到用户准确位置。

  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无名大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值