task 1 should be completed now
This commit is contained in:
+55
-9
@@ -8,7 +8,7 @@ tx_antenna_count = 1;
|
||||
rx_antenna_count = 1;
|
||||
|
||||
snrs = (0:1:40);
|
||||
packets_per_snr = 250;
|
||||
packets_per_snr = 1024;
|
||||
maxNumErrors = 50;
|
||||
|
||||
% elevation_angle = 50;
|
||||
@@ -35,7 +35,6 @@ ntn_tdl_delay_profiles = ["A" "B" "C" "D"];
|
||||
|
||||
meanSlantRange = mean(slantRanges);
|
||||
meanSatelliteDopplerShift = mean(dopplerShifts);
|
||||
|
||||
meanNormalizedCFO = meanSatelliteDopplerShift / wifi_be_subcarrier_spacing;
|
||||
|
||||
disp("Mean Elevation Angle: " + meanElevationAngle + "°")
|
||||
@@ -43,17 +42,31 @@ 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] = simulateTransmission(cfgEHT, local_channel, maxChDelay, snrs(snr_idx), packets_per_snr, maxNumErrors, simParameters, chanBW, snr_idx, elevationAngles);
|
||||
|
||||
errorCounts(snr_idx) = errorCount;
|
||||
packetCounts(snr_idx) = packetCount;
|
||||
errorRates(imcs, snr_idx) = errorCount / packetCount;
|
||||
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><ph+ox*sd^v><ph+';
|
||||
@@ -66,8 +79,41 @@ grid on;
|
||||
xlabel('SNR (dB)');
|
||||
ylabel('PER');
|
||||
% task 1
|
||||
dataStr = arrayfun(@(x)sprintf('MCS %d',x), 2, 'UniformOutput', false);
|
||||
dataStr = arrayfun(@(x)sprintf('MCS %d', x), mcs_values, 'UniformOutput', false);
|
||||
% task 4
|
||||
% dataStr = arrayfun(@(x)'MCS Sweep Values: [0 2 4 8 10 12 13]', 'UniformOutput', false);
|
||||
legend(dataStr, 'Location', 'NorthEastOutside');
|
||||
title(['PER (EHT MU), ' num2str(cfgEHT.ChannelBandwidth) ', NTN-TDL-C, ' num2str(tx_antenna_count) '-by-' num2str(rx_antenna_count)]);
|
||||
|
||||
cfrMagnitudes = [];
|
||||
for snr_idx = 1 : numel(snrs)
|
||||
cfrMagnitudes = [cfrMagnitudes cfrMagnitudesBySnr{1, snr_idx}];
|
||||
end
|
||||
|
||||
%{ for testing purposes
|
||||
if ~isempty(cfrMagnitudes)
|
||||
figure;
|
||||
packetPlots = plot(cfrMagnitudes, 'Color', [0.75 0.75 0.75]);
|
||||
hold on;
|
||||
meanCfrPlot = plot(mean(cfrMagnitudes, 2), 'b', 'LineWidth', 2);
|
||||
grid on;
|
||||
xlabel("Subcarrier index");
|
||||
ylabel("|H[k]|");
|
||||
legend([packetPlots(1) meanCfrPlot], ["Packets" "Mean CFR"], 'Location', 'best');
|
||||
title("CFR magnitude for collected packets");
|
||||
end
|
||||
%}
|
||||
|
||||
% extract a representative packet for cfr plot
|
||||
representativeSnr = 25;
|
||||
representativeSnrIdx = find(snrs == representativeSnr);
|
||||
|
||||
representativeCfrs = cfrMagnitudesBySnr{1, representativeSnrIdx};
|
||||
representativeCfr = representativeCfrs(:, 1);
|
||||
|
||||
figure;
|
||||
plot(representativeCfr);
|
||||
grid on;
|
||||
xlabel("Subcarrier index");
|
||||
ylabel("|H[k]|");
|
||||
title("CFR magnitude for representative packet at 25 dB SNR");
|
||||
Reference in New Issue
Block a user