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

GPS编程

开发平台:

Matlab

  1. % EASY9   Various representations of an estimated baseline
  2. %Kai Borre 27-07-2002
  3. %Copyright (c) by Kai Borre
  4. %$Revision: 1.0 $  $Date: 2002/07/27  $
  5. % Master and Rover Positions Given From Postprocessing of GPS Observations
  6. pos1 = [3436412.0323; 603295.9341; 5321480.4962];
  7. pos2 = [3435470.7981; 607792.3243; 5321592.3777];
  8. fprintf('nX1 %12.4f [m], Y1 %12.4f [m], Z1 %12.4f [m]',pos1(1),pos1(2),pos1(3))
  9. fprintf('nX2 %12.4f [m], Y2 %12.4f [m], Z2 %12.4f [m]',pos2(1),pos2(2),pos2(3))
  10. % Baseline in Cartesian Coordinates
  11. fprintf('nnBaseline Represented in Cartesian Coordinatesn')
  12. fprintf('ndelta X: %7.3f [m], delta Y:  %7.3f [m], delta Z:  %7.3f [m]', ...
  13.     pos2(1)-pos1(1),pos2(2)-pos1(2),pos2(3)-pos1(3))
  14. length = norm(pos2-pos1);
  15. fprintf('nnLength of Baseline %12.3f [m]',length)
  16. % Covariance Matrix Given From Postprocessing of GPS Observations
  17. fprintf('nnVariance of the Components')
  18. Sigma_XYZ = [5^2 -.797*5*2 .911*5*4;
  19.     -.797*5*2 2^2 -.795*2*4;
  20.     .911*5*4 -.795*2*4 4^2];
  21. std = sqrt(diag(Sigma_XYZ));          
  22. fprintf('nnsigma_X: %4.1f [mm], sigma_Y: %4.1f [mm], sigma_Z: %4.1f [mm]n', ...
  23.     std(1),std(2),std(3))
  24. % Conversion of (X,Y,Z) to (phi, lambda, height)
  25. [phi1,lambda1,h1] = togeod(6378137,298.257223563,pos1(1,1),pos1(2,1),pos1(3,1));
  26. phi1_dms = deg2dms(phi1);
  27. fprintf('nPhi1  %12.0f %5.0f %5.5f',phi1_dms(1),phi1_dms(2),phi1_dms(3))
  28. lambda1_dms = deg2dms(lambda1);
  29. fprintf('nLambda1 %7.0f %5.0f %5.5f',lambda1_dms(1),lambda1_dms(2),lambda1_dms(3))
  30. fprintf('nHeight1 %12.4f [m]n',h1)
  31. [phi2,lambda2,h2] = togeod(6378137,298.257223563,pos2(1,1),pos2(2,1),pos2(3,1));
  32. phi2_dms = deg2dms(phi2);
  33. fprintf('nPhi2  %12.0f %5.0f %5.5f',phi2_dms(1),phi2_dms(2),phi2_dms(3))
  34. lambda2_dms = deg2dms(lambda2);
  35. fprintf('nLambda2 %7.0f %5.0f %5.5f',lambda2_dms(1),lambda2_dms(2),lambda2_dms(3))
  36. fprintf('nHeight2 %12.4f [m]n',h2)
  37. % Variance transformation of baseline components from (X,Y,Z) to 
  38. % (phi,lambda,height) or equivalently (E,N,U)
  39. phi = phi1*pi/180;
  40. lambda = lambda1*pi/180;
  41. F = [ -sin(lambda) -sin(phi)*cos(lambda) cos(phi)*cos(lambda);
  42.        cos(lambda) -sin(phi)*sin(lambda) cos(phi)*sin(lambda);
  43.                 0               cos(phi)             sin(phi)]; % [e n u]
  44. Sigma = [  25     -7.97 18.22;
  45.            -7.97   4    -6.36;
  46.            18.22  -6.36 16   ];
  47. F_inv = inv(F);  
  48. % Complete covariance matrix for UTM coordinates
  49. Sigma_ENU = F_inv*Sigma*F_inv'; 
  50. std = sqrt(diag(Sigma_ENU));
  51. fprintf('nnsigma_N: %4.1f [mm] sigma_E: %4.1f [mm] sigma_U: %4.1f [mm]', ...
  52.     std(2),std(1),std(3))
  53. % Conversion of (X,Y,Z) to topocentric coordinates (Az, El, Dist)
  54. fprintf(['nnConversion of (delta X, delta Y, delta Z) to ', ...
  55.         'Topocentric Coordinates (Azimuth, Elevation, Distance):'])
  56. [az1,el1,d1] = topocent(pos1,pos2-pos1);
  57. fprintf('nnAz1: %12.5f [deg] El1:  %6.4f [deg] D1:  %9.4f [m]',az1, el1, d1)
  58. [az2,el2,d2] = topocent(pos2,pos1-pos2);
  59. fprintf('nAz2: %12.5f [deg] El2:  %6.4f [deg]  D2:  %9.4f [m]',az2, el2, d2)
  60. u1 = h2-h1;
  61. fprintf('nUping1 %12.4f',u1)
  62. u2 = h1-h2;
  63. fprintf('nUping2 %12.4f',u2)
  64. % Computation based on the geodesic between the terminals 
  65. [s12, a1, a2] = bessel_2(phi1_dms(1),phi1_dms(2),phi1_dms(3),lambda1_dms(1), ...
  66.                  lambda1_dms(2),...
  67.         lambda1_dms(3),phi2_dms(1),phi2_dms(2),phi2_dms(3),lambda2_dms(1),...
  68.         lambda2_dms(2),lambda2_dms(3),6378137,298.257223563);
  69. fprintf('nnComputation of Geodesic on the WGS Ellipsoidn')
  70. fprintf('nLength of Geodesic %12.4f [m]',s12)
  71. A1 = rad2dms0(a1);
  72. fprintf('nAzimuth from 1 to 2:  %6.0f  [deg] %4.0f  [min] %8.4f [sec]',A1(1), A1(2),A1(3))
  73. A2 = rad2dms0(a2);
  74. fprintf('nAzimuth from 2 to 1:  %6.0f  [deg] %4.0f  [min] %8.4f [sec]n',A2(1), A2(2),A2(3))
  75. break 
  76. % Conversion of Geocentric Coordinates (X,Y,Z) to (N,E,U) in UTM
  77. [N1,E1,U1] = wgs2utm(pos1(1),pos1(2),pos1(3),32);
  78. [N2,E2,U2] = wgs2utm(pos2(1),pos2(2),pos2(3),32);
  79. fprintf('nn')
  80. E = E2-E1
  81. N = N2-N1
  82. U = U2-U1
  83. % Transformation of local spherical (Az,El,D) to local Cartesian Coordinates (x,y,h)
  84. fprintf('nRepresention of Topocentric System as Easting, Northing, and Uping')
  85. x1 = d1*cos(el1*pi/180)*sin(az1*pi/180);
  86. y1 = d1*cos(el1*pi/180)*cos(az1*pi/180);
  87. u1 = h2-h1;
  88. fprintf('nnEasting1 %12.4f',x1)
  89. fprintf('nNorthing1 %12.4f',y1)
  90. fprintf('nUpping1 %12.4f',u1)
  91. x2 = d2*cos(el2*pi/180)*sin(az2*pi/180);
  92. y2 = d2*cos(el2*pi/180)*cos(az2*pi/180);
  93. u2 = h1-h2;
  94. fprintf('nnEasting2 %12.4f',x2)
  95. fprintf('nNorthing2 %12.4f',y2)
  96. fprintf('nUpping2 %12.4f',u2)
  97. %%%%%%%%%%%%%%%%%%%%%% end easy9.m  %%%%%%%%%%%%%%%%%%%