implemented task4 1-4, documentation needs to be written

This commit is contained in:
ti_mo
2026-06-26 19:07:26 +02:00
parent edbc22bcf6
commit fdf21361e9
9 changed files with 2850 additions and 16 deletions
+34 -9
View File
@@ -1,9 +1,9 @@
function [numPacketErrors, numPacketsSimulated, cfrMagnitudes, rxPower, pathLoss]= simulateTransmission(accessAnalysisResults, cfgEHT, channel, maxChDelay, snr, maxNumErrors, simParameters)
function [numPacketErrors, numPacketsSimulated, cfrMagnitudes, rxPower, pathLoss]= simulateTransmission(accessAnalysisParameters, cfgEHT, channel, maxChDelay, snr, maxNumErrors, simParameters)
numPacketErrors = 0;
numPacketsSimulated = 0;
cfrMagnitudes = [];
rxPower = zeros(size(accessAnalysisResults.elevationAngles));
pathLoss = zeros(size(accessAnalysisResults.elevationAngles));
rxPower = zeros(size(accessAnalysisParameters.elevationAngles));
pathLoss = zeros(size(accessAnalysisParameters.elevationAngles));
ofdmInfo = wlanEHTOFDMInfo('EHT-Data', cfgEHT);
ind = wlanFieldIndices(cfgEHT);
@@ -26,11 +26,11 @@ function [numPacketErrors, numPacketsSimulated, cfrMagnitudes, rxPower, pathLoss
lambda = physconst("lightspeed") / simParameters.CarrierFrequency;
includePathLoss = isfield(simParameters, 'IncludeFreeSpacePathLoss') && simParameters.IncludeFreeSpacePathLoss;
while (powerOnlySimulation || numPacketErrors < maxNumErrors) && numPacketsSimulated < numel(accessAnalysisResults.elevationAngles)
while (powerOnlySimulation || numPacketErrors < maxNumErrors) && numPacketsSimulated < numel(accessAnalysisParameters.elevationAngles)
numPacketsSimulated = numPacketsSimulated + 1;
if includePathLoss
packetDistance = accessAnalysisResults.distances(numPacketsSimulated);
packetDistance = accessAnalysisParameters.distances(numPacketsSimulated);
pathLoss(numPacketsSimulated) = 20 * log10(4 * pi * packetDistance / lambda);
else
pathLoss(numPacketsSimulated) = 0;
@@ -45,15 +45,38 @@ function [numPacketErrors, numPacketsSimulated, cfrMagnitudes, rxPower, pathLoss
tx = tx * sqrt(10^((txPower - 30) / 10)) / sqrt(stfPower);
packetElevationAngle = accessAnalysisParameters.elevationAngles(numPacketsSimulated);
if isfield(accessAnalysisParameters, "dopplerShifts") && isfinite(accessAnalysisParameters.dopplerShifts(numPacketsSimulated))
packetDopplerShift = accessAnalysisParameters.dopplerShifts(numPacketsSimulated);
else
packetDopplerShift = dopplerShiftCircularOrbit(packetElevationAngle, simParameters.SatelliteAltitude, simParameters.MobileAltitude, simParameters.CarrierFrequency);
end
if ~isfinite(packetDopplerShift)
packetDopplerShift = 0;
end
channel.SatelliteDopplerShift = packetDopplerShift;
txPad = [tx; zeros(maxChDelay, cfgEHT.NumTransmitAntennas)];
if isfield(accessAnalysisParameters, "preCompensation")
predictedDopplerShift = [];
if isnumeric(accessAnalysisParameters.preCompensation)
predictedDopplerShift = packetDopplerShift + accessAnalysisParameters.preCompensation;
elseif string(accessAnalysisParameters.preCompensation) == "ideal"
predictedDopplerShift = packetDopplerShift;
end
if ~isempty(predictedDopplerShift) && isfinite(predictedDopplerShift)
txPad = frequencyOffset(txPad, simParameters.SampleRate, -predictedDopplerShift);
end
end
if powerOnlySimulation
continue;
end
packetElevationAngle = accessAnalysisResults.elevationAngles(numPacketsSimulated);
channel.SatelliteDopplerShift = dopplerShiftCircularOrbit(packetElevationAngle, simParameters.SatelliteAltitude, simParameters.MobileAltitude, simParameters.CarrierFrequency);
reset(channel);
rx = awgn(channel(txPad) * db2mag(-pathLoss(numPacketsSimulated)), snrVal);
@@ -90,7 +113,9 @@ function [numPacketErrors, numPacketsSimulated, cfrMagnitudes, rxPower, pathLoss
rxData = rx(packetOffset + (ind.EHTData(1) : ind.EHTData(2)), :);
demodSym = wlanEHTDemodulate(rxData, "EHT-Data", cfgEHT);
demodSym = wlanEHTTrackPilotError(demodSym, chanEstimate, cfgEHT, "EHT-Data");
if ~isfield(accessAnalysisParameters, "enablePilotTracking") || accessAnalysisParameters.enablePilotTracking
demodSym = wlanEHTTrackPilotError(demodSym, chanEstimate, cfgEHT, "EHT-Data");
end
nVarEst = wlanEHTDataNoiseEstimate(demodSym(ofdmInfo.PilotIndices, :, :),pilotEstimate, cfgEHT);