### Overview

**Testimonial:**

*“Thanks to a good manual and modular software structure, the tools are extremely easy to run.”
*

**Prof. Krzysztof Kulpa, Warsaw University of Technology, Poland**

LTE MAC Lab is a system-level simulation tool running under Matlab / Octave. It truly reflects the dynamic behaviour of a modelled HetNet RAN, Figure 1, focusing on Radio Resource Management features such as scheduling, carrier activation, handovers and link adaptation. It includes implementation of propagation (path loss, shadowing and multipath) and mobility models. LTE MAC Lab allows customers to model a wireless LTE network deployment, analyse its performance and understand dynamic mechanisms of the radio interface.

*Figure 1. LTE MAC Lab Heterogeneous Network (HetNet) scenario.*

In LTE MAC Lab a user models wireless network behaviour operating under controlled parameters and various radio resource management schemes, Figure 2. The tool allows to simulate networks with any number of base stations and with a maximum number of 5 aggregated component carriers (which gives the maximum bandwidth of up to 100 MHz). After running the simulations, transmission statistics and performance parameters are determined including system and user throughput, received power distribution, SNIR map and many more.

*Figure 2. LTE MAC architecture.*

LTE MAC Lab is implemented as a library of modular functions with well-defined interfaces, which allows a user to include its own algorithms. The tool has a 1 ms time stamp for accuracy, which can be traded for speed. There are plenty of predefined use cases and examples with well-documented functions.

## Contact Sales

We would be excited to learn about your business and technical needs and propose a product or customization to fulfill them. To receive more information about our products, request a quote or get a trial, please contact us at **sales@is-wireless.com**.

### Technical specification summary

- LTE specific features:
- Carrier Aggregation (3GPP LTE Rel. 10)
- LTE channel bands: 700 – 3000 MHz
- All LTE bandwidths: 1.4MHz, 3MHz, 5MHz, 10MHz, 15MHz, 20MHz

- Simulation features:
- Dedicated functions for user defined algorithms (i.e. open API)
- Downlink transmission, any number of HetNet base stations
- RRM Functionalities: scheduling (PF, RR, ISW proprietary), link adaptation, handover, carrier activation/deactivation
- Users Mobility Models: Random Direction Model, Random Way Point Model;

- Link model:
- Pathloss models: Modified Okumura – Hata model, 3GPP TS 36.942 Model, Winner Model, COST 231 Model;
- Multipath models: 3GPP TS 36.942 Model, Winner Model, Random Distribution Model;
- Environments: Rural, Urban, Suburban;various antenna models

- MTC simulations
- 3GPP MTC Traffic Model 1, up to 30 000 devices in single simulation
- Random Access procedure
- Real-life smart meter case

### Applications

Application |
Benefit |
Who can benefit? |
---|---|---|

MAC prototyping | LTE MAC Lab shortens the development time | ODM, Research Institute, Protocol Stack Developer |

R&D | LTE MAC Lab provides simulation framework | Research Institute |

Development of PHY layer functionalities | LTE MAC Lab serves as a reference model | Chip Manufacturers, ODM, Research Institute |

Network modeling and analysis | LTE MAC Lab allows to estimate cell-level performance | ODM, OEM, Operator |

Education | LTE MAC Lab serves as an environment to visualize LTE network operation | University, Training Company |

### Example customer experience

*Figure 4: LTE MAC Lab: performance analysis*

*Figure 5: LTE MAC Lab: coverage analysis*

*Figure 6: LTE MAC Lab: performance analysis*

### Single base station, single carrier scenario

This scenario evaluates performance of the single base station with single carrier. This scenario can be used as benchmark while comparing results from other simulations.

This script is divided into three main parts:

1. Defining network and its configuration

2. Running simulation

3. Processing the results

### Defining network configuration

Configuration for LTE MAC Lab tool is stored in object of SimulationParameters class. This class has four main methods which can be used to set parameters:

