DeepMIMO 5G NR
Table of Contents
DeepMIMO 5G NR
-
Generates datasets that are compatible with the 3GPP 5G NR CDL channel model
-
Supports all FR1/FR2 5G NR numerologies in 3GPP release 15,16, and 17
-
Generates the channels between BSs and UEs
-
Generates the channels between BSs and BSs (enabling integrated access-backhaul, RIS, etc.)
-
Allows for multiple antennas at both the BSs and UEs
- Allows for changing panel orientations at the BS and UEs
-
Outputs path parameters, path-loss, distances, among other possible outputs
-
Outputs transmitter/receiver locations
-
Available in Matlab – Requires 5G Toolbox
How Does it Work?
DeepMIMO 5G NR dataset generator processes the input ray-tracing file based on the the parameters’ values specified in the DeepMIMO parameters file to generate the output dataset
DeepMIMO 5G NR generates channel matrices based on the Clustered Delay Line (CDL) channel model defined in 3GPP 38.901 with site-specific statistical distribution parameters obtained from the accurate 3D ray-tracing simulator Remcom Wireless InSite
Generating site-specific channel datasets is essential for several MIMO/machine learning applications
Check the detailed documentation below for more information about the DeepMIMO 5G NR parameters and outputs
Note: This version requires MATLAB 2020B or newer version along with the 5G Toolbox since the channels generation process involves this toolbox
Download and Installation
Step 1: (Generator scripts)
- Download DeepMIMO 5GNR MATLAB generator scripts.
- Extract the file DeepMIMO-5GNR.zip
Step 2: (Scenario)
- Select and download a scenario from the scenarios page.
- Extract scenario folder into the path DeepMIMO-5GNR/Raytracing_scenarios/
Step 3: (Parameter Configuration)
- Configure DeepMIMO parameters in parameters.m file.
Step 4: (Data Generation)
- Edit and run DeepMIMO_Dataset_Generator.m to configure and generate the dataset.
Input Parameters
scenario string
Name of the scenario to be loaded. To check and download available scenarios, please check the scenarios page.
scene_first, scene_last integers
[For dynamic scenarios] Determines the range of dynamic scenario scenes to be loaded [scene_first, scene_last]
active_BS integer array of active BSs
The ID of the basestations to be included in the dataset. The basestation IDs can be selected from the scenario description. In the final dataset, the activated basestations IDs are renumbered in the same order starting from 1 to the number of active basestations.
active_user_first, active_user_last integers
The range of rows are determined by these parameters.
Specifically, the row of users with the ID in the range [active_user_first, active_user_last] are selected.
row_subsampling float in the range (0, 1]
This parameter determines the ratio of the rows to be activated within the interval [active_user_first, active_user_last].
Speficially, it randomly samples round(row_subsampling*(active_user_last-active_user_first)) rows within the given interval.
The value 1 activates all the rows within the interval.
user_subsampling float in the range (0,1)
This parameter determines the ratio of the users to be activated within the active rows determined by the parameters user_subsampling, active_user_first and active_user_last. In each row, it allows random sampling of round(user_subsampling*number_of_users_in_row) users for activation.
The value 1 activates all the users within the active rows.
enable_BS2BSchannels boolean
Enable (1) or disable (0) generation of the channels between basestations
num_paths integer in [1, 25]
Maximum number of paths to be considered (a value between 1 and 25), e.g., choose 1 if you are only interested in the strongest path
CDL_5G.NRB integer
Number of NR resource blocks.
CDL_5G.SCS integer
Subcarrier spacing in kHz
OFDM_limit,OFDM_sampling_factor integers
The constructed channels will be calculated only at the sampled subcarriers to reduce the size of the dataset. The first OFDM_limit subcarriers are subsampled with OFDM_sampling_factor spacing between the selected subcarriers.
- For OFDM_limit = 64 and OFDM_sampling_factor = 8, the subcarriers {1, 9, 17, 26, 33, …} are subsampled from the available subcarriers {1, 2, …, 64}.
Note: The number of total subcarriers for the given NRB value can be determined by 12*NRB since each resource block occupies 12 subcarriers.
- To keep all the subcarrier samples, select OFDM_limit = CDL_5G.NRB*12 and OFDM_sampling_factor=1.
- To keep the first subcarrier of each resource block, select OFDM_limit = CDL_5G.NRB*12 and OFDM_sampling_factor=12.
CDL_5G.Velocity float or float array
User terminal velocity in km/h.
The maximum Doppler shift of the channel will be determined from the velocity. There are two options for the selection of this parameters:
(i) Fixed: Select a scalar value.
(ii) Random: For random speed selection of each user sample, set it to a float array of [min_vel, max_vel]. The value will take a uniform random value in (min_vel, max_vel).
CDL_5G.UTDirectionOfTravel float array or float matrix
User direction of travel.
There are two options for the selection of this parameters:
(i) Fixed: User travel direction in degrees corresponding to [azimuth; zenith]. E.g., [0; 90] corresponds to +x in the global coordinates.
(ii) Random: If a 2×2 matrix of [min_az, max_az; min_zen, max_zen] is given it will be uniformly randomly sampled for each user. Specifically, each user will have a random azimuth and zenith pair in (min_az, max_az) and (min_zen, max_zen), respectively.
CDL_5G.num_slots integer
Number of consecutive OFDM slots to be sampled. Based on this parameter, 14*num_slots time samples will be returned.
CDL_5G.KFactorFirstCluster float
The LOS path (if there is any in the ray-tracing) is split into Rician paths with the K-factor.
- 13.3dB is the CDL-D channel K factor given in 3GPP 38.901 7.7.1-4.
- 22dB is the CDL-E channel K factor given in 3GPP 38.901 7.7.1-5.
CDL_5G.XPR float
Cross-polarization power ratio in dB. The values defined in 3GPP 38.901 for the CDL channels are given by
- CDL-A: 10
- CDL-B: 8
- CDL-C: 7
- CDL-D: 11
- CDL-E: 8
CDL_5G.bsArrayOrientation float array
Azimuth and elevation of basestation antenna orientation in degrees.
For azimuth, 0 degree is array look direction +x, 90 degrees is +y.
If different orientations are desired for multiple active antennas, it can be set to a (number of active BSs) x 2 matrix of values. The orientation of each active basestation will be determined by the corresponding row.
CDL_5G.ueArrayOrientation float array
Azimuth and elevation of user antenna orientation in degrees.
For azimuth, 0 degree is array look direction +x, 90 degrees is +y.
If a random orientation for each UE antenna is desired, set it to [azimuth_min, azimuth_max, elevation_min, elevation_max]. The orientation of each antenna will be randomly determined by a uniform random variable between the corresponding min and max values.
CDL_5G.bsAntSize integer array
Number of rows and columns in the uniform planar array (UPA) adopted as the basestation antenna.
If different antenna sizes are desired for different active basestations, it should be set to a (number of active BSs) x 2 matrix of values. Each row denotes the size of the corresponding active basestation.
CDL_5G.ueAntSize integer array
Number of rows and columns in the uniform planar array (UPA) adopted as the user antenna.
CDL_5G.polarization boolean
BS and UE antenna polarization selection.
(0) Single polarization: Only a single antenna element (with the same polarization) is placed on UPA for each antenna element.
(1) Cross polarized antennas: 2 cross polarized antennas are placed on UPA for each antenna element in the array. In this case, there will be twice the number of antennas determined by ueAntSize and bsAntSize parameters.
Example: If bsAntSize = [4,8] and polarization is 1, the transmitter will have 64 antennas.
CDL_5G.customAntenna boolean
A parameter to support custom antenna design for user and basestation arrays.
(0) The parameters CDL_5G.bsAntSize and CDL_5G.ueAntSize will be activated for a UPA design.
(1) The antennas defined by using the Matlab Phased Array Toolbox on the variables CDL_5G.bsCustomAntenna and CDL_5G.ueCustomAntenna will be utilized in the simulations.
CDL_5G.bsCustomAntenna Matlab Phased Array Object
A custom basestation antenna defined with the MATLAB’s Phased Array Toolbox. Different antenna shapes and spacing can be implemented with this property. This object will only be utilized if CDL_5G.customAntenna parameter is selected as 1.
To define different antennas for different active basestations, set a cell array of Phased Array Objects. Each phased array will be added to the corresponding active basestation.
CDL_5G.ueCustomAntenna Matlab Phased Array Object
A custom user antenna defined with the MATLAB’s Phased Array Toolbox. Different antenna shapes and spacing can be implemented with this property. This object will only be utilized if CDL_5G.customAntenna parameter is selected as 1.
saveDataset boolean
Autosaving option for the dataset.
(1) The generated dataset will be saved to the file ‘/DeepMIMO_dataset/dataset_i.mat’
(0) The generated dataset will only be returned but not saved.
Output Parameters
Output Variables of Basestation i – User j
Channel Matrix
DeepMIMO_dataset{i}.user{j}.channel
Type and Dimensions: Float matrix of size (number of time samples) x (number of RX antennas) x (number of TX antennas) x (number of OFDM subcarriers)
Description: The channel matrix between basestation i and user j. Number of time samples are determined as 14 x CDL_5G.num_slots.
Ray-tracing Path Parameters
DeepMIMO_dataset{i}.user{j}.params
Type and Dimensions: Structure
Description: The parameters of the ray tracing is provided within the struct. Specifically, for each path
- Angle-of-Arrival
- Angle-of-Departure
- Delay Spread
- Time of arrival
- …
are provided in this struct.
Line-of-Sight Status
DeepMIMO_dataset{i}.user{j}.LoS_status
Type and Dimensions: Integer of values {-1, 0, 1}
Description: The variable that indicates the existence of the LOS path in the channel.
The values correspond to
(1): LoS exists
(0): NLoS only
(-1): No paths (Full blockage)
TX-RX Distance
DeepMIMO_dataset{i}.user{j}.distance
Type and Dimensions: Float
Description: The Euclidian distance between the RX and TX locations in meters.
Path loss
DeepMIMO_dataset{i}.user{j}.Pathloss
Type and Dimensions: Float
Description: The combined path-loss of the channel between the RX and TX in dB.
User Location
DeepMIMO_dataset{i}.user{j}.loc
Type and Dimensions: Float array of 3 dimensions
Description: The Euclidian location of the user in the form of [x, y, z].
Basestation Location
DeepMIMO_dataset{i}.loc
Type and Dimensions: Float array of 3 dimensions
Description: The Euclidian location of the user in the form of [x, y, z].
Output Variables of Basestation i – User j at Scene s
Channel Matrix
DeepMIMO_dataset{s}{i}.user{j}.channel
Type and Dimensions: Float matrix of size (number of time samples) x (number of RX antennas) x (number of TX antennas) x (number of OFDM subcarriers)
Description: The channel matrix between basestation i and user j. Number of time samples are determined as 14 x CDL_5G.num_slots.
Ray-tracing Path Parameters
DeepMIMO_dataset{s}{i}.user{j}.params
Type and Dimensions: Structure
Description: The parameters of the ray tracing is provided within the struct. Specifically, for each path
- Angle-of-Arrival
- Angle-of-Departure
- Delay Spread
- Time of arrival
- …
are provided in this struct.
Line-of-Sight Status
DeepMIMO_dataset{s}{i}.user{j}.LoS_status
Type and Dimensions: Integer of values {-1, 0, 1}
Description: The variable that indicates the existence of the LOS path in the channel.
The values correspond to
(1): LoS exists
(0): NLoS only
(-1): No paths (Full blockage)
TX-RX Distance
DeepMIMO_dataset{s}{i}.user{j}.distance
Type and Dimensions: Float
Description: The Euclidian distance between the RX and TX locations in meters.
Path loss
DeepMIMO_dataset{s}{i}.user{j}.Pathloss
Type and Dimensions: Float
Description: The combined path-loss of the channel between the RX and TX in dB.
User Location
DeepMIMO_dataset{s}{i}.user{j}.loc
Type and Dimensions: Float array of 3 dimensions
Description: The Euclidian location of the user in the form of [x, y, z].
Basestation Location
DeepMIMO_dataset{s}{i}.loc
Type and Dimensions: Float array of 3 dimensions
Description: The Euclidian location of the user in the form of [x, y, z].
Output Variables of Basestation i – Basestation j
Channel Matrix
DeepMIMO_dataset{i}.basestation{j}.channel
Type and Dimensions: Float matrix of size (number of time samples) x (number of RX antennas) x (number of TX antennas) x (number of OFDM subcarriers)
Description: The channel matrix between basestation i and user j. Number of time samples are determined as 14 x CDL_5G.num_slots.
Ray-tracing Path Parameters
DeepMIMO_dataset{i}.basestation{j}.params
Type and Dimensions: Structure
Description: The parameters of the ray tracing is provided within the struct. Specifically, for each path
- Angle-of-Arrival
- Angle-of-Departure
- Delay Spread
- Time of arrival
- …
are provided in this struct.
Line-of-Sight Status
DeepMIMO_dataset{i}.basestation{j}.LoS_status
Type and Dimensions: Integer of values {-1, 0, 1}
Description: The variable that indicates the existence of the LOS path in the channel.
The values correspond to
(1): LoS exists
(0): NLoS only
(-1): No paths (Full blockage)
TX-RX Distance
DeepMIMO_dataset{i}.basestation{j}.distance
Type and Dimensions: Float
Description: The Euclidian distance between the RX and TX locations in meters.
Path loss
DeepMIMO_dataset{i}.basestation{j}.Pathloss
Type and Dimensions: Float
Description: The combined path-loss of the channel between the RX and TX in dB.
RX Basestation Location
DeepMIMO_dataset{i}.basestation{j}.loc
Type and Dimensions: Float array of 3 dimensions
Description: The Euclidian location of the user in the form of [x, y, z].
TX Basestation Location
DeepMIMO_dataset{i}.loc
Type and Dimensions: Float array of 3 dimensions
Description: The Euclidian location of the user in the form of [x, y, z].
Output Variables of Basestation i – Basestation j at Scene s
Channel Matrix
DeepMIMO_dataset{s}{i}.basestation{j}.channel
Type and Dimensions: Float matrix of size (number of time samples) x (number of RX antennas) x (number of TX antennas) x (number of OFDM subcarriers)
Description: The channel matrix between basestation i and user j. Number of time samples are determined as 14 x CDL_5G.num_slots.
Ray-tracing Path Parameters
DeepMIMO_dataset{s}{i}.basestation{j}.params
Type and Dimensions: Structure
Description: The parameters of the ray tracing is provided within the struct. Specifically, for each path
- Angle-of-Arrival
- Angle-of-Departure
- Delay Spread
- Time of arrival
- …
are provided in this struct.
Line-of-Sight Status
DeepMIMO_dataset{s}{i}.basestation{j}.LoS_status
Type and Dimensions: Integer of values {-1, 0, 1}
Description: The variable that indicates the existence of the LOS path in the channel.
The values correspond to
(1): LoS exists
(0): NLoS only
(-1): No paths (Full blockage)
TX-RX Distance
DeepMIMO_dataset{s}{i}.basestation{j}.distance
Type and Dimensions: Float
Description: The Euclidian distance between the RX and TX locations in meters.
Path loss
DeepMIMO_dataset{s}{i}.basestation{j}.Pathloss
Type and Dimensions: Float
Description: The combined path-loss of the channel between the RX and TX in dB.
RX Basestation Location
DeepMIMO_dataset{s}{i}.basestation{j}.loc
Type and Dimensions: Float array of 3 dimensions
Description: The Euclidian location of the user in the form of [x, y, z].
TX Basestation Location
DeepMIMO_dataset{s}{i}.loc
Type and Dimensions: Float array of 3 dimensions
Description: The Euclidian location of the user in the form of [x, y, z].