65 lines
2.6 KiB
Matlab
65 lines
2.6 KiB
Matlab
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));
|