基于MATLAB的GPS卫星绕地运行轨迹动态模拟仿真

news2024/11/19 16:51:16

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

2.算法运行软件版本

matlab2022a

3.部分核心程序

        Prn        = NavData(PRNS_SEL,1);%识别导航数据中的PRN
        
        iode       = NavData(PRNS_SEL,11);%企业日期序列号
       
        Crs        = NavData(PRNS_SEL,12);%轨道半径正弦谐波校正的振幅
      
        delta_n    = NavData(PRNS_SEL,13);%与计算值的平均运动差
        
        M_zero     = NavData(PRNS_SEL,14);%参考时间的平均异常
        
        Cuc        = NavData(PRNS_SEL,15);%纬度变元余弦谐波校正项的振幅
        
        es         = NavData(PRNS_SEL,16);%偏心率
        
        Cus        = NavData(PRNS_SEL,17);%纬度变元正弦谐波校正项的振幅
       
        sqrt_a     = NavData(PRNS_SEL,18);%半长轴的平方根
      
        toe        = NavData(PRNS_SEL,19);%星历重新出现时间(GPS周第二次)
      
        Cic        = NavData(PRNS_SEL,20);%倾角余弦谐波校正项的振幅
       
        OMEGA_zero = NavData(PRNS_SEL,21);%参考时间赤经
        
        Cis        = NavData(PRNS_SEL,22);%倾斜角正弦谐波校正项的振幅
        
        i_zero     = NavData(PRNS_SEL,23);%参考时间的倾角
        
        Crc        = NavData(PRNS_SEL,24);%轨道半径余弦谐波校正的幅度
        
        omega      = NavData(PRNS_SEL,25);%近地点论点
        
        OMEGA_dot  = NavData(PRNS_SEL,26);%赤经角变化率
        
        i_dot      = NavData(PRNS_SEL,27);%倾斜度变化率
       %计算真实异常
       
       %校正平均运动
        n_initial  = sqrt(Gravitational_constant)/(sqrt_a*sqrt_a*sqrt_a);
        n          = n_initial + delta_n;
        
       %计算自参考历元以来的时间
        t_k = func_tk_limits(t,toe);
        
       %T_K平均异常
        M_k = M_zero + n * t_k + 2*pi;             
        E_k = M_k;
        E_k1= M_k - es*sin(E_k);
        
        %E_K的迭代求解
        while (abs(E_k - E_k1) > 1e-9)
            E_k1 = E_k;
            E_k  = M_k + es * sin(E_k1);
        end;   
        
        %TRUE ANOMALY
        v_k   = 2*atan(sqrt((1+es)/(1-es))*tan(E_k/2));    
        %%纬度论
        
        %未修正纬度的自变量
        phi_k = v_k + omega;   
        
        %校正
        C_u = Cus*sin(2*phi_k) + Cuc*cos(2*phi_k);
        C_r = Crs*sin(2*phi_k) + Crc*cos(2*phi_k); 
        C_i = Cis*sin(2*phi_k) + Cic*cos(2*phi_k);   
01_075m

4.算法理论概述

        模拟24颗GPS卫星的轨道运行是一个复杂的任务,涉及到多个卫星的轨道计算和绘制。以下是一个大致的步骤和示例代码,用于在MATLAB中模拟和绘制这些卫星的轨道运行。实际GPS卫星的轨道参数非常复杂,而且卫星之间的相对运动也需要考虑。下面的示例代码是一个简化的版本,用于演示基本的概念。要通过MATLAB模拟24个GPS卫星的轨道运行效果,你可以按照以下步骤进行操作:

       获取卫星轨道参数: GPS卫星的轨道参数可以从相关文献或数据源中获取。这些参数包括每颗卫星的半长轴、偏心率、轨道倾角、升交点赤经等。

        计算卫星的轨道: 使用获取的轨道参数,可以通过开普勒运动方程计算每颗卫星在每个时间点的位置和速度。

       选择模拟时间范围: 选择一个适当的时间范围,以便观察卫星在地球上的运动。

       生成时间序列: 生成一系列时间点,可以使用MATLAB中的时间函数,如linspace来生成等间隔的时间点。

       计算卫星位置: 对于每个时间点,使用计算得到的轨道参数和时间,计算每颗卫星的位置和速度。

       绘制卫星轨道: 使用MATLAB的绘图函数,如plot3,绘制每颗卫星在三维空间中的轨道。你可以在地球球面上绘制卫星的位置,也可以绘制在三维笛卡尔坐标系中的轨迹。

        通过使用GPS卫星星历(Almanac data)信息,来计算模拟24个GPS卫星的轨道。每个卫星用PRN1-24来编号,假设GPS卫星轨道是圆的。
自己卫星轨道模拟,这个卫星是离地面350Km的太阳同步轨道卫星。这个轨道是椭圆的,使用轨道倾角98度
       计算自己卫星和每个GPS卫星的多普勒频移。
注意:这里使用GPS卫星是发送源,自己的卫星是接收源。假设发送频率1575.42 MHz

        GPS卫星轨道周期几乎是24小时,而自己的卫星在太阳同步轨道上的周期大概是1.5个小时,那么就是说太阳同步轨道已经绕几周了,GPS卫星才饶一周。所以当算多普勒频移的时候只需要算出GPS一个周期时间内的多普勒频移就好了。就是说,如果在算多普勒频移的时候,如果算多过24小时,那么多普勒频移就会重复了。我只需要24小时GPS轨道周期内的多普勒频移就好了。

         这里,首先介绍一下星历文件的含义:

Prn

卫星编号

iode

电文中给出的当前参考历元的有效期

Crs

电文中给出的轨道半径角距的改正项—正弦振幅

delta_n

电文中给出的平地点角改正值

M_zero

电文中给出的参考时刻平近点角

Cuc

电文中给出的升交点赤经的改正项—余弦振幅

e1

电文中给出的轨道椭圆偏心率

Cus

电文中给出的升交点赤经的改正项—正弦振幅

sqrt_a

电文中给出的卫星轨道椭圆长半轴的平方根

toe

电文中给出的参考时刻

Cic

电文中给出的倾角角距的改正项—余弦振幅

OMEGA_zero

电文中给出的参考时刻升交点赤经

Cis

电文中给出的倾角角距的改正项—正弦振幅

i_zero

电文中给出的参考时刻轨道倾角

Crc

电文中给出的轨道半径角距的改正项—余弦振幅

omega

电文中给出的轨道近地点角距

OMEGA_dot

电文中给出的升交点赤经变化率

i_dot

电文中给出的轨道倾角变化率 

       这里需要注意的时候,由于GPS距离地面的高度一般为20000km,而这里的同步卫星只有350km,所以看上去会效果不明显,所以这里我们把这里的参数设置的大些,这样看上去效果稍微明显点。然后你再写论文的时候,如果用到其中的数据,只要把他改回350即可。另外,其周期为1.5小时,这样在房子的时候,速度太快,不容易观察,这里稍微设置的大些,使用周期为6小时。

5.算法完整程序工程

OOOOO

OOO

O

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

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

相关文章

客户端post请求,服务器收到{}数据解决方法

