主要内容

Evaluate 3GPP Indoor Reference Scenario

Since R2024a

This example shows how to model, simulate, and evaluate the system-level performance of a 3GPP enhanced mobile broadband (eMBB) indoor hotspot (InH) scenario, described in 3GPP TR 38.913.

Using this example, you can:

  1. Create an eMBB InH scenario representing a single floor of a building.

  2. Create and configure base stations (gNBs) and user equipment (UEs).

  3. Connect UEs to the gNBs, and add full buffer uplink (UL) and downlink (DL) application traffic between them.

  4. Configure and add a scheduler and channel model.

  5. Run the simulation, and visualize the key performance indicators (KPIs) such as cell throughput, spectral efficiency, and block error rate (BLER).

Additionally, you can use this example to perform these tasks.

eMBB InH Reference Scenario

This example models and simulates an eMBB InH scenario consisting of a single floor within a building.

These are the specifications of the scenario:

  • Floor dimensions — The scenario consists of a rectangular floor 120 meters in length and 50 meters in width. The ceiling height is uniformly set at 3 meters throughout the floor.

  • gNB distribution — Twelve gNBs, also known as sites, are strategically placed throughout the floor area. The gNBs are organized in a grid layout, each spaced 20 meters apart, to ensure complete coverage within the indoor scenario.

  • UE distribution — The scenario allocates 10 UEs to each gNB within the indoor scenario. The distribution of UEs is intended to be random, confined to the area delineated by the location of each gNB.

The indoor scenario has been modeled to cover a variety of typical indoor environments, including office spaces and shopping centers. The scenario accurately simulates common office layouts, incorporating features such as cubicles, walled private offices, expansive open areas, and corridors. Depending on your simulation requirements, you can configure the channel model as "Open" or "Mixed".

"Open" — The Open Office environment consists of a large open space with minimal obstructions, like an open-plan office area. The signal propagation is relatively uniform, and the user distribution is typically even. This scenario is used to model high-capacity areas, where you expect many users to access the network simultaneously.

"Mixed" — The Mixed Office environment is more complex, consisting of a combination of open areas and closed offices with walls and partitions. The user distribution is more varied, and the signal experiences more multipath fading and shadowing effects. Use this scenario to model typical office environments, with a mix of open spaces and enclosed rooms.

Simulation Assumptions

In this example, these assumptions apply:

  • The gNB-UE association is based on the proximity of the UE to the gNB.

  • A UE connects to the gNB that is nearest to it.

  • The UEs are randomly placed within a circular area around each gNB.

Configure and Simulate Scenario

Reset the seed value for the random number generator. The seed value controls the pattern of random number generation. To improve the accuracy of your simulation results after running the simulation, you can change the seed value, run the simulation again, and average the results over multiple simulations.

rng("default");

Specify the simulation time in terms of number of 10 ms frames.

numFrameSimulation = 2;

Initialize the wireless network simulator.

networkSimulator = wirelessNetworkSimulator.init;

Configure gNBs and UEs

Specify the frequency and bandwidth at which the carrier served by the gNB operates. The subcarrier spacing in the carrier frequency is 15 kHz.

carrierFreq = 4e9;  % In Hz
channelBW = 10e6;   % In Hz

Specify the number of gNBs in the vertical and horizontal directions.

numVerticalGNB = 2;
numHorizontalGNB = 6; 

Specify the number of transmit and receive antennas for the gNBs.

gNBNumTransmitAntennas = 32;
gNBNumReceiveAntennas = 4;

Specify the noise figure and transmit power of the gNB.

gNBNoiseFigure = 5; % In dB
gNBTxPower = 21;    % In dBm

Specify the number of UEs connected to each gNB. According to the 3GPP TR 38.913, a gNB is typically assigned 10 UEs. However, To keep simulation runtime in check, this example uses a default value of 2 UEs per gNB.

numUEsPerGNB = 2;

Specify the number of transmit and receive antennas for the UEs.

ueNumTransmitAntennas = 4;
ueNumReceiveAntennas = 4;

Specify the noise figure and transmit power of the UE.

ueNoiseFigure = 7; % In dB
ueTxPower = 23;    % In dBm

Create gNBs and UEs in each cell of the InH scenario.

scenario = h3GPPReferenceScenarios(Scenario="InH",NumUEs=numUEsPerGNB, ...
     NumGNBsHorizontal=numHorizontalGNB,NumGNBsVertical=numVerticalGNB, ...
     MaxUEsPerGNB=numUEsPerGNB);
gNBCoordinates = scenario.GNBPositions;
ueCoordinates = scenario.UEPositions;

Create gNBs and Configure Scheduler

Create the gNBs from the specified configuration. Each gNB operates one NR cell.

gNBs = nrGNB(Position=gNBCoordinates,NoiseFigure=gNBNoiseFigure, ...
     CarrierFrequency=carrierFreq,ChannelBandwidth=channelBW, ...
     NumReceiveAntennas=gNBNumReceiveAntennas, ...
     NumTransmitAntennas=gNBNumTransmitAntennas, ...
     TransmitPower=gNBTxPower,SRSPeriodicityUE=5);

