“GPS广播星历计算卫星位置和速度”
及“GPS伪距定位”计算试验
1.试验内容及上交成果
1.1 试验内容
应用C语言按预定格式(函数、输入输出变量之名称、类型)编写“GPS广播星历计算卫星位置和速度”函数SatPos_Vel( )、“GPS伪距定位”函数Positioning( )。将此两个函数组成文件F2.cpp,并包含于文件GPS_Positioning.cpp中。编译、连接并运行文件GPS_Positioning.cpp,逐一时刻读取广播星历(Ephemeris.dat)、观测时间及伪距、卫星号(Observation.dat)信息,计算WGS84坐标系中观测时刻相应的卫星位置、速度以及载体位置,结果保存于文件Position.dat中。
1.2 上交成果
磁盘文件F2.cpp、Position.dat,并存于“学号作者中文姓名”目录中。
2.函数说明
2.1 星历文件读取函数
void EFileReading(Efile)
功能:读取星历文件,给星历数据结构体Ephemeris赋值。
输入变量:EFile 字符串,文件名。
2.2 观测数据读取函数
int ObsReading(fp_Obs,Time,Rho,Mark)
功能:从文件Observation.dat中读取某一时刻的伪距、卫星号。读取成功函数值返回“1”,失败返回“-1”(读错,或至文件尾)。
输入变量:fp_Obs 文件指针;
输出变量:Time double,时间(秒);
Rho double[12],伪距(米);
Mark int[12],卫星号,“-1”表示此通道无卫星、无伪距。
2.3 最小二乘估计函数
int LeastSquareEstimation(Y,A,P,m,n, X)
功能:最小二乘方法求解观测方程Y=AX+ε,其中观测值方差阵的逆阵为P(也称为权阵),得未知参数X。成功返回“1”,失败返回“-1”(亏秩)。
输入变量:Y double[m],观测方程自由项(米);
A double[m×n],系数阵(无量纲),按第1行第1、2……n元素,
1