MATLAB与STK互联18:卫星对象操作(9)—地面站可见性计算并获取数据2(补充上篇博文,有些问题需要澄清)
需要澄清的问题:上篇博文中,有些问题,如果按照代码来计算,给出的数据并不是可见弧段内的数据,而是整个仿真场景过程中的数据。这个结果,显然不是我们想要的。我们是为了获取可见弧段内的信息。这个问题想解决,就要用到IntervalList,字面意思就是“时段间隔列表”,如可见弧段数据就是一个时间列表。
先上代码:
uiap = actxserver(‘STK11.application’);
root = uiap.Personality2;
root.NewScenario(‘access’);
sc = root.CurrentScenario;
sat = sc.Chilren.New(18,‘mysat’);
sat.Propagator.Propagate;
fac = sc.Children.New(‘eFacility’,‘myfac’);
fac.Position.AssignGeodetic(20,120,0);
sat2fac_accessh = sat.GetAccessToObject(fac);
sat2fac_accessh.ComputeAccess();
%STK开发如果没有头绪,一个是查帮助,另一个就是用get、invoke查看相
%关信息。所以,上get
sat2fac_accessh.get
可以看到,有ComputedAccessIntervalTimes、AccessTimePeroidData两个属性。这个列表获取,在帮助文档里有,大家可以查一下。
acc_interval = sat2fac_accessh.ComputedAccessIntervalTimes;
%可见次数如下
acc_interval.Count
%可见的弧段起始时间列表
acc_interval.ToArray(0,-1)
%str、sto分别是第一个弧段的起始时间,是字符串类型。
[str,sto] = acc_interval.GetInterval(0)
%结合上篇博文,获取第一个可见弧段内的方位角
aerDP = sat2fac_accessh.DataProviders.Item(‘AER Data’).Group.Item(‘VVLH CBF’).Exec(str,sto,1);
azimuth = cell2mat(aerDP.DataSets.GetDataSetByName(‘Azimuth’).GetValues);
这篇博文就到这里,有些内容留在下一篇中进行介绍。