Compute the total number of gNBs.

numGNBs = size(gNBs,2);

Configure the link adaptation (LA) parameters. The parameters specify a 10 percent target BLER for the UL and DL configurations.

laConfigDL = struct("StepUp",0.27,"StepDown",0.03,"InitialOffset",1,"ResetOffsetOnCSIReport",false);
laConfigUL = struct("StepUp",0.27,"StepDown",0.03,"InitialOffset",1,"ResetOffsetOnCSIReport",false);

Configure the scheduler by specifying the gNBs, maximum number of users per transmission time interval (TTI), and LA configuration.

configureScheduler(gNBs,MaxNumUsersPerTTI=10,...
    LinkAdaptationConfigDL=laConfigDL,LinkAdaptationConfigUL=laConfigUL)

Configure the UL power control parameters.

for gNBIndex = 1:numGNBs
    configureULPowerControl(gNBs(gNBIndex),Alpha=0.6)
end

Create UEs and Configure Application Traffic

Create the UEs from the specified configuration.

UEs = nrUE(Position=ueCoordinates,TransmitPower=ueTxPower, ...
     NumTransmitAntennas=ueNumTransmitAntennas, ...
     NumReceiveAntennas=ueNumReceiveAntennas,NoiseFigure=ueNoiseFigure);

Connect the UEs to the gNB. Configure and add UL and DL full buffer traffic between each gNB and its connected UEs.

startUEIndex = 1;
ueListInGNB = cell(1,numGNBs);
for gNBIndex = 1:numGNBs
    connectUE(gNBs(gNBIndex),UEs(startUEIndex:startUEIndex+numUEsPerGNB-1), ...
        CSIReportPeriodicity=160,FullBufferTraffic="on")
    ueListInGNB{gNBIndex} = UEs(startUEIndex:startUEIndex+numUEsPerGNB-1);
    startUEIndex = startUEIndex + numUEsPerGNB;
end

Add the gNBs and UEs to the wireless network simulator.

addNodes(networkSimulator,gNBs);
addNodes(networkSimulator,UEs);

Configure Channel Model

Specify the channel type as "Open" or "Mixed".

officeType = "Mixed";

Create a system-level channel model for the scenario.

channel = h38901Channel(Scenario="InH",OfficeType=officeType);
chcfg.Site = 1:numGNBs;

Specify the transmit antenna array orientation.

chcfg.TransmitArrayOrientation = [0 90 0]';

Add the channel model to the simulator.

addChannelModel(networkSimulator,@channel.channelFunction);
% Connect the simulator and channel model
connectNodes(channel,networkSimulator,chcfg,InterfererHasSmallScale=true);

Run Simulation and Visualize Metrics

Set the number of updates per second for the metric plots.

numMetricPlotUpdates = 1000; % Updates plots every millisecond

Specify the cell ID for the desired gNB to access its corresponding visualizations and metrics.

cellOfInterest = 1;

To visualize PHY and MAC metrics, create and configure the helperNRMetricsVisualizer object.

metricsVisualizer = cell(numGNBs,1);
for cellIdx = 1:numGNBs
    if cellIdx == cellOfInterest
        metricsVisualizer{cellIdx} = helperNRMetricsVisualizer(gNBs(cellIdx), ...
            ueListInGNB{cellIdx},RefreshRate=numMetricPlotUpdates, ...
            PlotSchedulerMetrics=false,PlotPhyMetrics=false,CellOfInterest=cellIdx, ...
            PlotCDFMetrics=true);
    else
        metricsVisualizer{cellIdx} = helperNRMetricsVisualizer(gNBs(cellIdx), ...
            ueListInGNB{cellIdx},RefreshRate=numMetricPlotUpdates, ...
            PlotSchedulerMetrics=false,PlotPhyMetrics=false, ...
            CellOfInterest=cellIdx,PlotCDFMetrics=false);
    end
end

Display the network topology.

networkVisualizer = wirelessNetworkViewer(ShowNodeNames=false);
showBoundary(networkVisualizer, Position=[60 25 0], BoundaryShape="rectangle",Bounds=[120 50], ...
    Name="RectangleBoundary")
addNodes(networkVisualizer,gNBs)
addNodes(networkVisualizer,UEs)

Compute the simulation time from the specified numFrameSimulation frames.

simTime = numFrameSimulation*1e-2;

Run the simulation.

run(networkSimulator,simTime)

Figure Wireless Network Viewer contains an axes object. The axes object with xlabel X-axis (m), ylabel Y-axis (m) contains 73 objects of type line. One or more of the lines displays its values using only markers These objects represent nrGNB, nrUE.

Figure ECDF of Block Error Rate (BLER) contains 2 axes objects and another object of type uigridlayout. Axes object 1 with title Average Cell DL BLER, xlabel BLER, ylabel ECDF contains 3 objects of type line, constantline. This object represents Average BLER. Axes object 2 with title Average Cell UL BLER, xlabel BLER, ylabel ECDF contains 3 objects of type line, constantline. This object represents Average BLER.

