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; [~, numPacketsSimulated, ~, rxPower, pathLoss] = simulateTransmission(accessAnalysisResults, cfgEHT, channel, maxChDelay, [], inf, simParameters); packetIdx = 1:numPacketsSimulated; packetTimes = accessAnalysisResults.times(packetIdx); rxPower = rxPower(packetIdx); pathLoss = pathLoss(packetIdx); figure; plot(packetTimes, rxPower); grid on; xlabel("Time"); ylabel("Power [dBm]"); title("Receive power over time plot of satellite pass"); yline(wifiSensitivity, "--", "receive sensitivity -85 dBm"); yline(reliableRxPower, "--", "reliable reception -75 dBm"); 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; figure; plot(packetTimes, requiredTxPower); grid on; xlabel("Time"); ylabel("Power [dBm]"); title("Required transmit power for -75 dBm receive power"); amplifiedTxPower = txPower + amplifierGain; requiredAntennaGain = max(requiredTxPower - amplifiedTxPower, 0); validRequiredTxPower = requiredTxPower(isfinite(requiredTxPower)); validRequiredAntennaGain = requiredAntennaGain(isfinite(requiredAntennaGain)); fprintf("Maximum detectable distance at %.0f dBm TX power: %.2f km\n", txPower, maxDistanceDetectable / 1e3); fprintf("Maximum reliable distance at %.0f dBm TX power: %.2f km\n", txPower, maxDistanceReliable / 1e3); fprintf("Required TX power for -75 dBm reception: %.2f dBm to %.2f dBm\n", min(validRequiredTxPower), max(validRequiredTxPower)); fprintf("Required antenna gain with %.0f dB amplifier: %.2f dB to %.2f dB\n", amplifierGain, min(validRequiredAntennaGain), max(validRequiredAntennaGain));