easy_GPS开源代码归整!

1、最小二乘求解单点定位:

当矩阵G可逆时,如下两种求解方式一致!

G*Δx=b

Δx=inv(G^G)*G^b

代码出现在:

2、利用伪距进行相对定位中:easy4

选取卫星高度角最大的一颗,当作参考卫星!

    %选高度角最大的当作参考星
    flag=0;
    if flag==0
        id=find(max(el)==el);
        flag=1;
    end
    
for iter = 1:30
    % k is the reference satellite. We select the first one   k是参考卫星,选择第一颗卫星作为参考卫星

    [tcorr,rhok_j,Xk_ECF] = get_rho(time, obs2(id), Eph(:,col_Eph(id)),X_j);      % time时刻,卫星k钟差,流动站j到卫星k的距离rhok_j,卫星k(第一颗)的位置
    [tcorr,rhok_i,Xk_ECF] = get_rho(time, obs1(id), Eph(:,col_Eph(id)),X_i);      % time时刻,卫星k钟差,参考站i到卫星k的距离rhok_i,卫星k(第一颗)的位置
%     obs2(id)=[];obs1(id)=[];Eph(:,col_Eph(id))=[];
%     for t = 1:m-1 % t runs over PRNs given in sats; ref.sat. is number 1
    t=1;
    while (t<=m)
        [tcorr,rhol_j,Xl_ECF] = get_rho(time, obs2(t), Eph(:,col_Eph(t)), X_j);       % time时刻,卫星t钟差,流动站j到卫星t的距离rhok_j,卫星t(t = 2:m)的位置
        [tcorr,rhol_i,Xl_ECF] = get_rho(time, obs1(t), Eph(:,col_Eph(t)), X_i);       % time时刻,卫星t钟差,参考站i到卫星t的距离rhok_i,卫星t(t = 2:m)的位置
        A(t,:) = [(Xk_ECF(1)-X_j(1))/rhok_j - (Xl_ECF(1)-X_j(1))/rhol_j,  ...   % (参考卫星-流动站)-(卫星-流动站)
            (Xk_ECF(2)-X_j(2))/rhok_j - (Xl_ECF(2)-X_j(2))/rhol_j,  ...
            (Xk_ECF(3)-X_j(3))/rhok_j - (Xl_ECF(3)-X_j(3))/rhol_j];             % 接收机间求一次差,卫星间求二次差后组成的双差观测方程 系数阵 A
        observed = (obs1(id)-obs2(id))-(obs1(t)-obs2(t)); % (参考卫星和基准站伪距-参考卫星和流动站伪距)-(基准站伪距-流动站伪距)
        calculated = (rhok_i-rhok_j)-(rhol_i-rhol_j);
        omc(t,1) = observed - calculated;     % 常数项 = 双差观测值 - 双差计算值
        t=t+1;
    end; % t 
    %删掉
    A(id,:)=[];omc(id)=[];

注意参考星选好了之后,如何构建矩阵:参考谢刚P171

3、

发布了76 篇原创文章 · 获赞 32 · 访问量 7909

猜你喜欢

转载自blog.csdn.net/wuwuku123/article/details/104517603
今日推荐