matlab绘制星下点轨迹,MATLAB绘制GPS星下点轨迹图

MATLAB绘制GPS星下点轨迹图

轨迹计算部分参考链接:

https://wenku.baidu.com/view/45bd098d4a7302768e9939cf.html

本文对上述matlab代码进行了整理与修改:

增加了底图并进行了相关的图形美化。

将轨道六参数设置为GPS相关参数。

从原有的1颗卫星轨迹绘制增加至24颗。

可进一步修改的部分:

通过修改底图绘制部分相关参数可以进行图片的基础修改。

通过修改轨道六根数的大小以及循环次数可以实现其他卫星导航系统的星下点轨迹绘制。

代码如下:

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;%图片保存

标签:cos,180,so,MATLAB,星下点,90,PI,sin,GPS

来源: https://blog.csdn.net/sinat_39238867/article/details/97892803

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jdk7与jdk8环境共存与切换

1&#xff0c;先安装jdk7,配置环境变量JAVA_HOME,然后安装jdk8。 2&#xff0c;安装jdk8后&#xff0c;JAVA_HOME指向未做修改&#xff0c;执行java -version显示还是以前的jdk7版本信息&#xff0c; 3&#xff0c;接下来我们配置环境变量JAVA_HOME,发现配置jdk7的路径,或者配置…

linux gcc matlab,Linux Matlab mex gcc 版本

一般MATLAB的mex支持的gcc版本都比最新的gcc要低一些&#xff0c;所以一般要配置一下。假设当前版本的gcc是4.8&#xff0c;matlab支持4.6&#xff0c;可以使用以下的方式解决(任选一种)。(自己装好gcc-4.6)修改安装目录下的mexopts.sh使用管理员权限&#xff0c;修改/usr/loca…

跨域/非跨域接口专题

跨域名的接口&#xff1a;A域名www.a.com请求B域名www.b.com的接口&#xff08;域名可以换成ip地址&#xff0c;同样成立&#xff09; 非跨域接口&#xff1a;A域名www.a.com请求A域名www.a.com的接口 对于跨域名的接口请求&#xff1a; 1. 如果是前端js请求&#xff0c;则需要…

在Java中模拟求和类型的巧妙解决方法

在继续阅读实际文章之前&#xff0c;我想感谢令人敬畏的Javaslang库的作者Daniel Dietrich &#xff0c;他在我面前有了这个主意&#xff1a; lukaseder尝试使用静态方法<T&#xff0c;T1扩展T&#xff0c;... Tn扩展T> Seq <T> toSeq&#xff08;T1 t1&#xff0…

PHP培训选云和数据,送给云和数据郑州分中心PHP培训班全体学员的祝福

在云和数据数百个日日夜夜&#xff0c;郑州PHP培训班的学员们一起成长&#xff0c;从青春懵懂到成熟稳重&#xff0c;从羞涩内敛到侃侃而谈&#xff0c;他们用奋斗和拼搏共同刻画了人生中一段难忘的回忆。12月12日&#xff0c;云和数据郑州分中心PHP培训班毕业典礼&#xff0c;…

关键字驱动小例子_example2

compute.py #该文件用来存被测函数#encodingUTF-8 import random import re def add(a,b):cint(a)dint(b)print cdreturn cddef sub(a,b):cint(a)dint(b)print c-dreturn c-ddef mul(a,b,c):dint(a)eint(b)fint(c)return d*e*fdef abs_value(a):return abs(int(a))def random_v…

学的php毫无兴趣,培训班学PHP,感觉兴趣越来越低,哎,真的很迷茫了!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼人生在世&#xff0c;归纳而言&#xff0c;就是与两种人相处&#xff0c;一是自己&#xff0c;一是他人。 自处处人&#xff0c;就像在 画圆&#xff0c;以自觉、自度为圆心&#xff0c;以慈悲、利他为半径&#xff0c;所画出来的一…

cyclicbarrier_Java并发– CyclicBarrier示例

cyclicbarrierJava中的CyclicBarrier是JDK 5中在java.util.Concurrent包上引入的同步器&#xff0c;以及其他并发实用程序&#xff0c;例如Counting Semaphore &#xff0c; BlockingQueue &#xff0c; ConcurrentHashMap等。CyclicBarrier与CountDownLatch类似&#xff0c;我…

【XSY2720】区间第k小 整体二分 可持久化线段树

题目描述 给你你个序列&#xff0c;每次求区间第\(k\)小的数。 本题中&#xff0c;如果一个数在询问区间中出现了超过\(w\)次&#xff0c;那么就把这个数视为\(n\)。 强制在线。 \(n\leq 100000,a_i<n,w\leq n\) 题解 考虑整体二分。 先看看离线要怎么做。 现在我们要计算每…

