SPICE/SpiceyPy学习记录整理(三)-- 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 卡西尼号轨迹图

清理 Maven 下载的依赖文件和缓存可以通过多种方式进行,具体取决于用户希望清理的内容(全部缓存、特定项目缓存、下载失败的依赖等)以及使用环境(命令行或 IDE)。以下是几种常见的清理方法: ### 手动删除本地仓库中的依赖文件 Maven 的依赖文件默认存储在本地仓库目录中(通常是 `~/.m2/repository`)。如果需要彻底清除所有依赖缓存,可以手动删除该目录下的所有内容。当再次执行 `mvn install` 或其他构建命令时,Maven 会重新从远程仓库下载所需的依赖文件[^1]。 ### 使用 Maven 命令清理缓存 Maven 提供了内置命令用于清理本地依赖缓存: - **清理所有依赖缓存** 运行以下命令将删除本地仓库中的所有依赖文件,并在下次构建时重新下载: ```bash mvn dependency:purge-local-repository ``` - **清理特定项目的依赖缓存** 如果只想清理某个特定项目的依赖缓存,可以在命令中指定其坐标(groupId 和 artifactId): ```bash mvn dependency:purge-local-repository -DreResolve=com.example:project-name ``` 此方式适用于只需要清理部分模块的历史缓存,而不影响其他项目的依赖文件[^2]。 ### 在 IntelliJ IDEA 中清理 Maven 缓存 如果使用 IntelliJ IDEA 管理 Maven 项目,有时即使执行了 `mvn clean install` 也无法解决缓存导致的问题。此时可以尝试以下操作: 1. 关闭 IDEA。 2. 删除项目中的 `.iml` 文件(例如 `xxx.iml`)。 3. 重新打开 IDEA 并重新加载 Maven 项目。 此外,也可以通过菜单栏选择 `File > Invalidate Caches / Restart` 来清除 IDEA 自身的缓存并重启开发环境[^3]。 ### 清理下载失败的依赖 对于因网络问题或其他异常导致的不完整依赖下载,Maven 会在仓库路径下生成带有 `lastUpdated` 后缀的临时文件。这些文件不会自动删除,可能会影响后续构建过程。可以使用批处理脚本清理此类文件: ```bat set REPOSITORY_PATH=你的maven仓库全路径 (例如:D:\maven-repository) rem 正在搜索... for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do ( del /s /q %%i ) rem 搜索完毕 pause ``` 将上述代码保存为 `.bat` 文件并运行,即可批量删除所有包含 `lastUpdated` 的临时文件[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值