导入文件
stkLoadObj('D:\STK_Job\Try2\big_star.sc');
建立仿真链路(单卫星单测站)
%% 生成chain
stkNewObj('Scenario/big_star','Chain','Chain1');
conID = stkOpen(stkDefaultHost);
stkConnect(conID,'Chains','*/Chain/Chain1','add */Satellite/ggg');%一次加一个
stkConnect(conID,'Chains','*/Chain/Chain1','add */Facility/GroundStation/Sensor/ccc');
得出时间report
%% ReportCreate 生成report文件
objPath = 'Scenario/big_star/Chain/Chain1';
rptStyle = 'Time Ordered Access';%'Access Data';
[secData,secNames] = stkReport(objPath, rptStyle);
secData
问题心得
- 如何画出捕获时间图像
- 如何MATLAB将report导出为TXT或其他
- 报告结果访问:
scen_open = stkValidScen;
if scen_open == 1
[data1,name1]=stkReport('*/Satellite/GEO','Fixed Position Velocity');%获取卫星GEO的位置和速度信息
T=stkFindData(data1{1},'Time'); %获取T
x_sat=stkFindData(data1{1},'x');% 获取单位是m
y_sat=stkFindData(data1{1},'y');
z_sat=stkFindData(data1{1},'z');
vx_sat=stkFindData(data1{1},'vx');
vy_sat=stkFindData(data1{1},'vy');
vz_sat=stkFindData(data1{1},'vz');
[data2,name2]=stkReport('*/Satellite/GEO/Sensor/Sensor1','Boresight Intersection');%获取波束中心的位置信息
Latitude_Sensor_Center=stkFindData(data2{1},'Latitude');%单位是弧度
Longitude_Sensor_Center=stkFindData(data2{1},'Longitude');
[data3,name3]=stkReport('*/Aircraft/Aircraft1','ECF Position Velocity 60 sec');%获取飞行器的位置和速度信息
% 注意:“ECF Position Velocity 60 sec”需要在STK中额外设置添加
x_flight=stkFindData(data3{1},'x');% 获取单位是m
y_flight=stkFindData(data3{1},'y');
z_flight=stkFindData(data3{1},'z');
vx_flight=stkFindData(data3{1},'vx');
vy_flight=stkFindData(data3{1},'vy');
vz_flight=stkFindData(data3{1},'vz');
%————————————————————————————————————————————————STK中获取参数;↑
Length_of_flight = length(vz_flight); % 飞行器的数据长度,最后一组没有取在整数时间
Length_calculate = Length_of_flight-1; % 实际计算的数据长度 要减去一组
x_sat_2 = x_sat(1:Length_of_flight);
y_sat_2 = y_sat(1:Length_of_flight);
z_sat_2 = z_sat(1:Length_of_flight);
vx_sat_2 = vx_sat(1:Length_of_flight);
vy_sat_2 = vy_sat(1:Length_of_flight);
vz_sat_2 = vz_sat(1:Length_of_flight);
% 卫星 速度位置
Latitude_Sensor_Center_2 = Latitude_Sensor_Center(1:Length_of_flight);
Longitude_Sensor_Center_2 = Longitude_Sensor_Center(1:Length_of_flight);
x_Sensor_Center_2 = zeros(Length_of_flight,1);
y_Sensor_Center_2 = zeros(Length_of_flight,1);
z_Sensor_Center_2 = zeros(Length_of_flight,1);
for j = 1:Length_of_flight
x_Sensor_Center_2(j) = ((a_1*cos(Longitude_Sensor_Center_2(j)))/((1+(1-squ_e)*((tan(Latitude_Sensor_Center_2(j)))^2))^0.5))*1000;
y_Sensor_Center_2(j) = ((a_1*sin(Longitude_Sensor_Center_2(j)))/((1+(1-squ_e)*((tan(Latitude_Sensor_Center_2(j)))^2))^0.5))*1000;
z_Sensor_Center_2(j) = (a_1*(1-squ_e)*sin(Latitude_Sensor_Center_2(j)))/((1-squ_e*((sin(Latitude_Sensor_Center_2(j)))^2))^0.5)*1000;
end
% 波束中心点位置
x_flight_2 = x_flight(1:Length_of_flight);
y_flight_2 = y_flight(1:Length_of_flight);
z_flight_2 = z_flight(1:Length_of_flight);
vx_flight_2 = vx_flight(1:Length_of_flight);
vy_flight_2 = vy_flight(1:Length_of_flight);
vz_flight_2 = vz_flight(1:Length_of_flight);
%飞机 速度位置
%————————————————————————————————————————————————————计算TDOA/FDOA ↓
FDOA = zeros(Length_of_flight,1);
TDOA = zeros(Length_of_flight,1);
for j = 1:Length_of_flight
A1 = [x_sat_2(j) y_sat_2(j) z_sat_2(j)];
B1 = [vx_sat_2(j) vy_sat_2(j) vz_sat_2(j)];
S1 = [x_Sensor_Center_2(j) y_Sensor_Center_2(j) z_Sensor_Center_2(j)];
delta_v_1 = norm(B1);
R1 = S1-A1;
delta_R1 = norm(R1);
cos_alpha_1 = (R1(1)*B1(1)+R1(2)*B1(2)+R1(3)*B1(3))/(delta_R1*delta_v_1);
delta_f_1 = (F*delta_v_1*cos_alpha_1)/c_0;
delay_1 = delta_R1/c_0;
A2 = [x_flight_2(j) y_flight_2(j) z_flight_2(j)];
B2 = [vx_flight_2(j) vy_flight_2(j) vz_flight_2(j)];
delta_v_2 = norm(B2-B1);
R2 = A2-A1;
delta_R2 = norm(R2);
V2 = B1-B2;
cos_alpha_2 = (R2(1)*V2(1)+R2(2)*V2(2)+R2(3)*V2(3))/(delta_R2*delta_v_2);
delta_f_2 = (F*delta_v_2*cos_alpha_2)/c_0;
delay_2 = delta_R2/c_0;
FDOA(j) = delta_f_2 - delta_f_1; %飞机的多普勒-波束中心多普勒
TDOA(j) = delay_2 - delay_1; %飞机时延-波束中心时延
end
end
stkClose(conid);