BASELINE.M
上传用户:sfyaiting
上传日期:2009-10-25
资源大小:320k
文件大小:2k
源码类别:

GPS编程

开发平台:

Matlab

  1. function bas = baseline(master,obs,sats,time,Eph)
  2. % BASELINE Computation of baseline between master and rover 
  3. %          from pseudoranges alone, and using ordinary 
  4. %          least-squares estimation
  5. %Kai Borre 31-10-2001
  6. %Copyright (c) by Kai Borre
  7. %$Revision: 1.0 $  $Date: 2001/10/31  $
  8. v_light = 299792458;
  9. dtr = pi/180;
  10. m = size(obs,1);  % number of svs
  11. % identify ephemerides columns in Eph
  12. for t = 1:m
  13.     col_Eph(t) = find_eph(Eph,sats(t),time);
  14. end
  15. % preliminary guess for receiver position and receiver clock offset
  16. bas = zeros(4,1);
  17. x = zeros(4,1);
  18. pos = master+bas;
  19. no_iterations = 3; 
  20. for iter = 1:no_iterations
  21.     A = [];
  22.     omc = []; % observed minus computed observation
  23.     for i = 1:m
  24.         k = col_Eph(i);
  25.         tx_RAW = time - obs(i)/v_light;
  26.         t0c = Eph(21,k);
  27.         dt = check_t(tx_RAW-t0c);
  28.         tcorr = (Eph(2,k)*dt + Eph(20,k))*dt + Eph(19,k);
  29.         tx_GPS = tx_RAW-tcorr;
  30.         dt = check_t(tx_GPS-t0c);
  31.         tcorr = (Eph(2,k)*dt + Eph(20,k))*dt + Eph(19,k);
  32.         tx_GPS = tx_RAW-tcorr;
  33.         X = satpos(tx_GPS, Eph(:,k));
  34.         if iter == 1
  35.             traveltime = 0.072;
  36.             Rot_X = X;
  37.             trop = 0;
  38.             rho2 = (norm(X(1:3)-master(1:3),'fro'))^2;
  39.         else
  40.             rho2 = (X(1)-pos(1))^2+(X(2)-pos(2))^2+(X(3)-pos(3))^2;
  41.             traveltime = sqrt(rho2)/v_light;
  42.             Rot_X = e_r_corr(traveltime,X);
  43.             rho2 = (Rot_X(1)-pos(1))^2+(Rot_X(2)-pos(2))^2+(Rot_X(3)-pos(3))^2;
  44.         end
  45.         a =  [-(Rot_X(1)-pos(1))/sqrt(rho2)...
  46.               -(Rot_X(2)-pos(2))/sqrt(rho2) ...
  47.               -(Rot_X(3)-pos(3))/sqrt(rho2) 1];
  48.         % subtraction of pos(4) corrects for receiver clock offset 
  49.         omc = [omc; obs(i)-a*x]; 
  50.         A = [A;a];     
  51.     end % i
  52.     x = Aomc;
  53.     bas = bas-x;
  54. end % iter
  55. %%%%%%%%%%%%%%%%%%%%%  baseline.m  %%%%%%%%%%%%%%%%%%%%%