- SetSystem
- SetEnvironment
- AddUEs
- AddBaseStation

These methods can be executed in any order. We will take a look on each of them in more details, but first lets create object of this class:

```
% Initiate input parameters object
sp = SimulationParameters;
```

### Define main simulation parameters

Parameters that are not directly related to the network but rather to the simulation itself are gathered in System group. These can be set with SetSystem method.

% Number of TTIs to simulate numTTI = 1000; % Random seed of the simulation (this can be fixed number if you want to % repeat the simulations with the same random generator initial value) randomSeed = round(rand * 1e6); % SNIR mapping model snirMappingModel = 'MIESM'; % Setting given parameters sp.SetSystem(numTTI, randomSeed, snirMappingModel);

### Define environment simulation parameters

Next group of parameters are environment settings, where we can describe area that is simulated:

% Area size in pixels (resolution of the area) areaSize = 300; % Size of the single pixel in the area in meters stepSize = 1; % Pathloss model pathlossModel = 1; % Environment type environmentType = 1; % Gain of the shadowing shadowingFactor = 0.3; % Minimum coupling loss MCL = 50; % Setting given parameters sp.SetEnvironment(areaSize, stepSize, pathlossModel, environmentType, shadowingFactor, MCL);

### Define UE parameters

User Equipments can be added using single method AddUEs. You can add multiple UEs with the same parameters at once. Method can be run several times to add different groups of UEs.

% Number of UEs in this group (with the same parameters) numUE = 10; % Average height of the UEs heightUE = 1.5; % Mobility model mobilityModel = 2; % Speed in km/h speed = 0; % Multipath model multipathModel = 1; % Tx power of the UEs in dBm powerUE = 20; % Maximum number of CC max_cc_number = 1; % Adding UEs with given parameters sp.AddUEs(numUE, heightUE, mobilityModel, speed, multipathModel, powerUE, max_cc_number);

### Define eNB parameters

Last thing to do in this scenario is to define base stations. In this case this is single macro base station:

% Position of the base station position = [0.5*areaSize 0.25*areaSize]; % Height of the eNB heightBS = 30; % Output power in dBm powerBS = 46; % Antenna characteristic antennaChar = 1; % Antenna gain antennaGain = 0; % Cell ID (must be unique for each eNB) cell_id = 41; % Carrier frequency in MHz freq = 800; % FFT size (equivalent to bandwidth) fft_size = 512; % Scheduling algorithm scheduler = 1; % Adding base station with given parameters sp.AddBaseStation(position, heightBS, powerBS, antennaChar, antennaGain, cell_id, freq, fft_size, scheduler);

### Running simulation

When all parameters are set we are ready to perform simulation. This is done with single function SysLabSimulate which returns raw statistics. These will be processed in the next step.

stat = SysLabSimulate(sp);

TTI = 0 0% TTI = 100 10% TTI = 200 20% TTI = 300 30% TTI = 400 40% TTI = 500 50% TTI = 600 60% TTI = 700 70% TTI = 800 80% TTI = 900 90% TTI = 1000 100%

### Processing results

LTE MAC Lab offers different functions for processing results. In this scenario we will focus on displaying network overview.

### Rx Power

In the first figure we will show received power at each position in the defined area.

[ ~, highest_rx ] = RxPower( stat ); figure('Name', 'Received power'); mesh(highest_rx); xlabel('X coordinate'); ylabel('Y coordinate'); zlabel('Received power [dBm]'); title('Received power'); colorbar;

### Display eNB and UE positions

You can also preview where UEs were placed. Different random seeds value will affect this position, so you can run multiple instances of the simulation and average the results to get more accurate results.

[ ~, posx, posy] = UsersPositions( stat ); figure('Name', 'UE and eNB positions'); plot(posx, posy, 'x', 'LineWidth', 3); hold on; plot(stat(1).base_stations(1).position(2), stat(1).base_stations(1).position(1), 'rs', 'LineWidth', 2); axis([0 300 0 300]); axis square; legend('UEs', 'eNB'); xlabel('X coordinate'); ylabel('Y coordinate'); title('UE and eNB positions');