php队列失败是指什么,队列是什么意思

队列是一种特殊的线性表。它只允许在表的前端(front)进行删除操作&#xff0c;而在表的后端(rear)进行插入操作&#xff0c;和栈一样&#xff0c;队列是一种操作受限制的线性表&#xff1b;进行插入操作的端称为队尾&#xff0c;进行删除操作的端称为队头&#xff1b;队列中没有…

从In Memory Data Grid,Apache Ignite快速入门

IMDG或内存数据网格不是内存中关系数据库&#xff0c;NOSQL数据库或关系数据库。 它是另一种软件数据存储库。 数据模型分布在单个位置或多个位置的许多服务器上。 这种分布称为数据结构。 这种分布式模型被称为“无共享”架构。 IMDG具有以下特征&#xff1a; 所有服务器可以…

python字典合并几种方式对比,Python合并两个字典的常用方法与效率比较

本文实例讲述了Python合并两个字典的常用方法与效率比较。分享给大家供大家参考。具体分析如下&#xff1a;下面的代码举例了5种合并两个字典的方法&#xff0c;并且做了个简单的性能测试#!/usr/bin/pythonimport timedef f1(d1,d2):return dict(d1,**d2)def f2(d1,d2):return …

91.91p10.space v.php,luogu P1091 合唱队形

任务计划推了很久才做www从两头开始的单调上升队列没啥可说的#include#includeusing namespace std;#define maxn 110int a[maxn];int f[2][maxn];int ans;int main() {int n;scanf("%d",&n);for(int i 1; i < n; i)scanf("%d",&a[i]);a[0] a…

oracle查询大小写敏感参数,让Oracle 大小写敏感 表名 字段名 对像名

一、解决方案1、在表名、字段名、对象名上加上双引号&#xff0c;即可实现让oracle大小写区分。2、但是这又引起了另一个问题&#xff1a;在数据库操作中&#xff0c;sql语句中相应的表名、字段名、对象名上一定要加双引号。解决办法是&#xff1a;使用"\"转义。如&a…

BZOJ 2097 [Usaco2010 Dec]Exercise 奶牛健美操

【题意】 给出一棵树。现在可以在树中删去m条边&#xff0c;使它变成m1棵树。要求最小化树的直径的最大值。 【题解】 二分答案。$Check$的时候用$DP$&#xff0c;记录当前节点每个儿子的直径$v[i]$&#xff0c;如果$v[i]1>mid$&#xff0c;那么就断掉连向儿子的这条边。如果…

将原生SQL功能Hibernate到您的Spring Data Repository中

JPA为您提供NamedNativeQuery以便使用本机SQL。 但是&#xff0c;用法并不方便&#xff0c;特别是当您需要在本机SQL中映射多个实体时。 您必须定义一组SqlResultSetMapping映射&#xff0c;这很容易出错。 对于以前使用过Hibernate本机SQL功能的用户&#xff0c;您会发现它比J…

daterangepicker双日历插件的使用

今天主要是由于项目的需要&#xff0c;做了一个daterangepicker双日历插件&#xff0c;做出来的效果如下&#xff1a; 个人感觉这个daterangepicker双日历插件很好用&#xff0c;并且实现起来也不是很麻烦&#xff0c;我是根据它的官方文档去写的&#xff0c;并将Bootstrap也整…

php 递归展现城市信息,PHP 递归兑现层级树状展现数据

PHP 递归实现层级树状展现数据?$arr[id],fid > $arr[fid],name > $arr[name],);}// 将数据按照缩进简单排列 见图1function data2arr($tree, $rootId 0, $level 0) {foreach($tree as $leaf) {if($leaf[fid] $rootId) {echo str_repeat( , $level) . $leaf[id] . .…

牛客网 2018年全国多校算法寒假训练营练习比赛(第五场) H.Tree Recovery-完全版线段树(区间更新、区间求和)...

H.Tree Recovery时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K64bit IO Format: %lld链接&#xff1a;https://www.nowcoder.com/acm/contest/77/H来源&#xff1a;牛客网题目描述 You have N integers, A1,…

面向对象的代码生成方法

代码生成是减少无聊任务的不健康负担的一种常用方法&#xff0c;这些任务常常使我们急切的代码苦恼。 我见过的许多代码生成框架都使用模板替换重复方法&#xff0c;在该方法中&#xff0c;您可以编写一个模板&#xff0c;以了解生成的代码文件的外观&#xff0c;然后替换某些关…