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

Examples

Parameters file in the example