1.具体思路
(1)获取默认地址stkDefaultHost
remMachine = stkDefaultHost;
(2)关闭STK当前的场景
stkClose('ALL')
(3)打开默认地址stkDefaultHost下的场景,并获取ID号
conid=stkOpen(remMachine);
(4)检测STK是否存在一个场景,如果已经存在,则通过MATLAB端进行关闭
scen_open = stkValidScen;
if scen_open == 1
rtn = questdlg('Close the current scenario?');
if ~strcmp(rtn,'Yes')
stkClose(conid);
return
else
stkUnload('/*')
end
end
(5)创建一个场景,其中parameter.name_stkNewObj为场景名称
stkNewObj('/','Scenario',parameter.name_stkNewObj);
(6)设置场景仿真的时间,并开始创建场景
str_set1=['SetValues "',parameter.edit_starTime,'" 1 1'];
rtn = stkConnect(conid,'Animate',['Scenario/',parameter.name_stkNewObj],str_set1);
stkSetTimePeriod(parameter.edit_starTime,parameter.edit_endTime,'GREGUTC');
rtn = stkConnect(conid,'Animate',['Scenario/',parameter.name_stkNewObj],'Reset');
2.参考代码(上述过程的封装代码如下代码段)
function [conid] = Initialization_STK(parameter)%handles
%Initialization_STK 此处显示有关此函数的摘要
% 此处显示详细说明
remMachine = stkDefaultHost;
stkClose('ALL')
conid=stkOpen(remMachine);
scen_open = stkValidScen;
if scen_open == 1
rtn = questdlg('Close the current scenario?');
if ~strcmp(rtn,'Yes')
stkClose(conid);
return
else
stkUnload('/*')
end
end
%create a new scenario
disp('Create a new scenario');
stkNewObj('/','Scenario',parameter.name_stkNewObj);
% set Time period
disp('Set scenario Time period');
str_set1=['SetValues "',parameter.edit_starTime,'" 1 1'];
rtn = stkConnect(conid,'Animate',['Scenario/',parameter.name_stkNewObj],str_set1);
stkSetTimePeriod(parameter.edit_starTime,parameter.edit_endTime,'GREGUTC');
rtn = stkConnect(conid,'Animate',['Scenario/',parameter.name_stkNewObj],'Reset');
disp('The STK is successfully initialized!');
end