### Single base station, Carrier Aggregation(two carriers) scenario

This scenario evaluates performance of the single base station with two component carriers.

This script is divided into three main parts:

1. Defining network and its configuration

2. Running simulation

3. Processing the results

### Defining network configuration

Configuration for LTE MAC Lab tool is stored in object of SimulationParameters class. This class has four main methods which can be used to set parameters:

- SetSystem
- SetEnvironment
- AddUEs
- AddBaseStation

These methods can be executed in any order. We will take a look on each of them in more details, but first lets create object of this class:

```
% Initiate input parameters object
sp = SimulationParameters;
```

### Define main simulation parameters

Parameters that are not directly related to the network but rather to the simulation itself are gathered in System group. These can be set with SetSystem method.

% Number of TTIs to simulate numTTI = 1000; % Random seed of the simulation (this can be fixed number if you want to % repeat the simulations with the same random generator initial value) randomSeed = round(rand * 1e6); % SNIR mapping model snirMappingModel = 'MIESM'; % Setting given parameters sp.SetSystem(numTTI, randomSeed, snirMappingModel);

### Define environment simulation parameters

Next group of parameters are environment settings, where we can describe area that is simulated:

% Area size in pixels (resolution of the area) areaSize = 300; % Size of the single pixel in the area in meters stepSize = 1; % Pathloss model pathlossModel = 1; % Environment type environmentType = 1; % Gain of the shadowing shadowingFactor = 0.3; % Minimum coupling loss MCL = 50; % Setting given parameters sp.SetEnvironment(areaSize, stepSize, pathlossModel, environmentType, shadowingFactor, MCL);

### Define UE parameters

User Equipments can be added using single method AddUEs. You can add multiple UEs with the same parameters at once. Method can be run several times to add different groups of UEs.

% Number of UEs in this group (with the same parameters) numUE = 10; % Average height of the UEs heightUE = 1.5; % Mobility model mobilityModel = 2; % Speed in km/h speed = 0; % Multipath model multipathModel = 1; % Tx power of the UEs in dBm powerUE = 20; % Maximum number of CC max_cc_number = 2; % Adding UEs with given parameters sp.AddUEs(numUE, heightUE, mobilityModel, speed, multipathModel, powerUE, max_cc_number);

### Define eNB parameters

Last thing to do in this scenario is to define base stations. In this case this is single macro base station:

% Position of the base station position = [0.5*areaSize 0.25*areaSize]; % Height of the eNB heightBS = 30; % Output power in dBm powerBS = 46; % Antenna characteristic antennaChar = 1; % Antenna gain antennaGain = 0; % Cell ID (must be unique for each eNB) cell_id = 41; % Carrier frequency in MHz freq = [800 830]; % FFT size (equivalent to bandwidth) fft_size = [512 512]; % Scheduling algorithm scheduler = 1; % Adding base station with given parameters sp.AddBaseStation(position, heightBS, powerBS, antennaChar, antennaGain, cell_id, freq, fft_size, scheduler);

### Running simulation

When all parameters are set we are ready to perform simulation. This is done with single function SysLabSimulate which returns raw statistics. These will be processed in the next step.

```
% Run simulation
stat = SysLabSimulate(sp);
```

TTI = 0 0% TTI = 100 10% TTI = 200 20% TTI = 300 30% TTI = 400 40% TTI = 500 50% TTI = 600 60% TTI = 700 70% TTI = 800 80% TTI = 900 90% TTI = 1000 100%

### Processing results

LTE MAC Lab offers different functions for processing results. In this scenario we will focus on displaying throughputs for eNB and UEs.

### eNB throughput

Results of the simulation are raw snapshots which require postprocessing. To calculate CDF of eNB throughput we can use function BS_DL_Tput_CDF:

