Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
3.3 kB
2
Indexable
Never
%ISS NORAD ID (25544)
%2019/08/13
%2023/08/12
clc;
clear;
close all;
%% real time
% List of TLE file names
%tleFiles = ["satellite1.tle", "satellite2.tle", "satellite3.tle"];
for z = 1:7758
    fileName = sprintf('longlong%d.tle',z);  % Generate the file name
    tleFiles{z} = fileName;                 % Read the file contents
end
% Define the time range for propagsation
startTime = datetime(2019,8,13);
stopTime = datetime(2023,8,12);
sampleTime =86400;
timeRange = startTime:seconds(16261):stopTime;
% Create the satellite scenario
sc = satelliteScenario(startTime, stopTime, sampleTime);

% Loop through each TLE file    
for i = 1:7758
    tleFile = tleFiles{i};
    tleFilePath = tleFile;
    [epochYearArray, month, day] = extractTLEData(tleFilePath);
    
    try
        % Create the satellite object using the TLE file
        sat = satellite(sc, tleFile);
        
        % Calculate the year for the specified date
        year = 2000 + epochYearArray;
        
        % Specify the time for which you want to get position and velocity
        time = datetime(year, month, day, 12, 0, 0);

        % Compute position and velocity in ECEF coordinate frame
        [position, velocity] = states(sat, time, "CoordinateFrame", "ecef");

        % Display the results
        disp("TLE File: " + tleFile);
        position_realn(i) = (norm(position') / 1000) - 6371;
        velocity_realn(i) = norm(velocity') / 1000;
        disp(time);
        disp("Position (ECEF) [km]: " + position_realn(i));
        disp("Velocity (ECEF) [km/s]: " + velocity_realn(i));
        disp("-------------------------------");

    catch exception
        fprintf('Inconsistent data in iteration %d, skipped.\n', i);
        disp("Error Message: " + exception.message);
    end
end
%play(sc)
%% SGP4

startTime = datetime(2019,8,13);
stopTime = datetime(2023,8,12);
sampleTime =86400;
sc1 = satelliteScenario(startTime,stopTime,sampleTime);

tleFile = "long1.tle";


satSGP4 = satellite(sc1,tleFile, ...
    "Name","satSGP4", ...
    "OrbitPropagator","sgp4");

satSDP4 = satellite(sc1,tleFile, ...
    "Name","satSDP4", ...
    "OrbitPropagator","sdp4");

[positionSGP4,velocitySGP4] = states(satSGP4,"CoordinateFrame", "ecef");
[positionSDP4,velocitySDP4] = states(satSDP4,"CoordinateFrame", "ecef");
for x=1:7758
    positionSGP4_n(x) = (norm(positionSGP4(:,x)')/1000)-6371;
    velocitySGP4_n(x) = norm(velocitySGP4(:,x)')/1000;
        
    
    positionSDP4_n(x) = (norm(positionSDP4(:,x)')/1000)-6371;
    velocitySDP4_n(x) = norm(velocitySDP4(:,x)')/1000;
end 
%v = satelliteScenarioViewer(sc1);
%play(sc1)
%% RelativePosition
re_pos_sgp4=abs(position_realn-positionSGP4_n);
re_pos_sgp4_mean = mean(re_pos_sgp4);
    
re_pos_sdp4=abs(position_realn-positionSDP4_n);
re_pos_sdp4_mean = mean(re_pos_sdp4);

test_r_p=(positionSDP4_n-positionSGP4_n);

figure;

subplot(2,1,1)
plot(timeRange,re_pos_sgp4,'r-',timeRange,re_pos_sgp4_mean,'b->')
xlim("auto");
ylim("auto");
ylabel('km');
title('RelativePosition:SGP4');

subplot(2,1,2)
plot(timeRange,re_pos_sdp4,'r-',timeRange,re_pos_sdp4_mean,'b->')
xlim("auto")
ylim("auto");
ylabel('km');
title('RelativePosition:SDP4');