From 138355694615e495feb1555c74cdccf30676e78a Mon Sep 17 00:00:00 2001 From: ti_mo Date: Mon, 8 Jun 2026 14:35:03 +0200 Subject: [PATCH] task2 implemented --- lab_4/lab_4.m | 102 +--- lab_4/link_level_measurements.md | 35 ++ lab_4/per_snr_apep.svg | 818 +++++++++++++++++++++++++++++++ lab_4/per_snr_apep_t22.svg | 687 ++++++++++++++++++++++++++ lab_4/task1.m | 98 ++++ lab_4/task2.m | 38 ++ 6 files changed, 1689 insertions(+), 89 deletions(-) create mode 100644 lab_4/per_snr_apep.svg create mode 100644 lab_4/per_snr_apep_t22.svg create mode 100644 lab_4/task1.m create mode 100644 lab_4/task2.m diff --git a/lab_4/lab_4.m b/lab_4/lab_4.m index 25af44b..3f84388 100644 --- a/lab_4/lab_4.m +++ b/lab_4/lab_4.m @@ -2,7 +2,8 @@ carrier_frequency = 2.4e9; wifi_be_subcarrier_spacing = 78.125e3; leo_altitude = 600e3; bandwidth = 20; -mcs_values = [2]; +mcs_values = [0 2 4 8 10 12 13]; +mcs_t1 = 2; apep = 1000; tx_antenna_count = 1; rx_antenna_count = 1; @@ -11,7 +12,6 @@ snrs = (0:1:40); packets_per_snr = 1024; maxNumErrors = 50; -% elevation_angle = 50; elevationAngles = [ ... linspace(10, 90, ceil(packets_per_snr / 2)), ... linspace(90, 10, floor(packets_per_snr / 2)) ... @@ -26,94 +26,18 @@ seed = 666; ntn_tdl_delay_profiles = ["A" "B" "C" "D"]; -[cfgEHT, simParameters, channel, chInfo, maxChDelay, satelliteDopplerShift, chanBW] = ... - create_baseline_configuration(ntn_tdl_delay_profiles(3), bandwidth, false, "None", ... - carrier_frequency, 0, ... - 0, leo_altitude, random_stream, ... - seed, tx_antenna_count, ... - rx_antenna_count, apep); +use_t1_as_t4 = false; +task1; +task2; -meanSlantRange = mean(slantRanges); -meanSatelliteDopplerShift = mean(dopplerShifts); -meanNormalizedCFO = meanSatelliteDopplerShift / wifi_be_subcarrier_spacing; - -disp("Mean Elevation Angle: " + meanElevationAngle + "°") -disp("Mean Slant Range: " + meanSlantRange + "m") -disp("Mean Satellite Doppler Shift: " + meanSatelliteDopplerShift + "Hz") -disp("Normalized CFO: " + meanNormalizedCFO) - -errorCounts = zeros(numel(mcs_values), numel(snrs)); -packetCounts = zeros(numel(mcs_values), numel(snrs)); -errorRates = zeros(numel(mcs_values), numel(snrs)); -cfrMagnitudesBySnr = cell(numel(mcs_values), numel(snrs)); -for imcs = 1 : numel(mcs_values) - cfgEHT.User{1}.MCS = mcs_values(imcs); - - errorCountsForMcs = zeros(1, numel(snrs)); - packetCountsForMcs = zeros(1, numel(snrs)); - errorRatesForMcs = zeros(1, numel(snrs)); - cfrMagnitudesForMcs = cell(1, numel(snrs)); - - parfor snr_idx = 1 : length(snrs) - local_channel = clone(channel); - [errorCount, packetCount, cfrMagnitudes] = simulateTransmission(cfgEHT, local_channel, maxChDelay, snrs(snr_idx), packets_per_snr, maxNumErrors, simParameters, chanBW, snr_idx, elevationAngles); - errorCountsForMcs(snr_idx) = errorCount; - packetCountsForMcs(snr_idx) = packetCount; - errorRatesForMcs(snr_idx) = errorCount / packetCount; - cfrMagnitudesForMcs{snr_idx} = cfrMagnitudes; - end - - errorCounts(imcs, :) = errorCountsForMcs; - packetCounts(imcs, :) = packetCountsForMcs; - errorRates(imcs, :) = errorRatesForMcs; - cfrMagnitudesBySnr(imcs, :) = cfrMagnitudesForMcs; -end - -markers = 'ox*sd^v> + +Qt SVG Document +MATLAB, The MathWorks, Inc. Version 26.1.0.3251617 R2026a Update 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 + + + +5 + + + +10 + + + +15 + + + +20 + + + +25 + + + +30 + + + +35 + + + +40 + + + +SNR (dB) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +10 + + + +-3 + + + +10 + + + +-2 + + + +10 + + + +-1 + + + +10 + + + +0 + + + +PER + + + +PER over SNR for APEP sweep, CBW20, NTN-TDL-C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +APEP 250 + + + +APEP 1000 + + + +APEP 4000 + + + +APEP 8000 + + + +APEP 12000 + + + + + + + diff --git a/lab_4/per_snr_apep_t22.svg b/lab_4/per_snr_apep_t22.svg new file mode 100644 index 0000000..6fb44ec --- /dev/null +++ b/lab_4/per_snr_apep_t22.svg @@ -0,0 +1,687 @@ + + +Qt SVG Document +MATLAB, The MathWorks, Inc. Version 26.1.0.3251617 R2026a Update 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 + + + +5 + + + +10 + + + +15 + + + +20 + + + +25 + + + +30 + + + +35 + + + +SNR (dB) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +10 + + + +-3 + + + +10 + + + +-2 + + + +10 + + + +-1 + + + +10 + + + +0 + + + +PER + + + +PER over SNR for APEP sweep, CBW20, NTN-TDL-C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +APEP 250 + + + +APEP 600 + + + +APEP 800 + + + +APEP 1000 + + + + + + + diff --git a/lab_4/task1.m b/lab_4/task1.m new file mode 100644 index 0000000..f85d55d --- /dev/null +++ b/lab_4/task1.m @@ -0,0 +1,98 @@ +if use_t1_as_t4 + mcs_values_t1 = mcs_values; +else + mcs_values_t1 = [2]; +end + +[cfgEHT, simParameters, channel, chInfo, maxChDelay, satelliteDopplerShift, chanBW] = ... + create_baseline_configuration(ntn_tdl_delay_profiles(3), bandwidth, false, "None", ... + carrier_frequency, 0, ... + 0, leo_altitude, random_stream, ... + seed, tx_antenna_count, ... + rx_antenna_count, apep); + +meanSlantRange = mean(slantRanges); +meanSatelliteDopplerShift = mean(dopplerShifts); +meanNormalizedCFO = meanSatelliteDopplerShift / wifi_be_subcarrier_spacing; + +disp("Mean Elevation Angle: " + meanElevationAngle + "°") +disp("Mean Slant Range: " + meanSlantRange + "m") +disp("Mean Satellite Doppler Shift: " + meanSatelliteDopplerShift + "Hz") +disp("Normalized CFO: " + meanNormalizedCFO) + +errorCounts = zeros(numel(mcs_values_t1), numel(snrs)); +packetCounts = zeros(numel(mcs_values_t1), numel(snrs)); +errorRates = zeros(numel(mcs_values_t1), numel(snrs)); +cfrMagnitudesBySnr = cell(numel(mcs_values_t1), numel(snrs)); +for imcs = 1 : numel(mcs_values_t1) + cfgEHT.User{1}.MCS = mcs_values_t1(imcs); + + errorCountsForMcs = zeros(1, numel(snrs)); + packetCountsForMcs = zeros(1, numel(snrs)); + errorRatesForMcs = zeros(1, numel(snrs)); + cfrMagnitudesForMcs = cell(1, numel(snrs)); + + parfor snr_idx = 1 : length(snrs) + local_channel = clone(channel); + [errorCount, packetCount, cfrMagnitudes] = simulateTransmission(cfgEHT, local_channel, maxChDelay, snrs(snr_idx), packets_per_snr, maxNumErrors, simParameters, chanBW, snr_idx, elevationAngles); + errorCountsForMcs(snr_idx) = errorCount; + packetCountsForMcs(snr_idx) = packetCount; + errorRatesForMcs(snr_idx) = errorCount / packetCount; + cfrMagnitudesForMcs{snr_idx} = cfrMagnitudes; + end + + errorCounts(imcs, :) = errorCountsForMcs; + packetCounts(imcs, :) = packetCountsForMcs; + errorRates(imcs, :) = errorRatesForMcs; + cfrMagnitudesBySnr(imcs, :) = cfrMagnitudesForMcs; +end + +markers = 'ox*sd^v>