% calculate CDF of eNB throughput [~, BS_DL_Tput_CDF_x , BS_DL_Tput_CDF_y ] = BS_DL_Tput_CDF ( stat, 10 ); % plot eNB throughput figure; plot(BS_DL_Tput_CDF_x, BS_DL_Tput_CDF_y, '-s'); title('eNB throughput CDF'); xlabel('Throughput [Mbps]'); ylabel('CDF'); grid on; [~, UE_DL_Tput_CDF_x , UE_DL_Tput_CDF_y ] = UE_DL_Tput_CDF ( stat, 10 );

### UE throughput

To calculate CDF of UEs throughput we can use function UE_DL_Tput_CDF:

% plot UE throughput figure; plot(UE_DL_Tput_CDF_x, UE_DL_Tput_CDF_y, '-s'); title('Average UE throughput CDF'); xlabel('Throughput [Mbps]'); ylabel('CDF'); grid on;

### HetNet(two base stations), single carrier scenario

This scenario evaluates performance of the two base stations with single carrier.

This script is divided into three main parts:

1. Defining network and its configuration

2. Running simulation

3. Processing the results

### Defining network configuration

Configuration for LTE MAC Lab tool is stored in object of SimulationParameters class. This class has four main methods which can be used to set parameters:

- SetSystem
- SetEnvironment
- AddUEs
- AddBaseStation

These methods can be executed in any order. We will take a look on each of them in more details, but first lets create object of this class:

```
% Initiate input parameters object
sp = SimulationParameters;
```

### Define main simulation parameters

Parameters that are not directly related to the network but rather to the simulation itself are gathered in System group. These can be set with SetSystem method.

% Number of TTIs to simulate numTTI = 1000; % Random seed of the simulation (this can be fixed number if you want to % repeat the simulations with the same random generator initial value) randomSeed = round(rand * 1e6); % SNIR mapping model snirMappingModel = 'MIESM'; % Setting given parameters sp.SetSystem(numTTI, randomSeed, snirMappingModel);

### Define environment simulation parameters

Next group of parameters are environment settings, where we can describe area that is simulated:

% Area size in pixels (resolution of the area) areaSize = 300; % Size of the single pixel in the area in meters stepSize = 1; % Pathloss model pathlossModel = 1; % Environment type environmentType = 1; % Gain of the shadowing shadowingFactor = 0.3; % Minimum coupling loss MCL = 50; % Setting given parameters sp.SetEnvironment(areaSize, stepSize, pathlossModel, environmentType, shadowingFactor, MCL);

### Define UE parameters

User Equipments can be added using single method AddUEs. You can add multiple UEs with the same parameters at once. Method can be run several times to add different groups of UEs.

% Number of UEs in this group (with the same parameters) numUE = 10; % Average height of the UEs heightUE = 1.5; % Mobility model mobilityModel = 2; % Speed in km/h speed = 0; % Multipath model multipathModel = 1; % Tx power of the UEs in dBm powerUE = 20; % Maximum number of CC max_cc_number = 1; % Adding UEs with given parameters sp.AddUEs(numUE, heightUE, mobilityModel, speed, multipathModel, powerUE, max_cc_number);

### Define eNB parameters

Last thing to do in this scenario is to define base stations. In this case we have two eNB macro base station and pico base station (small cell):

