Matlab与Stk联合仿真(一)
写在前面
整理了学习两者联合仿真时收集的一些资料,加上个人实践经验,将所学所悟予以记录。预计会写3到5篇,本篇是第一篇,主要讲联合仿真的基本要素。
1. 联合仿真的本质
相信看这个的同学对Matlab和Stk都有了自己基本的认识,所谓的联合仿真在我个人看来就是利用Matlab调用Stk的各个接口,将需要在Stk界面进行的操作利用Matlab代码进行代替,所以在Stk操作界面无法实现的功能也无法利用联合仿真进行实现(比如在进行覆盖性计算(Coverage)的时候,Stk必须计算完成才能进行各项结果的查看,利用Matlab调用接口也无法实现在计算的过程中实时将计算结果输出)。
虽然如此,利用联合仿真还是可以减少重复性工作,尤其是在进行优化分析的时候,需要对大量场景算例进行计算,手动设置stk的场景模型需要花费很多时间,利用程序进行实现可以节省不少工作量,在配以Matlab强大的函数库,能够实现的功能就更多了。
2. 使用Matlab调用的方式
两者之间有两种调用方式:
- AeroToolBox
- mexConnect
AeroToolBox提供了了Matlab库,能够在Matlab里独立使用一些STK函数;mexConnect更像是一个通用接口,使用stkConnect函数,配置不同的参数,可以实现与AeroToolBox提供的各种函数相同的功能。
我对两种方式的本质区别不够了解,只能说一些在使用上的理解。MexConnect得到的报表结果是字符串形式,基本上复刻了STK里面报表的生成内容,因此在Matlab中需要对字符串进行处理,转换成矩阵或者数组的形式方便数据处理;AeroToolBox方式得到的结果直接就是数组形式,但是有些数据任然需要经过整理才能使用。
举个例子,比如我利用matlab获取STK中一颗卫星的位置速度信息,在STK中显示结果为:
利用AeroToolBox函数获取的结果如下:
结果是一个元胞数组,包含了报表里面的时间,位置和速度,每一个单独的项点进去都是数组,可以直接处理,比如我们点进第一列项时间:
这个结果不是我们理解的时间形式,而是自STK建模场景开始的累计秒。比如我这个场景的开始时间为:6 Aug 2021 04:00:00.000 UTCG;那么图中第二个点的时间即为:6 Aug 2021 04:00:05.000 UTCG.这个时间步长是根据函数指令设置的,我设置的是5s采样。
利用MexConnect函数获取的结果如下:
基本上就是STK里面报表的复刻,所以需要进行字符串的处理。
但是MexConnect的优点在于只要弄清楚了指令参数的配置方法,只需要一个指令就可以实现全部的函数功能,指令参数可以在STK的Help文档中找到。
我在使用的时候一般选择MexConnect指令进行场景模型的操作,然后利用AeroToolBox提供的函数获取报表结果。