profile = "C"; bandwidth = 20; include_free_space_pathloss = true; delay_model = "None"; carrier_frequency = 2.4e9; mobile_speed = 0; mobile_altitude = groundStation.Altitude; satellite_altitude = satConfig.satAltitude; random_stream = "mt19937ar with seed"; seed = 666; tx_antenna_count = 1; rx_antenna_count = 1; apep = 1000; txPower = 20; wifiSensitivity = -85; reliableRxPower = -75; amplifierGain = 30; [cfgEHT, simParameters, channel, chInfo, maxChDelay, satelliteDopplerShift, chanBW] = create_baseline_configuration(profile, bandwidth, include_free_space_pathloss, delay_model, carrier_frequency, mobile_speed, mobile_altitude, satellite_altitude, random_stream, seed, tx_antenna_count, rx_antenna_count, apep); cfgEHT.User{1}.MCS = 3; simParameters.TransmitPower = txPower; if exist("only_define_baseline_vars", "var") && only_define_baseline_vars return; end [~, numPacketsSimulated, ~, rxPower, pathLoss] = simulateTransmission(accessAnalysisResults, cfgEHT, channel, maxChDelay, [], inf, simParameters); packetIdx = 1:numPacketsSimulated; packetTimes = accessAnalysisResults.times(packetIdx); rxPower = rxPower(packetIdx); pathLoss = pathLoss(packetIdx); if calc_task2 figure; plot(packetTimes, rxPower); grid on; xtickformat("HH:mm"); xlabel("Time of day [HH:mm]"); ylabel("Power [dBm]"); title("Receive power over time plot of satellite pass"); yline(wifiSensitivity, "--", "receive sensitivity -85 dBm"); yline(reliableRxPower, "--", "reliable reception -75 dBm"); end % this site helped in providing formulas and a calculator to verify % https://calculatorshub.net/telecom-calculators/dbm-to-range-calculator/ lambda = physconst("lightspeed") / carrier_frequency; maxPathLossDetectable = txPower - wifiSensitivity; maxDistanceDetectable = lambda / (4 * pi) * 10^(maxPathLossDetectable / 20); maxPathLossReliable = txPower - reliableRxPower; maxDistanceReliable = lambda / (4 * pi) * 10^(maxPathLossReliable / 20); requiredTxPower = reliableRxPower + pathLoss; if calc_task2 figure; plot(packetTimes, requiredTxPower); grid on; xtickformat("HH:mm"); xlabel("Time of day [HH:mm]"); ylabel("Power [dBm]"); title("Required transmit power for -75 dBm receive power"); end amplifiedTxPower = txPower + amplifierGain; requiredAntennaGain = max(requiredTxPower - amplifiedTxPower, 0); validRequiredTxPower = requiredTxPower(isfinite(requiredTxPower)); validRequiredAntennaGain = requiredAntennaGain(isfinite(requiredAntennaGain)); fprintf("Maximum detectable distance at %.0fdBm TX power: %.2fkm\n", txPower, maxDistanceDetectable / 1e3); fprintf("Maximum reliable distance at %.0fdBm TX power: %.2fkm\n", txPower, maxDistanceReliable / 1e3); fprintf("Required TX power for -75dBm reception: %.2fdBm to %.2fdBm\n", min(validRequiredTxPower), max(validRequiredTxPower)); fprintf("Required antenna gain with %.0fdB amplifier: %.2fdB to %.2fdB\n", amplifierGain, min(validRequiredAntennaGain), max(validRequiredAntennaGain));