伪距单点定位基础讲解

写在前面

本篇博文用于充实个人分类专栏“GNSS课程”,同时希望能够对有需要的朋友有所帮助。
教材采用《GPS测量原理及应用 第3版》徐绍铨等。
另有疏漏之处,还请评论指出。

文件解读

观测(o)文件识读

伪距单点定位基础讲解
伪距单点定位基础讲解

气象(m)文件识读

伪距单点定位基础讲解

广播星历(n)文件识读

星历文件识读在上一篇里有介绍,这里不再赘述。

计算基本原理

选择一个历元中的某个卫星

伪距单点定位基础讲解

计算站星近似几何距离

伪距单点定位基础讲解

误差改正

伪距单点定位基础讲解

迭代求解测站位置

伪距单点定位基础讲解

最小二乘求解及迭代终止条件

伪距单点定位基础讲解

源代码及计算结果

自编的代码分为3个部分,在之前卫星星历计算卫星位置的基础上,增加了O文件、M文件的读取函数readfileo.m和readfilem.m,以及计算测站位置的主脚本Prange_Positioning.m。使用者在主脚本中的“配置参数”区域,正确配置相关的参数后,运行此脚本即可得到结果。这些参数包括观测时刻的UTC时,测站的大地高,导航电文中电离层的Alpha和Beta参数,去头的n、o、m文件。需要注意的是,程序对于时间的查找除了n文件外,都是严格查找,也就是说,受限于m文件的观测时间间隔,观测时刻的分位只能是5的整数倍,秒位只能是0。经过相应的调试后,可以接受小范围的变动。

o文件读取函数

伪距单点定位基础讲解
伪距单点定位基础讲解
伪距单点定位基础讲解

m文件读取函数

伪距单点定位基础讲解

计算用的脚本

伪距单点定位基础讲解
伪距单点定位基础讲解
伪距单点定位基础讲解
伪距单点定位基础讲解
伪距单点定位基础讲解

总结

这里不再详细介绍卫星位置计算的方法了,这部分详见这里
本篇博文采用的编程语言是MATLAB,所使用的数据文件已放在链接资源里了,需要请自取。
另外,采用MATLAB的Appdesigner,编写了一个UI,同时改变了数据的存储结构,引入结构体来操作数据,减少与文件的交互,以减少计算时间,可以用来处理RINEX格式的文件。软件也会按需更新。资源请见这里
最后,希望这篇博文对你有帮助。