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

GPS编程

开发平台:

Matlab

  1. %EASY4   The master reciever position is computed like in EASY3.
  2. %        Next the observations taken by the rover receiver are 
  3. %        introduced and the function baseline returns the baseline 
  4. %        components epoch by epoch.
  5. %      Note that the sequence of satellites in the stored data is 
  6. %        not the same at master and rover receivers. Therefore we 
  7. %        must introduce a matching mechanism.
  8. %Kai Borre 27-07-2002
  9. %Copyright (c) by Kai Borre
  10. %$Revision: 1.0 $  $Date: 2002/07/27  $
  11. % Read RINEX ephemerides file and convert to internal Matlab format
  12. rinexe('SITE247J.01N','eph.dat');
  13. Eph = get_eph('eph.dat');
  14. % We identify the master observation file and open it
  15. ofile1 = 'SITE247J.01O';
  16. fid1 = fopen(ofile1,'rt');
  17. [Obs_types1, ant_delta1, ifound_types1, eof11] = anheader(ofile1);
  18. NoObs_types1 = size(Obs_types1,2)/2;
  19. Pos = [];
  20. Gdop = [];
  21. % There are 22 epochs of data in ofile1
  22. qend = 22;
  23. for q = 1:qend
  24.     [time1, dt1, sats1, eof1] = fepoch_0(fid1);
  25.     NoSv1 = size(sats1,1);
  26.     % We pick the observed C1 pseudoranges
  27.     obs1 = grabdata(fid1, NoSv1, NoObs_types1);
  28.     i = fobs_typ(Obs_types1,'C1'); 
  29.     [pos, el, gdop] = recpo_ls(obs1(:,i),sats1,time1,Eph);
  30.     Gdop = [Gdop gdop];
  31.     Pos = [Pos pos];
  32. end
  33. me = mean(Pos,2);
  34. spread = std(Pos,1,2)
  35. fprintf('nMean position as computed from %2.0f epochs:',qend)
  36. fprintf('nnX: %12.3f  Y: %12.3f  Z: %12.3fnn', me(1,1), me(2,1), me(3,1))
  37. figure(1);
  38. plot((Pos(1:3,:)-Pos(1:3,1)*ones(1,q))','linewidth',2)
  39. set(gca,'fontsize',16)
  40. title(['Variation of Receiver Coordinates over ',int2str(qend),' Epochs'])
  41. legend('X','Y','Z')
  42. xlabel('Epochs [1 s interval]')
  43. ylabel('[m]')
  44. print -deps easy4_1
  45. % we need to close all open files and then open to read from the beginning
  46. fclose all;
  47. ofile1 = 'SITE247J.01O';
  48. fid1 = fopen(ofile1,'rt');
  49. [Obs_types1, ant_delta1, ifound_types1, eof11] = anheader(ofile1);
  50. NoObs_types1 = size(Obs_types1,2)/2;
  51. % Next we include the rover and identify the rover
  52. % observation file and open it
  53. ofile2 = 'SITE24~1.01O';
  54. fid2 = fopen(ofile2,'rt');
  55. [Obs_types2, ant_delta2, ifound_types2, eof12] = anheader(ofile2);
  56. NoObs_types2 = size(Obs_types2,2)/2;
  57. master = me;  % best possible estimate of master position
  58. bases = [];
  59. for q = 1:qend
  60.     [time1, dt1, sats1, eof1] = fepoch_0(fid1);
  61.     [time2, dt2, sats2, eof2] = fepoch_0(fid2);
  62.     if time1 ~= time2
  63.         disp('Epochs not corresponding')
  64.         break
  65.     end;
  66.     NoSv1 = size(sats1,1);
  67.     NoSv2 = size(sats2,1);
  68.     % We pick the observations
  69.     obsm = grabdata(fid1, NoSv1, NoObs_types1);
  70.     obsr = grabdata(fid2, NoSv2, NoObs_types2);
  71.     i = fobs_typ(Obs_types1,'C1');
  72.     obs1 = obsm(:,i);
  73.     obs2 = obsr(:,1);
  74.     for s = 1:NoSv1
  75.         ind = find(sats1(s) == sats2(:));
  76.         obs(s,1) = obs1(s)-obs2(ind);
  77.     end
  78.     base = baseline(master,obs,sats1,time1,Eph);
  79.     bases = [bases base];
  80. end
  81. me1 = mean(bases,2);
  82. spread1 = std(bases,1,2)
  83. fprintf('nBaseline Components as Computed From %2.0f Epochs:',qend)
  84. fprintf('nnX: %12.3f  Y: %12.3f  Z: %12.3f', me1(1,1),me1(2,1),me1(3,1))
  85. figure(2);
  86. plot_handles = plot(1:q,(bases(1,:)-bases(1,1)*ones(1,q))','-',...
  87.                     1:q,(bases(2,:)-bases(2,1)*ones(1,q))','--',...
  88.                     1:q,(bases(3,:)-bases(3,1)*ones(1,q))','-.')
  89. set(gca,'fontsize',16)
  90. set(plot_handles,'linewidth',2)
  91. title(['Variation of Baseline Coordinates over ',int2str(qend),' Epochs'])
  92. legend('X','Y','Z')
  93. xlabel('Epochs [1 s interval]')
  94. ylabel('[m]')
  95. print -deps easy4_2
  96. figure(3);
  97. plot(Gdop,'linewidth',2)
  98. set(gca,'fontsize',16)
  99. axis([1 length(Gdop) 0 5])
  100. title('GDOP')
  101. %%%%%%%%%%%%%%%%%%% end easy4.m %%%%%%%%%%%%%%%