好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

卫星导航GPS典型例题编程报告课件.doc

8页
  • 卖家[上传人]:M****1
  • 文档编号:456774785
  • 上传时间:2023-02-27
  • 文档格式:DOC
  • 文档大小:172.50KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • GPS Matlab编程报告一、通过星历计算卫星坐标(修正)1、 算法流程(1) 计算GPS卫星运行的平均速度 (2) 计算归化时间(3) 计算计算观测历元的平近点角(4) 计算偏近点角利用不动点迭代法求解此方程: 得出不动点迭代法的迭代公式为:(5) 计算卫星的地心矢径(6) 计算真近点角(7) 计算升交点角距(8) 计算摄动改正项:(9) 计算经过摄动改正的升交点角距,卫星矢径,和轨道面倾角(10) 计算观测历元的升交点经度(11) 计算卫星在轨道平面坐标系中的位置(12) 计算卫星在地固坐标系下的坐标2、 Matlab源程序%本程序用于通过星历计算卫星坐标(修正)%部分星历数据未用到clear;%---------t时刻,卫星星历数据--------- t=1.728e+005; %当前时间(接收到卫星信号时间) Omega0= -3.19; %按参考时间计算的升交点经度 I0=0.3*pi; %非GEO卫星 %I0= 0.08; %GEO卫星 SqrtA= 6493.; %长半轴平方根 Ecc= 0.01995786; %偏心率 Small_Omega= -1.84; %近地点角距 Mu0= 0.0005884201; %参考时间的平近点角 Delta_n= -2.4123e-009; %卫星平均运动速度与计算值之差 I_Dot= -3.4333e-010; %轨道倾角变化率 Omega_dot= 3.47676e-009; %升交点经度变化率 C_uc= 4.692e-006; %纬度幅角的余弦调和改正项的振幅 C_us= -1.10036e-005; %纬度幅角的正弦调和改正项的振幅 C_ic= 9.01e-008; %轨道倾角的余弦调和改正项的振幅 C_is= 2.01e-008; %轨道倾角的正弦调和改正项的振幅 C_rc= 325.73368; %轨道半径的余弦调和改正项的振幅 C_rs= 146.91074; %轨道半径的正弦调和改正项的振幅 Toe= 172800; %星历参考时间IODC= 10; %钟差数据龄期URAI= 0; %用户距离精度标志IODE= 10; %星历数据龄期Toc = 172800; %本时段钟差参数参考时间a0 = -2.72893e-005; %卫星钟差改正0阶多项式系数 a1 = -6.7531e-014; %卫星钟差改正1阶多项式系数a2 = 5.787e-018; %卫星钟差改正2阶多项式系数%---------定义常量---------c=2.e8; %光速omegae=7.67e-5; %地球自转角速度 mu=3.8e14; %地球引力常数GM%---------1、计算GPS卫星运行的平均速度n---------a=SqrtA*SqrtA;n=sqrt(mu/(a^3))+Delta_n;%---------2、计算归化时间Delta_t---------Delta_t=t-Toe;%---------3、计算观测历元t的平近点角M---------M=Mu0+n*Delta_t;%---------4、计算偏近点角E---------eps=1e-20;E=M;tol=1;while (tol>eps) %不动点迭代法 E0=E; E=M+(Ecc)*sin(E0); tol=abs(E-E0);end%---------5、计算卫星的地心矢径r0---------r0=a*(1-Ecc*cos(E));%---------6、计算真近点角f---------%f=2*atan(sqrt((1+Ecc)/(1-Ecc))*tan(E/2));f=atan((sqrt(1-Ecc^2)*sin(E))/(cos(E)-Ecc));%---------7、计算升交点角距Phi0---------Phi0=Small_Omega+f;%---------8、计算摄动改正项:Delta_u,Delta_r,Delta_i---------Delta_u=C_us*sin(2*Phi0)+C_uc*cos(2*Phi0);Delta_r=C_rs*sin(2*Phi0)+C_rc*cos(2*Phi0);Delta_i=C_is*sin(2*Phi0)+C_ic*cos(2*Phi0);%---------9、计算经过摄动改正的升交点角距Phi,卫星矢径r,和轨道面倾角I---------Phi=Phi0+Delta_u;r=r0+Delta_r;I=I0+Delta_i+I_Dot*Delta_t;%---------10、计算观测历元t的升交点经度Omegak---------Omegak=Omega0+(Omega_dot-omegae)*Delta_t-omegae*Toe;%---------11、计算卫星在轨道平面坐标系中的位置---------x0=r*cos(Phi);y0=r*sin(Phi);z0=0;%---------12、计算卫星在地固坐标系下的坐标---------x=x0*cos(Omegak)-y0*cos(I)*sin(Omegak);y=x0*sin(Omegak)+y0*cos(I)*cos(Omegak);z=y0*sin(I)+z0*cos(I);%---------输出卫星坐标---------fprintf ('(修正后)卫星在地固坐标系中的坐标:\n X=%.10f Y=%.10f Z=%.10f\n',x,y,z);%老师给的结果:卫星位置:X=7073881.06 Y=.80 Z=-.60X=7073881.06;Y=.8;Z=-.60;%修正后的,非GEOfprintf ('与老师的结果的偏差为:\n D_X=%.10f D_Y=%.10f D_Z=%.10f\n',x-X,y-Y,z-Z);3、 程序运行结果(修正后)卫星在地固坐标系中的坐标: X=7073887.11 Y=.00 Z=-.00与老师的结果的偏差为: D_X=6.05 D_Y=-1.34 D_Z=0.04二、已知4颗卫星坐标及测得的伪距(已改正)求接收机位置1、 原理及算法不考虑电离层延迟和对流层延迟的因素时,由4颗卫星在地心坐标系中的坐标及对应的伪距即可计算出接收机的位置,按如下四元二次方程组求解四个未知数:其中,为已改正的伪距,为卫星与接收机之间实际的距离,分别为4颗卫星的坐标,为接收机在地心坐标系中的坐标,为接收机时钟与卫星时钟的偏差值。

      采用Newton迭代法求解此四元二次非线性方程组,其算法为:将上述方程组写成如下形式四元方程组:记向量,,则上式化为:若给出此方程组的一个初值,将函数的分量在处Taylor展开,并取线性部分,则可表示为:再由,可认为: (1)其中Jacobi矩阵为:则(1)方程组的解为: (2)利用(2)式进行迭代运算即可解出满足一定精度要求的近似解若考虑地球自转影响,需要确定地球的自转角速度以及发射信号瞬时到接收信号瞬时经历的时间,从而计算出卫星信号传输时间内地球自转过的角度,然后利用旋转矩阵将上述计算得到的坐标值做一旋转变换,得出考虑地球自转影响时接收机位置,其旋转操作如下:其中卫星信号传输总时间可由最大伪距除以光速得到:,(为光速)2、 Matlab源程序function Receiver_Position%本程序求解已知4颗卫星坐标及测得的伪距时接收机的位置坐标[X Y Z],需要求解四元二次非线性方程组%利用Newton法求解此非线性方程组clear;tic;c=2.e8; %光速omegae=7.67e-5;%地球自转角速度x0=[0;0;0;0]; %取初始值tol=1.0e-6; %计算精度x1=x0-inv(df(x0))*fc(x0); %计算第一个迭代值n=1;while((norm(x1-x0)>=tol)&&n<10^8) %牛顿迭代计算 x0=x1; x1=x0-inv(df(x0))*fc(x0); %迭代公式 n=n+1;endT=toc;fprintf ('接收机坐标为:X=%.10f Y=%.10f Z=%.10f\n',x1(1),x1(2),x1(3));%老师的计算结果: x=1725670.59 y=-2116958.29 z=3129817.07x=1725670.59;y=-2116958.29;z=3129817.07;fprintf ('与老师的结果的偏差为:D_X=%.10f D_Y=%.10f D_Z=%.10f\n',x1(1)-x,x1(2)-y,x1(3)-z);fprintf ('迭代次数为:n=%i\n',n);fprintf ('计算时间为:T=%f s\n',T);fprintf ('计算精度为:tol=%f\n\n',tol);%考虑地球自转因素R=[2.64e+007,2.84e+007,2.05e+007,2.72e+007]; %伪距D_t=max(R)/c; %取最大的伪距除以光速得到卫星信号传输时间D_phi=omegae*D_t; %发射信号瞬时到接收信号瞬时,地球偏转的角度I=[cos(D_ phi), sin(D_ phi), 0; -sin(D_ phi), cos(D_ phi) , 0; 0, 0, 1]; %旋转矩阵xr=I*[x1(1);x1(2);x1(3)]; %旋转后坐标%老师的计算结果: x=1725657.0 y=-2116969.98 z=3129817.04x=1725657.10;y=-2116969.98;z=3129817.04;fprintf ('考虑地球自转因素时:\n接收机坐标为:X=%.10f Y=%.10f Z=%.10f\n',xr(1),xr(2),xr(3));fprintf ('与老师的结果的偏差为:D_X=%.10f D_Y=%.10f D_Z=%.10f\n',xr(1)-x,xr(2)-y,xr(3)-z);end%---------------------------------------原方程组----------------------------------------function Y=fc(X)c=2.e8; %光速%4颗卫星在W。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.