Этот пример демонстрирует кластер с 19 ячейками с тороидальным переносом как описано в ITU-R M.2101-0. Перенос обеспечивает универсальную интерференцию в кластерном ребре. Все ячейки в кластере действуют в том же диапазоне частот с обслуживанием gNB в центре ячейки. Можно включить или отключить перенос, чтобы заметить, что с переносом, показатели производительности ячейки ребра становятся похожими на центральную ячейку.
Пример рассматривает эти операции в gNB и оборудовании пользователя (UE).
Этот пример модели:
Интерференция межъячейки Co-канала со всеобъемлющим моделированием для удаления краевых эффектов
Опорный сигнал демодуляции PUSCH (DM-RS) и PDSCH DM-RS
Качественное измерение канала DL UEs на основе CSI-RS получено от gNB.
Настройка одно входа одно выхода (SISO) со всенаправленными антеннами.
Потери при распространении в свободном пространстве (FSPL) и аддитивный белый Гауссов шум (AWGN).
Пример принимает, что пакеты управления, такие как присвоение UL, присвоение DL, буферный отчет о состоянии (BSR), обратная связь PDSCH, и отчет качественной характеристики канала (CQI), отправляются из полосы, то есть, без потребности ресурсов для передачи и гарантировали безошибочный прием.
Чтобы симулировать поведение сотовой сети, не вводя краевые эффекты, этот пример демонстрирует бесконечную сотовую сеть при помощи тороидального переноса. Этот рисунок показывает сетевую область 19 ячеек. В отсутствие переноса ячейка 0 из центрального кластера, отображенного красным, однородно окружается и испытывает интерференцию со всех сторон. Ячейка ребра как ячейка 15 событий сравнительно меньшая интерференция. Перенос повторяет исходный кластер шесть раз, чтобы однородно окружить центральный кластер.
Целая сетевая область, важная для симуляций, является кластером 19 ячеек (показанный полужирным).
Во всеобъемлющей модели, сигнале или интерференции от любого UE до ячейки обработан, как будто это UE находится в кластере первоначальной ячейки и gNB в любом из этих семи кластеров, как задано в ITU-R M.2101-0. Расстояния использовались для расчета потери пути от узла передатчика в к узлу приемника в минимум этих семи расстояний.
Расстояние между и
Расстояние между и , где расстояние между двумя смежными gNBs (расстояние межсайта)
Расстояние между и
Расстояние между и
Расстояние между и
Расстояние между и
Расстояние между и
Чтобы вычислить модифицированные расстояния между узлами из-за переноса, функция использует hNRNodeDistanceCalculator класс помощника. Если вы отключаете перенос, то расстояние между узлами является нормальным Евклидовым расстоянием.
Узел (gNB или UE) состоит из приложений, генерирующих трафик, слой управления линией радиосвязи (RLC), слой среднего управления доступом (MAC) и физический уровень (PHY). hNRGNB и hNRUE классы помощника создают gNB и узлы UE, соответственно, содержа RLC, MAC и слои PHY. Для получения дополнительной информации о каждом слое обратитесь к разделу 'NR Protocol Stack' в Оценке результатов деятельности Ячейки NR с примером Интегрирования Физического уровня.
Сконфигурируйте параметры симуляции в simParameters
структура.
rng('default'); % Reset the random number generator simParameters = []; % Clear the simParameters variable simParameters.NumFramesSim = 5; % Simulation time, in number of 10 ms frames simParameters.EnableWrapAround = true; % Enable wrap-around modeling simParameters.SchedulingType = 0; % Slot-based scheduling
Задайте количество UEs в каждой ячейке, приняв, что UEs имеют последовательную радиосеть временные идентификаторы (RNTIs) от 1
к simParameters.NumUEsCell
. Если вы изменяете количество UEs, необходимо гарантировать, что эти параметры симуляции являются массивами длины, равной значению simParameters.NumUEsCell
: simParameters.UEDistance
, ulPacketPeriodicity
, ulPacketSizes
, dlPacketPeriodicity
, dlPacketSizes
.
simParameters.NumUEsCell = 2; % Number of UEs in each cell simParameters.UEDistance = [150; 250]; % Distance of UE from gNB in meters simParameters.InterSiteDistance = 1732; % Distance between adjacent gNBs in meters
Установите пропускную способность канала на 5 МГц и разрядку поднесущей (SCS) к 15 кГц, как задано в разделе 5.3.2 из 3GPP TS 38.104.
simParameters.NumRBs = 25; simParameters.SCS = 15; % kHz simParameters.DLCarrierFreq = 2.635e9; % Hz simParameters.ULCarrierFreq = 2.515e9; % Hz
Примите, что UL и поставщики услуг DL имеют ту же пропускную способность канала и задают степень передачи и усиление антенны.
simParameters.DLBandwidth = 5e6; % Hz simParameters.ULBandwidth = 5e6; % Hz simParameters.UETxPower = 23; % Tx power for all the UEs in dBm simParameters.GNBTxPower = 32; % Tx power for gNBs in dBm simParameters.GNBRxGain = 8; % Receiver antenna gain at gNB in dBi
Задайте сигнал к интерференции плюс шумовое отношение (SINR) к таблице отображения CQI для частоты появления ошибочных блоков (BLER) 0,1.
simParameters.SINR90pc = [-5.46 -0.46 4.54 9.05 11.54 14.04 15.54 18.04 ...
20.04 22.43 24.93 25.43 27.43 30.43 33.43];
Задайте стратегию планирования и максимальный предел на RBS, выделенном для PUSCH и PDSCH. Предел передачи применяется только к новому PUSCH и присвоениям PDSCH, а не к повторным передачам.
simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR', and 'BestCQI' simParameters.RBAllocationLimitUL = 20; % For PUSCH simParameters.RBAllocationLimitDL = 20; % For PDSCH
Задайте ID ячейки интереса как целое число между 1 и 18, включительно. Пример показывает визуализацию и метрики для этой ячейки и центральной ячейки, ячейка 0.
simParameters.CellOfInterest = 15; % Set a value from 1 to 18. Set the value to 0 to visualize cell-0 only. validateattributes(simParameters.CellOfInterest, {'numeric'}, {'integer', 'scalar', '>=', 0, '<=', 18}, 'simParameters.CellOfInterest', 'CellOfInterest')
CQIVisualization
и RBVisualization
параметры управляют отображением визуализации CQI RBS и визуализации присвоения RB. Чтобы включить график визуализации RB, установите RBVisualization
поле к true
.
simParameters.CQIVisualization = true; simParameters.RBVisualization = false;
Обновляйте выходные метрические графики периодически, задавая NumMetricsSteps
обновления в рамках симуляции.
simParameters.NumMetricsSteps = 10;
Запишите журналы в MAT-файлы. Пример использует эти журналы для постанализа методом моделирования и визуализации.
simParameters.ParametersLogFile = 'simParameters'; % For logging the simulation parameters simParameters.SimulationLogFile = 'simulationLogs'; % For logging the simulation logs
Установите периодический UL и шаблон трафика приложения DL для UEs.
ulPacketPeriodicity = [10; 10]; % Periodicity, in ms, at which the UEs generate UL packets ulPacketSize = [2e4; 2e4]; % Size of generated UL packets, in bytes dlPacketPeriodicity = [10; 10]; % Periodicity, in ms, at which gNB generates DL packets dlPacketSize = [2e4; 2e4]; % Size of generated DL packets, in bytes
Вычислите выведенные параметры на основе первичных параметров конфигурации, заданных в предыдущем разделе, и установите некоторые специфичные для примера константы.
simParameters.DuplexMode = 0; % Frequency-division duplexing (FDD) simParameters.NumClusters = 1; simParameters.NumSitesPerCluster = 19; % Number of gNBs per cluster
Установите UE и gNB положения.
simParameters.GNBPositions = hMacrocellTopology(simParameters); simParameters.UEPositions = cell(simParameters.NumSitesPerCluster, 1); for idx = 1:simParameters.NumSitesPerCluster theta = rand(simParameters.NumUEsCell, 1)*(2*pi); % Set the UE position with respect to the gNB location simParameters.UEPositions{idx} = simParameters.GNBPositions(idx, :) + simParameters.UEDistance.*[cos(theta) sin(theta) zeros(simParameters.NumUEsCell, 1)]; end simParameters.NCellIDList = 0:simParameters.NumSitesPerCluster-1; % List of physical cell IDs
Задайте настройку ресурса CSI-RS, приняв, что все UEs измеряют качество канала на том же ресурсе CSI-RS.
simParameters.CSIRSRowNumber = 2; % Possible row numbers for single transmit antenna case are 1 and 2 simParameters.SubbandSize = 8; % Size of sub-band for CQI reporting in terms of number of RBs
Вычислите длительность паза для выбранного SCS и количества пазов в системе координат на 10 мс.
slotDuration = 1/(simParameters.SCS/15); % In ms numSlotsFrame = 10/slotDuration; % Number of slots in a 10 ms frame numSlotsSim = simParameters.NumFramesSim*numSlotsFrame; % Number of slots in the simulation
Установите интервал, в котором пример обновляет метрическую визуализацию, количество пазов. Поскольку этот пример использует гранулярность времени одного паза, MetricsStepSize
поле должно быть целым числом.
simParameters.MetricsStepSize = ceil(numSlotsSim / simParameters.NumMetricsSteps); if mod(numSlotsSim, simParameters.NumMetricsSteps) ~= 0 % Update the NumMetricsSteps parameter if it does not exactly divide NumSlotsSim simParameters.NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize); end
Задайте один логический канал в каждом UE и установите логическую настройку канала для всех узлов (UEs и gNBs) в примере.
numLogicalChannels = 1;
simParameters.LCHConfig.LCID = 4; % Logical channel ID (logical channel ID of data radio bearers starts from 4)
Задайте направление сущности RLC как 0
задавать DL только, 1
задавать UL только или 2
задавать и UL и DL.
simParameters.RLCConfig.EntityDir = 2;
Создайте конфигурационную структуру канала RLC.
rlcChannelConfigStruct.LCGID = 1; % Mapping between logical channel and logical channel group ID rlcChannelConfigStruct.Priority = 1; % Priority of each logical channel rlcChannelConfigStruct.PBR = 8; % Prioritized bitrate (PBR), in kilobytes per second, of each logical channel rlcChannelConfigStruct.BSD = 10; % Bucket size duration (BSD), in ms, of each logical channel rlcChannelConfigStruct.EntityType = simParameters.RLCConfig.EntityDir; rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID;
Установите максимальную длину модуля эксплуатационных данных (SDU) RLC, в байтах, как задано в 3GPP TS 38.323 и общее количество узлов в симуляции.
simParameters.maxRLCSDULength = 9000; simParameters.MaxReceivers = simParameters.NumSitesPerCluster*(simParameters.NumUEsCell + 1); if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % No scheduling type or slot-based scheduling rbAssignmentPlotPeriodicity = numSlotsFrame; % Update RB assignment visualization every frame (10 ms) tickGranularity = 14; simParameters.PUSCHMappingType = 'A'; simParameters.PDSCHMappingType = 'A'; else % Symbol-based scheduling rbAssignmentPlotPeriodicity = 1; % Update RB assignment visualization every slot tickGranularity = 1; simParameters.PUSCHMappingType = 'B'; simParameters.PDSCHMappingType = 'B'; end
Настройте топологию с 19 ячейками с каждой ячейкой, состоящей из одного gNB и одного UE. Для каждой ячейки создайте gNB и объекты UE, инициализируйте информацию о качестве канала для UEs и настройте логический канал в gNB и UEs. hNRGNB и hNRUE классы помощника создают gNB и узлы UE соответственно, содержа RLC, MAC и слои PHY.
gNB = cell(simParameters.NumSitesPerCluster, 1); UEs = cell(simParameters.NumSitesPerCluster, simParameters.NumUEsCell);
Создайте DL и пакетные объекты распределения UL, и инициализируйте всеобъемлющий объект калькулятора расстояния.
dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0); % 0 for DL ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1); % 1 for UL distCalc = hNRNodeDistanceCalculator(simParameters); for siteIdx = 1:simParameters.NumSitesPerCluster simParameters.NCellID = simParameters.NCellIDList(siteIdx); % Cell ID simParameters.Position = simParameters.GNBPositions(siteIdx, :); simParameters.NumUEs = simParameters.NumUEsCell; % Number of UEs in a cell % Create scheduler switch(simParameters.SchedulerStrategy) case 'RR' % Round robin scheduler scheduler = hNRSchedulerRoundRobin(simParameters); case 'PF' % Proportional fair scheduler scheduler = hNRSchedulerProportionalFair(simParameters); case 'BestCQI' % Best CQI scheduler scheduler = hNRSchedulerBestCQI(simParameters); end % Create gNB gNB{siteIdx} = hNRGNB(simParameters); addScheduler(gNB{siteIdx}, scheduler); % Add scheduler to gNB gNB{siteIdx}.PhyEntity = hNRGNBPhy(simParameters); % Create PHY layer instance configurePhy(gNB{siteIdx}, simParameters); % Configure PHY layer % Register distance calculator for wrap-around distance computations gNB{siteIdx}.DistanceCalculatorFcn = @distCalc.getDistance; setPhyInterface(gNB{siteIdx}); % Set up the interface to PHY layer for ueIdx = 1:simParameters.NumUEsCell simParameters.Position = simParameters.UEPositions{siteIdx}(ueIdx, :); % Position of UE in (x,y,z) coordinates UEs{siteIdx, ueIdx} = hNRUE(simParameters, ueIdx); UEs{siteIdx, ueIdx}.PhyEntity = hNRUEPhy(simParameters, ueIdx); % Create PHY layer instance configurePhy(UEs{siteIdx, ueIdx}, simParameters); % Configure PHY layer % Register distance calculator for wrap-around distance computations UEs{siteIdx, ueIdx}.DistanceCalculatorFcn = @distCalc.getDistance; setPhyInterface(UEs{siteIdx, ueIdx}); % Set up the interface to PHY % Set up logical channel at gNB for the UE configureLogicalChannel(gNB{siteIdx}, ueIdx, rlcChannelConfigStruct); % Set up logical channel at UE configureLogicalChannel(UEs{siteIdx, ueIdx}, ueIdx, rlcChannelConfigStruct); % Add data traffic pattern generators to gNB and UE nodes % Calculate the data rate (in kbps) of On-Off traffic pattern using % packet size (in bytes) and packet interval (in ms) ulDataRate = ceil(1000/ulPacketPeriodicity(ueIdx)) * ulPacketSize(ueIdx) * 8e-3; % Limit the size of the generated application packet to the maximum RLC % SDU size. The maximum supported RLC SDU size is 9000 bytes if ulPacketSize(ueIdx) > simParameters.maxRLCSDULength ulPacketSize(ueIdx) = simParameters.maxRLCSDULength; end % Create an object for On-Off network traffic pattern and add it to the % specified UE. This object generates the uplink data traffic on the UE ulApp = networkTrafficOnOff('PacketSize', ulPacketSize(ueIdx), 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', ulDataRate); UEs{siteIdx, ueIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, ulApp); dlDataRate = ceil(1000/dlPacketPeriodicity(ueIdx)) * dlPacketSize(ueIdx) * 8e-3; if dlPacketSize(ueIdx) > simParameters.maxRLCSDULength dlPacketSize(ueIdx) = simParameters.maxRLCSDULength; end % Create an object for On-Off network traffic pattern for the specified % UE and add it to the gNB. This object generates the downlink data % traffic on the gNB for the UE dlApp = networkTrafficOnOff('PacketSize', dlPacketSize(ueIdx), 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dlDataRate); gNB{siteIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, dlApp); end % Setup the UL and DL packet distribution mechanism hNRSetUpPacketDistribution(simParameters, gNB{siteIdx}, UEs(siteIdx, :), dlPacketDistributionObj, ulPacketDistributionObj); end
Настройте логгирование и визуализацию, задав центральную ячейку (ячейка 0) и ячейка интереса.
cellsOfInterest = unique([0; simParameters.CellOfInterest]);
numCellsOfInterest = length(cellsOfInterest); % Number of cells that the example logs and visualizes
Визуализируйте сетевую топологию
hTopologyVisualizer(simParameters);
Регистрируйте и визуализируйте PHY и метрики MAC в массивах ячеек.
simSchedulingLogger = cell(numCellsOfInterest, 1); % Cell array for PHY metrics logging and visualization simPhyLogger = cell(numCellsOfInterest, 1); visualizer = cell(numCellsOfInterest, 1); for siteIdx = 1:numCellsOfInterest simParameters.NCellID = cellsOfInterest(siteIdx); simParameters.CellOfInterest = simParameters.NCellID; % Create an object for MAC scheduling information visualization and logging simSchedulingLogger{siteIdx} = hNRSchedulingLogger(simParameters); % Create an object for PHY layer metrics logging simPhyLogger{siteIdx} = hNRPhyLogger(simParameters); % Create visualization object for MAC and PHY metrics visualizer{siteIdx} = hNRMetricsVisualizer(simParameters, 'MACLogger', simSchedulingLogger{siteIdx}, 'PhyLogger', simPhyLogger{siteIdx}); end
Симуляция является пазом запуска пазом. Для каждой ячейки, в каждом пазе, выполняются эти операции:
Запустите слои MAC и PHY gNB
Запустите слои MAC и PHY UEs
Регистрируйте и визуализируйте метрики для каждого слоя
Усовершенствуйте таймер для узлов и отправьте триггер в приложение и слои RLC каждая миллисекунда. Прикладной уровень и слой RLC выполняют их запланированные операции на основе триггера таймера на 1 мс.
slotNum = 0; numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration % Run processing loop for symbolNum = 1 : tickGranularity : numSymbolsSim if mod(symbolNum - 1, 14) == 0 slotNum = slotNum + 1; end % Because all the cells operate on the same SCS, slot durations do not vary for siteIdx = 1:simParameters.NumSitesPerCluster % For each site run(gNB{siteIdx}); % Run MAC and PHY layers of UEs for ueIdx = 1:simParameters.NumUEsCell run(UEs{siteIdx, ueIdx}); end cellIdx = find((siteIdx-1) == cellsOfInterest, 1); if ~isempty(cellIdx) % MAC logging logCellSchedulingStats(simSchedulingLogger{cellIdx}, symbolNum, gNB{siteIdx}, UEs(siteIdx, :)); % PHY logging logCellPhyStats(simPhyLogger{cellIdx}, symbolNum, gNB{siteIdx}, UEs(siteIdx, :)); end end for siteIdx = 1:simParameters.NumSitesPerCluster % Advance timer ticks for gNB and UEs by the number of symbols per slot advanceTimer(gNB{siteIdx}, tickGranularity); for ueIdx = 1:simParameters.NumUEsCell advanceTimer(UEs{siteIdx, ueIdx}, tickGranularity); end end for idx = 1:numCellsOfInterest % Visualization % Check slot boundary if symbolNum > 1 && ((simParameters.SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0)) % RB assignment visualization (if enabled) if simParameters.RBVisualization if mod(slotNum, rbAssignmentPlotPeriodicity) == 0 % Plot at slot boundary, if the update periodicity is reached plotRBGrids(simSchedulingLogger{idx}); end end % CQI grid visualization (if enabled) if simParameters.CQIVisualization if mod(slotNum, numSlotsFrame) == 0 % Plot at frame boundary plotCQIRBGrids(simSchedulingLogger{idx}); end end % If the update periodicity is reached, plot scheduler metrics and PHY metrics visualization % at slot boundary if mod(slotNum, simParameters.MetricsStepSize) == 0 plotMetrics(visualizer{idx}, slotNum); end end end end
for idx = 1:numCellsOfInterest [dlStats, ulStats] = getPerformanceIndicators(simSchedulingLogger{idx}); [logInfo.BLERLogs, logInfo.AvgBLERLogs] = getBLERLogs(simPhyLogger{idx}); % Block Error rate logs fprintf('\n\nMetrics for cell %d :\n\n', cellsOfInterest(idx)); fprintf('Peak UL throughput: %0.2f Mbps. Achieved average UL Throughput: %0.2f Mbps', ulStats(1, 1), ulStats(2, 1)); fprintf('\nPeak DL throughput: %0.2f Mbps. Achieved average DL Throughput: %0.2f Mbps', dlStats(1, 1), dlStats(2, 1)); fprintf('\nAchieved average UL Goodput: %0.2f Mbps. Achieved average DL Goodput: %0.2f Mbps', ulStats(5, 1), dlStats(5, 1)); fprintf('\nPeak UL spectral efficiency: %0.2f bits/s/Hz. Achieved average UL spectral efficiency: %0.2f bits/s/Hz ', ulStats(3, 1), ulStats(4, 1)); fprintf('\nPeak DL spectral efficiency: %0.2f bits/s/Hz. Achieved average DL spectral efficiency: %0.2f bits/s/Hz', dlStats(3, 1), dlStats(4, 1)); disp(['Block error rate for each UE in the uplink direction: [' num2str(round(logInfo.AvgBLERLogs(:, 2)', 2)) ']']); disp(['Block error rate for each UE in the downlink direction: [' num2str(round(logInfo.AvgBLERLogs(:, 1)', 2)) ']']); end
Metrics for cell 0 :
Peak UL throughput: 31.11 Mbps. Achieved average UL Throughput: 2.48 Mbps
Peak DL throughput: 31.11 Mbps. Achieved average DL Throughput: 3.19 Mbps
Achieved average UL Goodput: 2.48 Mbps. Achieved average DL Goodput: 3.10 Mbps
Peak UL spectral efficiency: 6.22 bits/s/Hz. Achieved average UL spectral efficiency: 0.50 bits/s/Hz
Peak DL spectral efficiency: 6.22 bits/s/Hz. Achieved average DL spectral efficiency: 0.64 bits/s/Hz
Block error rate for each UE in the uplink direction: [0 0]
Block error rate for each UE in the downlink direction: [0.04 0.04]
Metrics for cell 15 :
Peak UL throughput: 31.11 Mbps. Achieved average UL Throughput: 2.69 Mbps
Peak DL throughput: 31.11 Mbps. Achieved average DL Throughput: 3.33 Mbps
Achieved average UL Goodput: 2.68 Mbps. Achieved average DL Goodput: 3.24 Mbps
Peak UL spectral efficiency: 6.22 bits/s/Hz. Achieved average UL spectral efficiency: 0.54 bits/s/Hz
Peak DL spectral efficiency: 6.22 bits/s/Hz. Achieved average DL spectral efficiency: 0.67 bits/s/Hz
Block error rate for each UE in the uplink direction: [0 0.05]
Block error rate for each UE in the downlink direction: [0.04 0.06]
Для центральной ячейки (ячейка 0) и ячейка интереса, визуализация времени выполнения показывает:
Отображение значений CQI: Для получения дополнительной информации см. 'Качественное описание' Визуализации Канала фигуры в NR PUSCH FDD, Планируя пример.
Отображение присвоения сетки ресурса на UEs: 2D сетка частоты времени показывает распределение ресурсов UEs. Можно включить эту визуализацию в разделе Logging и Visualization Configuration. Для получения дополнительной информации см. 'описание' Выделения Сетки Ресурса фигуры в NR PUSCH FDD, Планируя пример.
Отображение DL и UL планирование метрических графиков: Для получения дополнительной информации см. 'Нисходящее описание' показателей производительности Планировщика фигуры в NR FDD, Планируя пример Оценки результатов деятельности.
Отображение DL и Частот появления ошибочных блоков UL: Для получения дополнительной информации смотрите 'Частоту появления ошибочных блоков (BLER) Визуализация' описание фигуры в Оценке результатов деятельности Ячейки NR с примером Интегрирования Физического уровня.
Результаты симуляции показывают, что центральная ячейка и ячейка ребра имеют подобные показатели производительности с, повторяются. Ниже результаты симуляции без переноса. Можно наблюдать значительное различие в производительности между центральной ячейкой и ячейкой ребра.
Параметры, используемые для симуляции и журналов симуляции, сохранены в MAT-файлах для анализа методом моделирования сообщения и визуализации. Параметры симуляции сохранены в MAT-файле с именем файла как значение параметра конфигурации simParameters.ParametersLogFile
. Для получения дополнительной информации смотрите, что Интерференция Межъячейки NR Моделирует пример.
% Get the logs if(simParameters.DuplexMode == 0) % FDD logInfo = struct('NCellID', [], 'DLTimeStepLogs', [], 'ULTimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []); else logInfo = struct('TimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []); end simulationLogs = cell(simParameters.NumSitesPerCluster, 1); for siteIdx = 1:numCellsOfInterest logInfo.NCellID = cellsOfInterest(siteIdx); if(simParameters.DuplexMode == 0) % FDD [logInfo.DLTimeStepLogs, logInfo.ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger{siteIdx}); else % TDD logInfo.TimeStepLogs = getSchedulingLogs(simSchedulingLogger{siteIdx}); end logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger{siteIdx}); % Scheduling assignments log [logInfo.BLERLogs, logInfo.AvgBLERLogs] = getBLERLogs(simPhyLogger{siteIdx}); % Block error rate logs simulationLogs{siteIdx, 1} = logInfo; end save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file save(simParameters.SimulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file
[1] 3GPP TS 38.104. “NR; передача радио Базовой станции (BS) и прием”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[2] 3GPP TS 38.214. “NR; процедуры Физического уровня для данных”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[3] 3GPP TS 38.321. “NR; спецификация протокола Среднего управления доступом (MAC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[4] 3GPP TS 38.322. “NR; спецификация протокола Управления линией радиосвязи (RLC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[5] 3GPP TS 38.323. “NR; спецификация Пакетного протокола сходимости данных (PDCP)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[6] 3GPP TS 38.331. “NR; спецификация протокола Радио-управления ресурсами (RRC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[7] 3GPP TR 37.910. “Исследование сам оценка к представлению IMT-2020”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.