satSim = create_satellite_sim(satConfig, groundStation); % viewer = satelliteScenarioViewer(satSim.sc); sampleTimes = satConfig.startTime:seconds(satConfig.sampleTime):satConfig.stopTime; distancesToSat = zeros(size(sampleTimes)); elevationAnglesToSat = zeros(size(sampleTimes)); satelitteVisibilities = zeros(size(sampleTimes)); dopplerShifts = zeros(size(sampleTimes)); progressStartText = "Starting ..."; f = waitbar(0, progressStartText, "Name", "Task 1"); progressTotal = numel(sampleTimes); progressQueue = parallel.pool.DataQueue; parfor_waitbar(f, progressTotal, progressStartText, true); progressListener = afterEach(progressQueue, @(info) parfor_waitbar(f, progressTotal, info, false)); parfor idx = 1 : numel(sampleTimes) res = perform_access_analysis(satSim, sampleTimes(idx)); distancesToSat(idx) = res.distanceToSatellite; elevationAnglesToSat(idx) = res.elevationAngleToSatellite; satelitteVisibilities(idx) = res.satelliteVisible; dopplerShifts(idx) = res.fshift; send(progressQueue, sprintf("Index %d", idx)); end delete(progressListener); if ishandle(f) close(f); end accessAnalysisResults.times = sampleTimes; accessAnalysisResults.distances = distancesToSat; accessAnalysisResults.elevationAngles = elevationAnglesToSat; accessAnalysisResults.satelitteVisibilities = satelitteVisibilities; accessAnalysisResults.dopplerShifts = dopplerShifts; carrierFrequency = 2.4e9; timeSeconds = seconds(sampleTimes - sampleTimes(1)); rangeRate = gradient(accessAnalysisResults.distances, timeSeconds); dopplerShift = -(rangeRate / physconst("lightspeed")) * carrierFrequency; accessAnalysisResults.geometricDopplerShifts = dopplerShift; % prevent figure plot when only the other tasks should be calculated % task2 needs task1 if calc_task1 figure; plot(sampleTimes, distancesToSat); grid on; xtickformat("HH:mm"); xlabel("Time of day [HH:mm]"); ylabel("Distance to Satellite [m]"); title("Distance over time plot of satellite pass"); figure; plot(sampleTimes, elevationAnglesToSat); grid on; xtickformat("HH:mm"); xlabel("Time of day [HH:mm]"); ylabel("Elevation angle to satellite [degree]"); title("Elevation angle over time plot of satellite pass"); end