Figure ECDF of Cell Throughput contains 2 axes objects and another object of type uigridlayout. Axes object 1 with title Cell DL Throughput, xlabel Cell Throughput (Mbps), ylabel ECDF contains 3 objects of type line, constantline. This object represents Cell Throughput. Axes object 2 with title Cell UL Throughput, xlabel Cell Throughput (Mbps), ylabel ECDF contains 3 objects of type line, constantline. This object represents Cell Throughput.

Display the system KPIs for the scenario.

fprintf("\n\nMetrics for site %d:\n\n",cellOfInterest)
Metrics for site 1:
displayPerformanceIndicators(metricsVisualizer{cellOfInterest})
Peak UL throughput: 258.80 Mbps
Achieved cell UL throughput: 35.26 Mbps
Achieved UL throughput for each UE: [15.75        19.51]
Peak UL spectral efficiency: 25.88 bits/s/Hz
Achieved UL spectral efficiency for cell: 3.53 bits/s/Hz 
Block error rate for each UE in the UL direction: [0.333       0.556]

Peak DL throughput: 258.80 Mbps
Achieved cell DL throughput: 40.12 Mbps
Achieved DL throughput for each UE: [0.13        39.99]
Peak DL spectral efficiency: 25.88 bits/s/Hz
Achieved DL spectral efficiency for cell: 4.01 bits/s/Hz
Block error rate for each UE in the DL direction: [0.842       0.053]

These results display the system KPIs, which include cell throughput, spectral efficiency, and empirical cumulative distribution function (ECDF) plots for both instantaneous cell throughput and average BLER. Use the ECDF plots to determine the proportion of slots in which throughput and BLER are less than or equal to specific values indicated on the x-axis.

Display the ECDF plots of average spectral efficiency and average BLER across all gNBs.

scenario.displayScenarioPlots(metricsVisualizer,numGNBs,numFrameSimulation)

Figure ECDF of KPIs (UL/DL) contains 4 axes objects and another object of type uigridlayout. Axes object 1 with title Average DL Spectral Efficiency, xlabel DL SE (bit/Hz/s), ylabel ECDF contains 3 objects of type line, constantline. This object represents DL SE. Axes object 2 with title Average UL Spectral Efficiency, xlabel UL SE (bit/Hz/s), ylabel ECDF contains 3 objects of type line, constantline. This object represents UL SE. Axes object 3 with title Average DL BLER, xlabel BLER, ylabel ECDF contains 3 objects of type line, constantline. This object represents DL BLER. Axes object 4 with title Average UL BLER, xlabel BLER, ylabel ECDF contains 3 objects of type line, constantline. This object represents UL BLER.

Further Exploration

You can use this example to further explore these capabilities.

Compare the Wideband SINR in eMBB InH Scenario with 3GPP Reference Scenario

Refer to the CompareInHScenarioWith3GPPReferenceScenario.m script for details on the simulation scenario.

The assumptions and limitations of these simulations are:

  1. RSRP-Based UE Attachment: UEs attached via RSRP measurements (path loss + shadow fading + antenna gain) per TR 38.901, with uniform dropping, and 20x oversampling, and random selection of exactly 10 UEs per gNB from attached candidates

  2. Channel & Interference Modeling: h38901Channel with InterfererHasSmallScale=true enables small-scale fading for all 11 interfering gNBs per UE; deterministic seeding ensures reproducible realizations with aligned RNG between scenario builder and channel model

  3. Performance Metrics: PDSCH SINR measured via PacketReceptionEnded listener with temporal averaging across slots (excluding 5ms stabilization); CDF compared against 3GPP RP-180524 reference; samples with SINR < -5 dB filtered due to no handover support

  4. The simulation runs a full buffer traffic model, adopts resource allocation type 1 (RAT-1), and uses a round-robin scheduling algorithm.

The results also contain a comparison of the wideband SINR in the InH scenario with the 3GPP reference models, following the assumptions and specifications in RP-180524.

Analyze the Impact of Link Adaptation, Channel, and Antenna Configuration on KPIs

  • You can specify different antenna configurations, LA parameters, and transmit power and analyze their impact on the system KPIs such as the throughput, spectral efficiency and BLER.

  • You can also adjust the parameters such as "OfficeType" and "InterfererHasSmallScale" in the channel configuration to observe their impact on the system KPIs. When you enable the "InterfererHasSmallScale" parameter, the simulation includes small-scale fading, providing a more accurate representation of interference. However, if your priority is computational efficiency in the simulation, disabling this feature can significantly increase simulation speed.

Supporting Functions

The example uses these helper objects and functions:

  • helperNRMetricsVisualizer — Implements metrics visualization functionality

  • h3GPPReferenceScenarios — Generates InH scenario

  • h38901Channel — Implements 3GPP TR 38.901 channel model

  • h38901Scenario — Implements 3GPP TR 38.901 system-level scenario builder

  • hNRKPIManager: Implements functionality for calculating key performance indicators

References

[1] 3GPP TR 38.913. “Study on Scenarios and Requirements for Next Generation Access Technologies.” Release 17. 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] Huawei, Summary of Calibration Results for IMT-2020 Self Evaluation, 3GPP TSG RAN Meeting 79, RP-180524, 2018.

See Also

Objects

Topics