MATLAB繪製GPS星下點軌跡圖

MATLAB繪製GPS星下點軌跡圖


軌跡計算部分參考鏈接:
https://wenku.baidu.com/view/45bd098d4a7302768e9939cf.html

本文對上述matlab代碼進行了整理與修改:

  1. 增加了底圖並進行了相關的圖形美化。
  2. 將軌道六參數設置爲GPS相關參數。
  3. 從原有的1顆衛星軌跡繪製增加至24顆。

可進一步修改的部分:

  1. 通過修改底圖繪製部分相關參數可以進行圖片的基礎修改。
  2. 通過修改軌道六根數的大小以及循環次數可以實現其他衛星導航系統的星下點軌跡繪製。

代碼如下:

clc
close all
clear all
%% % % % % % % % % % % % % % % % % 底圖繪製 % % % % % % % % % % % % % % % % % % % % % %
h = geoshow('landareas.shp', 'FaceColor', 'c');
grid on
hold on

xlabel('Longitude');
ylabel('Latitude');%座標軸標題
set(gca,'Ylim',[-90,90],'ytick',[-90:30:90]);
set(gca,'yticklabel',{'90°S','60°','30°','0°','30°','60°','90°N'});
set(gca,'Xlim',[-180,180],'xtick',[-180:30:180]);
set(gca,'xticklabel',{'180°W','150°','120°','90°','60°','30°','0°','30°','60°','90°','120°','150°','180°E'});
%座標軸範圍及刻度分劃,座標軸文字替代
set(gca,'Box','on');%座標軸是否爲四面
set(gca,'FontSize',10,'Fontname', 'Times New Roman','Fontweight', 'bold');%字號、字體、是否加粗
set(gca,'GridAlpha',1,'GridLineStyle','--');%格網透明度(0-1)及線型
title('Track of GPS Satellite Point','FontSize',14,'Fontweight', 'bold');%圖標題
%% % % % % % % % % % % % % % % % % 變量定義 % % % % % % % % % % % % % % % % % % % % % %
PI = 3.1415926;
W_EARTH = 7.29e-5;% 地球自轉速度(rad)
GGC = 3.986e5;% 地心引力常數
N_T =2;% 實驗觀測週期數,可延長觀察時間

for ii = 1 : 24
	% 軌道六根數
	a = 26578;% 軌道長半軸(Km)
	e = 0.009047195664607;% 軌道偏心率
	i = 55 * PI/180;% 軌道傾角(rad)
	w = 60 * PI/180;% 軌道近地點幅角(rad)
	RAAN = 15 * ii * PI/180;% 升交點赤經
	
	T = 2 * PI * sqrt((a^3) / GGC);
	
	% 軌道真近心角f(rad),由以下公式計算
	Ts = 30;% 採樣時間間隔(s)
	t = [0:Ts:fix(N_T*T)];% 採樣時間點
	tp = 5400;
	n = sqrt(GGC/a^3);% 衛星平運動速度(rad)
	M = n * (t - tp);% 衛星平近點角(rad)
	f = M + (2*e - e^3/4)*sin(M) + 1.25*e^2 * sin(2*M) +13/12 * e^3 * sin(3*M);% 軌道真近心角(rad)
	
%% % % % % % % % % % % % % % % % % 計算星下點軌跡 % % % % % % % % % % % % % %
	Rz_RAAN = [cos(RAAN) -sin(RAAN) 0 ; sin(RAAN) cos(RAAN) 0 ; 0 0 1];
	Rz_w = [cos(w) -sin(w) 0 ; sin(w) cos(w) 0 ; 0 0 1];
	Rx_i = [1 0 0 ; 0 cos(i) -sin(i) ; 0 sin(i) cos(i)];
	R = a*(1-e^2)./(1+e*cos(f));% 衛星距地心的距離,考慮f離散值
	r_sv = [R;R;R] .* [cos(f);sin(f);zeros(1,size(f,2))];% 衛星在軌道座標系中的座標
	r_so = Rz_RAAN * Rx_i * Rz_w * r_sv;% 衛星在地心慣性座標系中的座標
	x_so = r_so(1,:) ; y_so = r_so(2,:) ;z_so = r_so(3,:) ;% 衛星在地心慣性座標系的分量
	
	% 衛星緯度delta,大於零爲北緯
	delta = atan( z_so ./sqrt((x_so .^2+y_so .^2)) ) * 180/PI;
	
	% 衛星經度alpha,大於180爲西經
	for m = 1:1:size(r_so,2)
	    if (r_so(1,m) < 0)
	        alpha(m) = 180 + atan(r_so(2,m)/r_so(1,m)) * 180/PI;
	    else
	        if (r_so(2,m)>0)
	            alpha(m) = atan(r_so(2,m)/r_so(1,m)) * 180/PI;
	        else
	            alpha(m) = 360 + atan(r_so(2,m)/r_so(1,m)) * 180/PI;
	        end
	    end
	end
	% 計算地心經度alpha1
	alpha1 = rem((alpha - W_EARTH*t*180/PI + N_T*360),360)-180;
	%plot(alpha1,delta,'.','Color','m');%將軌跡設置爲同一顏色
	plot(alpha1,delta,'.');

end

print -f1 -r1200 -dpng Track_of_GPS_Satellite_Point;%圖片保存

最終結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章