% Position of the base station position = [0.5*areaSize 0.25*areaSize]; % Height of the eNB heightBS = 30; % Output power in dBm powerBS = 46; % Antenna characteristic antennaChar = 1; % Antenna gain antennaGain = 0; % Cell ID (must be unique for each eNB) cell_id = 41; % Carrier frequency in MHz freq = 800; % FFT size (equivalent to bandwidth) fft_size = 512; % Scheduling algorithm scheduler = 1; % Adding base station with given parameters sp.AddBaseStation(position, heightBS, powerBS, antennaChar, antennaGain, cell_id, freq, fft_size, scheduler); % Position of the base station position = [0.5*areaSize 0.75*areaSize]; % Height of the eNB heightBS = 30; % Output power in dBm powerBS = 30; % Antenna characteristic antennaChar = 1; % Antenna gain antennaGain = 0; % Cell ID (must be unique for each eNB) cell_id = 42; % Carrier frequency in MHz freq = 800 ; % FFT size (equivalent to bandwidth) fft_size = 512; % Scheduling algorithm scheduler = 1; % Adding base station with given parameters sp.AddBaseStation(position, heightBS, powerBS, antennaChar, antennaGain, cell_id, freq, fft_size, scheduler);

### Running simulation

When all parameters are set we are ready to perform simulation. This is done with single function SysLabSimulate which returns raw statistics. These will be processed in the next step.

```
% Run simulation
stat = SysLabSimulate(sp);
```

TTI = 0 0% TTI = 100 10% TTI = 200 20% TTI = 300 30% TTI = 400 40% TTI = 500 50% TTI = 600 60% TTI = 700 70% TTI = 800 80% TTI = 900 90% TTI = 1000 100%

### Processing results

LTE MAC Lab offers different functions for processing results. In this scenario we will focus on displaying both network overview and throughputs for eNB and UEs.

### Rx Power

In the first figure we will show received power at each position in the defined area.

[ ~, highest_rx ] = RxPower( stat ); figure('Name', 'Received power'); mesh(highest_rx); xlabel('X coordinate'); ylabel('Y coordinate'); zlabel('Received power [dBm]'); title('Received power'); colorbar;

### Display eNB and UE positions

You can also preview where UEs were placed. Different random seeds value will affect this position, so you can run multiple instances of the simulation and average the results to get more accurate results.

[ ~, posx, posy] = UsersPositions( stat ); figure('Name', 'UE and eNB positions'); plot(posx, posy, 'x', 'LineWidth', 3); hold on; plot(stat(1).base_stations(1).position(2), stat(1).base_stations(1).position(1), 'rs', 'LineWidth', 2); plot(stat(1).base_stations(2).position(2), stat(1).base_stations(2).position(1), 'gs', 'LineWidth', 2); axis([0 300 0 300]); axis square; legend('UEs', 'macro eNB', 'pico eNB'); xlabel('X coordinate'); ylabel('Y coordinate'); title('UE and eNB positions');

### eNB throughput

Results of the simulation are raw snapshots which require postprocessing. To calculate CDF of eNB throughput we can use function BS_DL_Tput_CDF:

% calculate CDF of eNB throughput [~, BS_DL_Tput_CDF_x_macro , BS_DL_Tput_CDF_y_macro ] = BS_DL_Tput_CDF ( stat, 10, 1 ); [~, BS_DL_Tput_CDF_x_pico , BS_DL_Tput_CDF_y_pico ] = BS_DL_Tput_CDF ( stat, 10, 2 ); % plot eNB throughput figure; plot(BS_DL_Tput_CDF_x_macro, BS_DL_Tput_CDF_y_macro, '-s', BS_DL_Tput_CDF_x_pico, BS_DL_Tput_CDF_y_pico, '-d');

title('eNB throughput CDF'); legend('macro eNB', 'pico eNB'); xlabel('Throughput [Mbps]'); ylabel('CDF'); grid on;

### UE throughput

To calculate CDF of UEs throughput we can use function UE_DL_Tput_CDF:

[~, UE_DL_Tput_CDF_x , UE_DL_Tput_CDF_y ] = UE_DL_Tput_CDF ( stat, 10 ); % plot UE throughput figure; plot(UE_DL_Tput_CDF_x, UE_DL_Tput_CDF_y, '-s'); title('Average UE throughput CDF'); xlabel('Throughput [Mbps]'); ylabel('CDF'); grid on;

### HetNet(two base stations), Carrier Aggregation(two carriers) scenario

This scenario evaluates performance of the two base stations, each with two carriers.

