⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sicanp.m

📁 this is program about satelit constalation
💻 M
字号:
% sicanp.m: ******************************************************
%
% Satellites In Communications And Navigation - Project
%
% ****************************************************************

   clear all;

% problem 1

   radius = 6378.14;		% earth radius (at ground station)
   
% constellation paths
   
   nplanes = 4;			% number of planes
   nsatpla = 8;			% number of satellites per plane
   altitud = 20000;		% constellation altitude
   inclina = 45;		% constellation inclination in degrees
   numbint = 200;		% number of intervals
   
% interest region

   lat  = [20 40 ];
   long = [60 100];
   
% constants computation
   
   radcons = radius+altitud;	% radius at constellation altitude
   inclina = inclina*pi/180;	% inclination in rad
   anginc  = 2*pi/numbint;	% increment in rad
   depinc  = 2*pi/nplanes;	% dephase increment
   intsat  = 2*pi/nsatpla;	% intersatellite angle

% earth mesh
   
   meshint = 25;
   dfi =   pi/(meshint-1); fiv = [0:dfi:  pi]; fi = kron( fiv',ones( 1,meshint ) );
   dth = 2*pi/(meshint-1); thv = [0:dth:2*pi]; th = kron( thv ,ones( meshint,1 ) );
   xe = radius.*sin( fi ).*cos( th );
   ye = radius.*sin( fi ).*sin( th );
   ze = radius.*cos( fi );

% path traces
   
   theta = kron( [0:anginc:2*pi],ones( nplanes,1 ) ) ;
   phi   = kron( (pi/2)*ones( 1,numbint+1 ),ones( nplanes,1 ) );
   depha = kron( [0:depinc:2*pi-depinc]',ones( 1,numbint+1 ) );

   x1 = radcons.*sin( phi ).*cos( theta );
   y1 = radcons.*sin( phi ).*sin( theta );
   z1 = radcons.*cos( phi );

   y2 = +y1.*cos( inclina )+z1.*sin( inclina );
   zs = -y1.*sin( inclina )+z1.*cos( inclina );
   
   xs = +x1.*cos( depha )+y2.*sin( depha );
   ys = -x1.*sin( depha )+y2.*cos( depha );
   
% satellite positions

   theta = kron( [0:intsat:2*pi-intsat],ones( nplanes,1 ) ) ;
   phi   = kron( (pi/2)*ones( 1,nsatpla ),ones( nplanes,1 ) );
   depha = kron( [0:depinc:2*pi-depinc]',ones( 1,nsatpla ) );

   x1 = radcons.*sin( phi ).*cos( theta );
   y1 = radcons.*sin( phi ).*sin( theta );
   z1 = radcons.*cos( phi );

   y2 = +y1.*cos( inclina )+z1.*sin( inclina );
   zS = -y1.*sin( inclina )+z1.*cos( inclina );
   
   xS = +x1.*cos( depha )+y2.*sin( depha );
   yS = -x1.*sin( depha )+y2.*cos( depha );
   
% interest region

   meshint = 4;
   lat = (90-lat)*pi/180; long = long*pi/180;
   dfi = (lat (1)-lat (2))/(meshint); fiv = [lat(2) :dfi:lat(1) ]; fi = kron( fiv ,ones( meshint+1,1 ) );
   dth = (long(2)-long(1))/(meshint); thv = [long(1):dth:long(2)]; th = kron( thv',ones( 1,meshint+1 ) );
   xi = 1.01*radius.*sin( fi ).*cos( th );
   yi = 1.01*radius.*sin( fi ).*sin( th );
   zi = 1.01*radius.*cos( fi );
   ci = 100*ones( size( xi ) );

% display model

   surf( xe,ye,ze ); grid on; hold on;	% earth
   surf( xi,yi,zi,ci ); grid on; hold on;	% interest region
   
   for idx = 1:nplanes
      plot3( xs(idx,:),ys(idx,:),zs(idx,:),'k-' ); hold on;
      plot3( xS(idx,:),yS(idx,:),zS(idx,:),'ko' ); hold on;
   end
   
% end of file: sicanp.m ******************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -