首页 > 其他分享 >SPICE/SpiceyPy学习记录整理(三)-- Mice

SPICE/SpiceyPy学习记录整理(三)-- Mice

时间:2024-04-07 18:31:53浏览次数:26  
标签:-- cspice SpiceyPy pos 内核 et Mice 加载

目录

一、Mice介绍

二、Mice使用方法

1.1 加载内核

1.2 卸载内核

1.3 矢量化参数

三、示例


SPICE官方课程学习文档链接:

https://naif.jpl.nasa.gov/naif/tutorials.html

一、Mice介绍

        Mice是SPICE在MATLAB环境下的扩展工具包。所有 Mice 调用都是CSPICE函数,无论调用格式如何底层,并返回 MATLAB 原生数据类型。 Mice 具有 CSPICE 中不具备的一些功能,例如矢量化。CSPICE 错误消息以try...catch结构的形式返回给 MATLAB。Mice是一个完整的、独立的工具包,因此无需安装C编译器即可使用,你只需将Mice加入到Matlab的搜索路径中即可

二、Mice使用方法

1.1 加载内核

cspice_furnsh(KernelPath); % cspice_furnsh('standard.tm')

        使用cspice_furnsh加载内核时,内核是直接加载到Matlab会话中而不是脚本中,这意味着你只需加载一次内核即可在多个脚本中调用内核而无需在每个脚本中都加载内核,但有时某些你不需要的内核数据会在某一个脚本中被错误使用从而得到错误的结果。因此建议在加载内核时注意这些内核是否是你需要使用的以及注意加载顺序,除此之外,你也可以在每个脚本中都加载内核并在脚本末尾卸载内核。

1.2 卸载内核

cspice_unload(KernelPath); % 卸载KernelPath内核
cspice_kclear(); % 卸载所有内核

1.3 矢量化参数

        大多数Mice函数都包括矢量化参数的使用,这是C或Fortran工具包中没有的功能,例如使用Mice检索状态向量和1000个历时的光时值。

        创建一个包含1000个星历时间的数组,步长为10小时,从2005年7月1日开始:

start = cspice_str2et('July 1 2005');
et = (0:999)*3600 + start;

        通过LT+S像差校正,检索J2000帧中每个et从火星到地球的状态向量和相应的光时:

[state,ltime] = cspice_spkezr('Earth',et,'J2000','LT+S','MARS');
starg = mice_spkezr('Earth',et,'J2000','LT+S','MARS');

        使用表达式访问第i个星历时间对应的第i个状态6向量(6x1数组):

state_i = state(:,1);
or
state_i = starg(i).state;

        将前一个示例中的星历时间向量et转换为UTC日历字符串,在seconds字段中具有三个小数位的精度:

format = 'C';
prec = 3;
utcstr = cspice_et2utc(et,format,prec);
utcstr_i = utcstr(i,:);

        将cspice_spkezr函数在状态中返回的N个状态向量的位置分量(状态向量中的前三个分量)转换为纬度坐标:

[radius,latitude,longitude] = cspice_reclat(state(1:3,:));

三、示例

        作为使用Mice的一个例子,计算并绘制卡西尼号航天器在J2000惯性坐标系中的轨迹,从2004年6月20日到2005年12月1日。本例使用cspice_spkpos函数检索位置数据。

% Load the generic kernels

cspice_furnsh( { 'pck00011.tpc', '030201AP_SK_SM546_T45.bsp','de440.bsp','naif0012.tls'} )

% Define the number of divisions of the time interval.

STEP = 1000;
et = cspice_str2et( {'Jun 20, 2004', 'Dec 1, 2005'} );
times = (0:STEP-1) * ( et(2) - et(1) )/STEP + et(1);
[pos,ltime]= cspice_spkpos( 'Cassini', times, 'J2000', 'NONE', 'SATURN BARYCENTER' );

% Plot the resulting trajectory.

x = pos(1,:);
y = pos(2,:);
z = pos(3,:);
plot3(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
grid on
cspice_kclear

重复示例,只是使用mice_spkezr函数来检索完整的状态向量:

% Define the number of divisions of the time interval.

STEP = 1000;
cspice_furnsh( { 'pck00011.tpc', '030201AP_SK_SM546_T45.bsp','de440.bsp','naif0012.tls'} )
et = cspice_str2et( {'Jun 20, 2004', 'Dec 1, 2005'} );
times = (0:STEP-1) * ( et(2) - et(1) )/STEP + et(1);
ptarg = mice_spkpos( 'Cassini', times, 'J2000', 'NONE', 'SATURN BARYCENTER' );
pos = [ptarg.pos];

% Plot the resulting trajectory.

x = pos(1,:);
y = pos(2,:);
z = pos(3,:);
plot3(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
grid on
cspice_kclear
图 1 卡西尼号轨迹图

标签:--,cspice,SpiceyPy,pos,内核,et,Mice,加载
From: https://blog.csdn.net/buaaspring/article/details/137471248

相关文章

  • 人工智能和机器学习(AI/ML)在软件测试中的应用
    人工智能和机器学习(AI/ML)在软件测试中的应用正在逐渐改变传统的测试方法,提高测试效率和质量。以下是AI/ML在测试中的一些关键应用:自动化测试AI可以通过机器学习算法自动识别和执行测试用例,大大提高了测试效率7。AI工具能够学习软件的行为和模式,自动生成测试用例和测试脚本,减......
  • SPICE/SpiceyPy学习记录整理(二)-- 工具包安装与介绍
    目录一、获取、安装和引用SPICEToolkit1.1获取SPICEToolkit1.2安装SPICEToolkit1.3检查是否安装成功二、Toolkit介绍2.1工具包架构2.2MatlabToolkit--Mice 2.3Toolkit特点2.4工具包目录结构三、ToolkitLibrary介绍3.1 ToolkitLibrary概述3.2 Tool......
  • UML之用例图和案例分享
    目录一、概述:参与者(Actors):用例(UseCases):关系(Relationships):二、用途:        UML用例图是用于描述系统功能需求和用户与系统之间的交互关系的一种图形化建模工具。它主要用于捕捉系统的功能性需求,以及系统与外部参与者之间的交互行为。一、概述:参与者(Actors):在......
  • Java集合常用类及使用特点
    Java集合框架提供了一组接口和类,用于存储和操作对象集合。它包括常用的数据结构,如列表、集合、映射等,以及对应的实现类。主要接口和类:List(列表):允许重复元素,按照插入顺序存储。常用实现类有ArrayList(查询快、增删慢)和LinkedList(增删快、查询慢)。ArrayListvs.LinkedList:Ar......
  • 分治思想排序(快速排序、归并排序)
    分治:分而治之,即把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并优点:降低时间复杂度:分治法可以将大问题分解为小问题,通过解决小问题来有效解决原问题,从而降低算法的时间复杂......
  • 用HTML5写奥林帕斯奖简介
    一、用VSCODE写奥林帕斯奖简介代码1、以.html为结尾写主要代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">&......
  • Android Studio学习14——认识Activity的启动模式
    默认情况下都是Standard模式借鉴other借鉴2......
  • C++初级----string类(STL)
    1、标准库中的string1.1、sring介绍    字符串是表示字符序列的类,标准的字符串类提供了对此类对象的支,其接口类似于标准字符容器的接口,但是添加了专门用于操作的单字节字符字符串的设计特性。    string类是使用char,即作为他的字符类型,使用他默认的char_tr......
  • csdn博客自定义模块:显示实时天气、日历、随机语录代码
    目录1.样式说明2.效果展示3.代码下载1.样式说明vip会员或者博客专家可以自定义模块代码,比如我博客的样式,有这几部分组成:灯笼祝福(我这里是龙年快乐,可以自定义更改任何字)、滚动欢迎语(我这里是欢迎访问我的博客,可以自定义更改任何欢迎语)github链接、知乎链接、邮箱发......
  • Android Studio学习13——认识Activity的页面任务栈
    ......