edbc22bcf6
- fixed perform_access_analysis to use 2.4GHz instead of 2GHz - finished task 3
65 lines
2.2 KiB
Matlab
65 lines
2.2 KiB
Matlab
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 |