• 大小: 1.76M
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-04-20
  • 语言: Matlab
  • 标签: GPS  

资源简介

卡尔曼滤波方法的GPS精密单点定位程序,包括各项改正

资源截图

代码片段和文件信息

%定义计算相对应的卫星位置函数,根据卫星号,最小时刻差来匹配出导航文件中对应卫星所在历元num
function [x y z delt]=Getsatellite(yearmonthdayhourminutesecondprn)
global SD
global n
Time=hour*3600+minute*60+second;
for i=1:n            %搜索某一历元下观测文件的卫星在导航文件中对应的卫星
    if SD(i).prn==prn&&SD(i).year==year&& SD(i).month==month&& SD(i).day==day  
        num=i;
        time=SD(i).hour*3600+SD(i).minute+SD(i).second;
        dt=abs(time-Time);           %某历元下观测文件中的时间与导航文件的时刻差
        for j=i+1:n
            time=SD(j).hour*3600+SD(j).minute*60+SD(j).second;
            DT=abs(time-Time);
            if SD(j).prn==prn&&SD(j).day==day&&DT                num=j;               %导航文件中j历元离观测文件的某历元时间更近,所以替换掉
                dt=DT;
            end
        end
        break                        %找到了导航文件中的历元号(num),退出循环
    else
        continue
    end
end
%开始计算卫星位置,num为卫星此刻所在的历元号
%1计算卫星运行的平均角速度N
U=398600441800000;
n0=sqrt(U/SD(num).a^3);
N=n0+SD(num).deltaN; 
%2计算规划时间tk
 [tkdelt]=gettk(numTime);%调用gettk函数中计算出tk
%3计算观测时刻卫星平近点角Mk
Mk=SD(num).M0+N*tk;
%4计算偏近点角Ek
e=SD(num).e;          %e 已经在此赋值了,下面就可一直用e表示了
Ek=Mk;
for i=1:2            %可能这边不太准确
    Ek=Mk+e*sin(Ek);
end
%5计算真近点角Vk
% cvk=cos(Ek)-e;
% svk=sqrt(1-e^2)*sin(Ek);
% Vk=atan(svk/cvk);            
% if cvk<0
%     Vk=Vk+pi;
% else
%     if svk<0
%         Vk=Vk+pi*2;
%     end
% end
Vk=atan2(sqrt(1-e^2)*sin(Ek)cos(Ek)-e);
%6计算升交距角Ukw为近地点角
Uk=Vk+SD(num).w;
%7计算摄动改正项
du=SD(num).cuc*cos(2*Uk)+SD(num).cus*sin(2*Uk);
dr=SD(num).crc*cos(2*Uk)+SD(num).crs*sin(2*Uk);
di=SD(num).cic*cos(2*Uk)+SD(num).cis*sin(2*Uk);
%8计算经过摄动改正的升交距角uk、卫星半径rk和轨道倾角ik
uk=Uk+du;                             
rk=SD(num).a*(1-e*cos(Ek))+dr;        %rk为卫星矢径
ik=SD(num).i0+di+SD(num).idot*tk;     %ik为轨道倾角
%9计算卫星在轨道平面坐标系的坐标
xk=rk*cos(uk);
yk=rk*sin(uk);
%10计算观测时刻升交点精度omg
We=0.0000729211567;
omg=SD(num).omg0+(SD(num).omgdot-We)*tk-We*SD(num).toe;
%11计算卫星在地心固定坐标系中的直角坐标系
x=xk*cos(omg)-yk*cos(ik)*sin(omg);
y=xk*sin(omg)+yk*cos(ik)*cos(omg);
z=yk*sin(ik);
return
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2332  2010-04-14 15:22  GPS 单点定位各项改正和卡尔曼滤波\Getsatellite.asv

     文件       2361  2010-04-14 15:27  GPS 单点定位各项改正和卡尔曼滤波\Getsatellite.m

     文件        703  2010-04-14 12:57  GPS 单点定位各项改正和卡尔曼滤波\gettk.asv

     文件        539  2010-04-14 12:59  GPS 单点定位各项改正和卡尔曼滤波\gettk.m

     文件        321  2010-04-11 14:28  GPS 单点定位各项改正和卡尔曼滤波\GetTs.m

     文件       5426  2010-06-20 22:14  GPS 单点定位各项改正和卡尔曼滤波\read.asv

     文件       5427  2010-06-20 22:14  GPS 单点定位各项改正和卡尔曼滤波\read.m

     文件       2502  2010-06-20 20:59  GPS 单点定位各项改正和卡尔曼滤波\Read_N_Rinex.m

     文件     101327  2009-10-04 13:12  GPS 单点定位各项改正和卡尔曼滤波\shao2010.09n

     文件    3177412  2010-04-23 17:18  GPS 单点定位各项改正和卡尔曼滤波\shao2010.09o

     文件     101910  2009-10-04 13:15  GPS 单点定位各项改正和卡尔曼滤波\shao2030.09n

     文件    3193436  2009-10-09 21:12  GPS 单点定位各项改正和卡尔曼滤波\shao2030.09o

     文件        804  2010-06-04 16:57  GPS 单点定位各项改正和卡尔曼滤波\tansformation.m

     文件       6876  2010-06-20 22:15  GPS 单点定位各项改正和卡尔曼滤波\temp.txt

     文件     153646  2010-05-29 16:34  GPS 单点定位各项改正和卡尔曼滤波\test1.09o

     文件        432  2010-06-20 18:03  GPS 单点定位各项改正和卡尔曼滤波\XYZ2BLH.m

     文件        251  2010-06-20 18:00  GPS 单点定位各项改正和卡尔曼滤波\XYZ2NEU.m

     文件     155520  2010-05-29 20:44  GPS 单点定位各项改正和卡尔曼滤波\卡尔曼滤波后的坐标与真值偏差.txt

     目录          0  2010-08-15 22:16  GPS 单点定位各项改正和卡尔曼滤波

----------- ---------  ---------- -----  ----

              6911225                    19


评论

共有 条评论