This script is divided into three main parts:

1. Defining network and it’s configuration

2. Running simulation

3. Processing the results

### Defining network configuration

- SetSystem
- SetEnvironment
- AddUEs
- AddBaseStation

```
% Initiate input parameters object
sp = SimulationParameters;
```

### Define main simulation parameters

Parameters that are not directly related to the network but rather to the simulation itself are gathered in System group.

These can be set with SetSystem method.

% Number of TTIs to simulate numTTI = 1000; % Random seed of the simulation (this can be fixed number if you want to % repeat the simulations with the same random generator initial value) randomSeed = 8631; % SNIR mapping model snirMappingModel = 'MIESM'; % Setting given parameters sp.SetSystem(numTTI, randomSeed, snirMappingModel);

### Define environment simulation parameters

Next group of parameters are environment settings, where we can describe area that is simulated:

### Define UE parameters

User Equipments can be added using single method AddUEs. You can add multiple UEs with the same parameters at once. Method

can be run several times to add different groups of UEs.

% Number of UEs in this group (with the same parameters) numUE = 10; % Average height of the UEs heightUE = 1.5; % Mobility model mobilityModel = 2; % Speed in km/h speed = 0; % Multipath model multipathModel = 1; % Tx power of the UEs in dBm powerUE = 20; % Maximum number of CC - allow users to use two component carriers max_cc_number = 2; % Adding UEs with given parameters sp.AddUEs(numUE, heightUE, mobilityModel, speed, multipathModel, powerUE, max_cc_number);

### Define eNB parameters

Last thing to do in this scenario is to define base stations. In this case we have two eNB macro base station and pico

base station (small cell):

% Position of the base station position = [0.5*areaSize 0.25*areaSize]; % Height of the eNB heightBS = 30; % Output power in dBm powerBS = 46; % Antenna characteristic antennaChar = 1; % Antenna gain antennaGain = 0; % Cell ID (must be unique for each eNB) cell_id = 41; % Carrier frequency in MHz for each of the carriers freq = [800 1800]; % FFT size (equivalent to bandwidth) for each of the carriers fft_size = [512 512]; % Scheduling algorithm scheduler = 1; % Adding base station with given parameters sp.AddBaseStation(position, heightBS, powerBS, antennaChar, antennaGain, cell_id, freq, fft_size, scheduler); % Position of the base station position = [0.5*areaSize 0.75*areaSize]; % Height of the eNB heightBS = 30; % Output power in dBm powerBS = 30; % Antenna characteristic antennaChar = 1; % Antenna gain antennaGain = 0; % Cell ID (must be unique for each eNB) cell_id = 42; % Carrier frequency in MHz for each of the carriers freq = [800 1800]; % FFT size (equivalent to bandwidth) for each of the carriers fft_size = [512 512]; % Scheduling algorithm scheduler = 1; % Adding base station with given parameters sp.AddBaseStation(position, heightBS, powerBS, antennaChar, antennaGain, cell_id, freq, fft_size, scheduler);

### Running simulation

```
% Run simulation
stat = SysLabSimulate(sp);
```

TTI = 100 10%

TTI = 200 20%

TTI = 300 30%

TTI = 400 40%

TTI = 500 50%

TTI = 600 60%

TTI = 700 70%

TTI = 800 80%

TTI = 900 90%

TTI = 1000 100%

### Processing results

LTE MAC Lab offers different functions for processing results. In this scenario we will focus on displaying both network

overview and throughputs for eNB and UEs.

### Rx Power

In the first figure we will show received power at each position in the defined area.

[ ~, highest_rx ] = RxPower( stat ); figure('Name', 'Received power'); mesh(highest_rx); xlabel('X coordinate'); ylabel('Y coordinate'); zlabel('Received power [dBm]'); title('Received power'); colorbar;

### Display eNB and UE positions

You can also preview where UEs were placed. Different random seeds value will affect this position, so you can run