当我们发起登录请求时,后台接收到的为{}数据 原因:传送过去的对象格式不对 解决方案: 引入qs npm install qs 在data中格式化数据 const res await axios({url:http://127.0.0.1:3000/post,method:post,data:Qs.stringify({username:te…

【试题024】C语言强制转型小例题

1.题目&#xff1a;设int a7; float x2.5,y4.7;,则表达式x3%(int)(xy)/4的值是 &#xff1f; 2.代码分析&#xff1a; #include <stdio.h> int main() { //设int a7; float x2.5,y4.7;,则表达式x3%(int)(xy)/4的值是 &#xff1f;int a 7;float x 2.5, y 4.7;printf…

持续集成工具jenkins操作

安装Jenkins 下载jenkins安装包 linux上下载jenkins失败 开始在windows上安装jenkins 1、先安装JDK https://jingyan.baidu.com/article/fdbd4277dd90f0b89e3f489f.html 免安装版本JDK只需要解压配置环境变量即可 2、安装Jenkins 参考文档&#xff1a; https://www.cnb…

Spring framework Day24:定时任务

前言 在我们的日常生活和工作中&#xff0c;时间管理是一项至关重要的技能。随着各种复杂任务的增加和时间压力的不断增加&#xff0c;如何更好地分配和利用时间成为了一项迫切需要解决的问题。在这样的背景下&#xff0c;定时任务成为了一种非常有效的解决方案。 定时任务&a…

在中国,技术到底有多有用?

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言1.…

SpringBoot结合Druid实现SQL监控

1、前言 SpringBoot不用我多介绍了吧&#xff0c;目前后端最流行的框架。后端开发人员最基本的要求。 Druid数据库连接池&#xff0c;出自国内 ”java圣地" 阿里巴巴。 Druid是一个用于大数据实时查询和分析的高容错、高性能开源分布式系统&#xff0c;旨在快速处理大规模…

迅为RK3568开发板RTMP推流之视频监控

1 搭建 RTMP 媒流体服务器 nginx-rtmp 是一个基于 nginx 的 RTMP 服务模块&#xff0c;是一个功能强大的流媒体服务器模块&#xff0c; 它提供了丰富的功能和灵活的配置选项&#xff0c;适用于构建各种规模的流媒体平台和应用。无论是搭建实时视频直播平台、点播系统或多屏互…

【Qt】常见控件

文章目录 按钮组QListWidget列表容器TreeWidget树控件TableWidget 表格控件其它控件介绍下拉框QLabel显示图片和动图 自定义控件封装 按钮组 QPushButton 常用按钮 QToolButton 工具按钮&#xff1a; 用于显示图片 如果想显示文字&#xff1a;修改风格&#xff1a;toolButto…

分类预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于BiGRU-AdaBoost双向门控循环单元结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于BiGRU-AdaBoos…

Hadoop3教程(二十五):Yarn的多队列调度器使用案例

文章目录 &#xff08;136&#xff09;生产环境多队列创建&好处&#xff08;137&#xff09;容量调度器多队列提交案例如何创建多个队列如何向指定队列提交任务 &#xff08;138&#xff09;容量调度器任务优先级&#xff08;139&#xff09;公平调度器案例参考文献 &#…

【Java 进阶篇】JavaScript 表格全选案例详解

在网页开发中&#xff0c;表格&#xff08;Table&#xff09;是一种常用的HTML元素&#xff0c;用于以表格形式展示数据。对于包含大量数据的表格&#xff0c;提供一个全选复选框可以极大地提高用户体验&#xff0c;方便用户一次性选择或取消选择所有项目。本篇博客将详细介绍如…

Mac电脑版交互式原型设计软件 Axure RP 8汉化 for mac

Axure RP 8是一款专业快速原型设计软件&#xff0c;它主要用于定义需求、设计功能和界面等&#xff0c;适用于商业分析师、信息架构师、产品经理、IT咨询师、用户体验设计师、交互设计师和UI设计师等用户。 该软件可以快速、高效地创建原型&#xff0c;并支持多人协作设计和版…

彩虹云商城自助发卡商城-卡卡云主题

彩虹云商城自助发卡商城-卡卡云主题 全新SUP模板/知识付费模板/卡卡云模板&#xff0c;首页美化&#xff0c;登陆页美化修复了pc端显示不正常的问题。 将这俩个数据库文件导入数据库。 其他的直接导入网站根目录覆盖就好。 PS&#xff1a;若首页显示不正常&#xff1a;请去…

MYSQL学习笔记2-mysql数据文件

1.mysql数据文件类型&#xff1f;5.7和8的一些区别 创建一个anadb的数据库&#xff1a;在mysql安装目录下data目录下会产生一个同名的文件夹 建表&#xff1a;图为mysql57的数据文件图&#xff0c;不同的引擎建表会产生不同后缀名的文件 &#xff0c;mysql5.5以上默认使用 inno…

新手指南|如何快速参与Moonbeam Ignite

Moonbeam Ignite是社区熟悉的有奖链上交互活动&#xff0c;将有300万枚GLMR作为生态激励注入Moonbeam生态系统&#xff0c;体验MoonbeamMoonbeam生态的应用即可获取相应Token奖励。Beamex/Beamswap、Moonwell和Gamma作为首批参与Moonbeam Ignite的三家项目方&#xff0c;将在活…

机器学习(23)---Boosting tree(课堂笔记)

文章目录 一、知识记录二、题目2.1 题目12.2 题目22.3 答案书写 一、知识记录 二、题目 2.1 题目1 2.2 题目2 2.3 答案书写

一百九十一、Flume——Flume配置文件各参数含义(持续完善中)

一、目的 在实际项目的开发过程中&#xff0c;不同Kafka主题的数据规模、数据频率&#xff0c;需要配置不同的Flume参数&#xff0c;而这一切的调试、配置工作&#xff0c;都要建立在对Flume配置文件各参数含义的基础上 二、Flume各参数及其含义 &#xff08;一&#xff09;…

touch - 创建空文件与修改时间戳

touch命令的功能是用于创建空文件与修改时间戳。如果文件不存在&#xff0c;则会创建出一个空内容的文本文件&#xff1b;如果文件已经存在&#xff0c;则会对文件的Atime&#xff08;访问时间&#xff09;和Ctime&#xff08;修改时间&#xff09;进行修改操作&#xff0c;管理…

数字秒表设计仿真VHDL跑表,源码,视频

名称&#xff1a;简单秒表设计仿真VHDL跑表 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; 数字秒表功能描述 本次练习只需要一个数码管(假设该数码管已被选中),实现数码管显示功能,具体要求如下(设数码管为共阳&#xff09; 1)实现秒表计时功能。…

阿里云安装 redis

1、在opt目录下面安装redis https://download.redis.io/redis-stable.tar.gz redis的最新稳定版本。更多版本可见 redis cd /opt wget https://download.redis.io/redis-stable.tar.gz2、解压tar包&#xff0c;会生成redis-stable文件夹 tar -xzvf redis-stable.tar.gz3、安装…