MATLAB与STK互联27:仿真案例2—生成两行轨道根数(TLE)

在有些情况下,需要对某颗卫星生成两行轨道根数。本篇博文就是要完成此项工作,主要参考了AGI官网的分析案例。首先生成10颗卫星,并随机设置卫星轨道参数,高度500~800km,倾角10°—60°,升交点赤经0°—360°,近地点辐角、真近点角不做限制。
下面上代码:
uiap = actxserver(‘STK11.application’);
root = uiap.Personality2;
root.NewScenario(‘TLE’);
sc = root.CurrentScenario;

%生成10颗卫星,并设置轨道参数
for j = 1:10
satname = [‘sat_’,num2str(j)];
sat = sc.Children.New(18,satname);
sat.SetPropagatorType(‘ePropagatorHPOP’);
kep = sat.Propagator.InitialState. Representation.ConvertTo(‘eOrbitStateClassic’);
kep.SizeShapeType = ‘eSizeShapeAltitude’;
kep.LocationType = ‘eLocationTrueAnomaly’;
kep.Orientation.AscNodeType = ‘eAscNodeLAN’;
altitude = 500+300*rand(1);
kep.SizeShape.PerigeeAltitude = altitude;
kep.SizeShape.ApogeeAltitude = altitude;
kep.Orientation.Inclination = 10 + 50 * rand(1);
kep.Orientation.ArgOfPerigee = 0;
kep.Orientation.AscNode.Value = 360 * rand(1);
kep.Location.Value = 360 * rand(1);
sat.Propagator.InitialState.Representation.Assign(kep);
sat.Propagator.Propagate;
end
%两行轨道根数,需要卫星编号,这里假设初始编号60000
ssc = 60000;
%创建星历存储文件
fid = fopen(‘TLEData.tle’,‘wt’);

%获取所有卫星的路径
satpathcollection = root.ExecuteCommand(‘ShowNames * Class Satellite’);
satpathcollection.Item(0);
%Item(0)中包含了所有卫星路径,但是是用一个字符串包含所有路径,
%中间用空格隔开,下面的语句是先将字符串分割,然后去除空格元素,
%则satPaths的每个元素都只包含一个卫星路径
satPaths = regexp(satpathcollection.Item(0),’ ',‘split’);
satPaths(cellfun(@isempty,satPaths)) = [];

%生成两行轨道根数星历,并输出至文件中
for i = 1:length(satPaths)
sattemp = root.GetObjectFromPath(satPaths{i});
start = sc.StartTime;
cmd1 = [‘GenerateTLE ‘,satPaths{i},’ Point "’,start,’" ‘, sprintf(’%05.0f’,ssc) , ’ 20 0.01 SGP4 ', ’ ',sattemp.InstanceName];
root.ExecuteCommand(cmd1);
satDP = sattemp.DataProviders.Item(‘TLE Summary Data’).Exec();
TLEData = satDP.DataSets.GetDataSetByName(‘TLE’).GetValues;

fprintf(fid, ‘%s\n%s\n’, TLEData{1,1}, TLEData{2,1});
ssc = ssc +1 ;
end
fclose(fid);

生成的两行轨道根数星历文件格式如下:
在这里插入图片描述
星历文件保存路径为m文件的路径。以上代码已经过验证,请放心使用。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值