序文
- 以前のブログ(STK Inter-Satellite Visibility Analysis)では、
STK
ソフトウェアを使用して可視性を分析しました。 - 実験的なニーズのために、我々は、視野の可視性マトリックス取得する必要が
1
見えるとある0
目に見えないし。 - 前回のブログ投稿(STKとMatlab Interconnection(プロテストの成功))では、インターネットの通信を確立
STK
しましたMatlab
。 - このブログでは、プログラミングを通じて衛星間の可視性データを取得し、可視性マトリックスを分析します。
詳細なコーディング
- 接続を確立
STK
するMatlab
% 初始化连接
stkInit;
% 默认端口 5001
remMachine = stkDefaultHost;
% conid只能获取两次,使用完需要关闭连接
conid = stkOpen(remMachine);
- 星座内のすべての衛星の名前を取得します
% 总共 24 颗卫星,第一颗卫星下标为 4
objNames = stkObjNames;
STK
視界を得るから
このメソッドは、任意の2つの衛星間の可視性のみを取得できます。マトリックス24
を取得するには、2つの衛星間の可視性を取得する必要があります。24 x 24
戻り値は、可視期間のセグメント数、可視期間の開始時刻と終了時刻、可視期間の継続時間です。
% 从 stk 获取可见性数据
% 参数依次是:参考卫星,目标卫星,报告样式,开始时间,结束时间,时间间隔
[secData, secNames] =stkAccReport(char(objNames(int32(i))),char(objNames(int32(j))), style,startTime,endTime,dt);
完全なコード
- これは
0-60
数秒以内の衛星の可視性マトリックスです
stkInit;
remMachine = stkDefaultHost;
conid = stkOpen(remMachine);
objNames = stkObjNames;
dt = 60;
style = 'Access';
startTime = 0;
endTime = 60;
result = zeros(24);
for i = 4:27
disp(i)
for j = 4:27
if i ~= j
%disp(j)
[secData, secNames] =stkAccReport(char(objNames(int32(i))),char(objNames(int32(j))), style,startTime,endTime,dt);
[temp1,temp2] = size(secData{
1});
if temp2 == 4
[a,b,c,d] = secData{
1}.data;
% a: Access b:Start Time c:End Time d:Duration
if d == dt
result(i-3,j-3) = 1;
end
end
else
result(i-3,j-3) = 1;
end
end
end
stkClose(conid);
stkClose;
- 1秒ごとに可視性を取得する必要がある場合は、コードを次のように変更して、1秒ごとにマトリックスを生成し、
.csv
ファイルに保存する必要があります。
stkInit;
remMachine = stkDefaultHost;
conid = stkOpen(remMachine);
objNames = stkObjNames;
dt = 1;
style = 'Access';
startTime = 0;
endTime = 1;
result = zeros(24);
for k = 1:60
for i = 4:27
disp(strcat(num2str(k),' ---------- ',num2str(i-3)))
for j = 4:27
if i ~= j
%disp(j)
[secData, secNames] =stkAccReport(char(objNames(int32(i))),char(objNames(int32(j))), style,startTime,endTime,dt);
[temp1,temp2] = size(secData{
1});
if temp2 == 4
[a,b,c,d] = secData{
1}.data;
% a: Access b:Start Time c:End Time d:Duration
if d == dt
result(i-3,j-3) = 1;
end
end
else
result(i-3,j-3) = 1;
end
end
end
csvwrite(strcat('./data/result',num2str(k),'.csv'),result)
startTime = startTime + 1;
endTime = endTime+1;
end
stkClose(conid);
stkClose;