Files
WirelessNetworkingTechnologies/lab_5/task1.m
T
ti_mo edbc22bcf6 - finished task 2
- fixed perform_access_analysis to use 2.4GHz instead of 2GHz
- finished task 3
2026-06-24 21:48:12 +02:00

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