multiple instances of the simulation and average the results to get more accurate results.

[ ~, posx, posy] = UsersPositions( stat ); figure('Name', "'UE and eNB positions'); plot(posx, posy, 'x', 'LineWidth', 3); hold on; plot(stat(1).base_stations(1).position(2), stat(1).base_stations(1).position(1), 'rs', 'LineWidth', 2); plot(stat(1).base_stations(2).position(2), stat(1).base_stations(2).position(1), 'gs', 'LineWidth', 2); axis([0 300 0 300]); axis square; legend('UEs', 'macro eNB', 'pico eNB'); xlabel('X coordinate'); ylabel('Y coordinate'); title('UE and eNB positions');

### eNB throughput

Results of the simulation are raw snapshots which require postprocessing. To calculate CDF of eNB throughput we can use

function BS_DL_Tput_CDF:

% calculate CDF of eNB throughput [~, BS_DL_Tput_CDF_x_macro , BS_DL_Tput_CDF_y_macro ] = BS_DL_Tput_CDF ( stat, 10, 1 ); [~, BS_DL_Tput_CDF_x_pico , BS_DL_Tput_CDF_y_pico ] = BS_DL_Tput_CDF ( stat, 10, 2 ); % plot eNB throughput figure; plot(BS_DL_Tput_CDF_x_macro, BS_DL_Tput_CDF_y_macro, '-s', BS_DL_Tput_CDF_x_pico, BS_DL_Tput_CDF_y_pico, '-d'); title('eNB throughput CDF'); legend('macro eNB', 'pico eNB'); xlabel('Throughput [Mbps]'); ylabel('CDF'); grid on;

### UE throughput

To calculate CDF of UEs throughput we can use function UE_DL_Tput_CDF:

[~, UE_DL_Tput_CDF_x , UE_DL_Tput_CDF_y ] = UE_DL_Tput_CDF ( stat, 10 ); % plot UE throughput figure; plot(UE_DL_Tput_CDF_x, UE_DL_Tput_CDF_y, '-s'); title('Average UE throughput CDF'); xlabel('Throughput [Mbps]'); ylabel('CDF'); grid on;

### Introduction

As number of devices in network constantly increases collisions during Random Access procedure occure more frequently. LTE MAC Lab offers functionality to analyze how network behaves in presence of many devices. In this script we will show ho to verify collision probability if there are 1000-10000 devices in the network.

### Setting simulation parameters

Let’s start by loading default simulation parameters for Random Access procedure

input_parameters = RandomAccessParameters;

%Output values should not be visualised – we will use and plot custom output data

output_settings = {‘none‘};

%Set number of measurements points

N = 7;

To get proper results we should run several simulations with the same parameters and average the results (to avoid getting results for some very specific initial state)

%Set number of simulations to be averaged

averages = 5;

%Set the range of measurements

number_of_terminals = round(linspace(1000, 10000, N));

%Initialize output vector

collisions = zeros(1, N);

### Executing simulations

When all parameters are set we can execute simulations for all settings.

for j = 1:averages % For all defined numbers of terminals for i = 1:N %Change number of terminals in the input parameters input_parameters.mobility.numberOfTerminals = number_of_terminals(i); %Run simulation results = RandomAccessSimulation( input_parameters, output_settings ); %Store results collisions(i) = collisions(i) + results.dynamic_part.total_collisions / averages; end end

### Displaying results

When calculations are done we can display the results

%Plot the results h_col = figure('Name', 'Collision analysis'); plot(number_of_terminals, collisions, '-s'); grid on; xlabel('Number of terminals'); ylabel('Number of collisions'); title('Collisions vs number of terminals');

Above plot shows number of collisions during random access procedure. As you can see for relatively small number of terminals (1000) only few collisions occur. As one can expect number of collisions increase with increasing number of devices (it becomes more probable that two or devices will transmit in the same slot). For 10000 terminals approximately 160 collisions occur.