Massive MIMO Spatial Channel Model Dataset
Massive MIMO Spatial Channel Model Dataset
chip image

This dataset contains samples of the frequency domain channel matrix for the channel between user equipment (UEs) and their corresponding serving cell, synthetically generated using the 3GPP Spatial Channel Model defined in TR 38.901. The data can be used to better understand the statistical distribution of channel characteristics in a typical dense urban layout.

ResourcesForum

No 3D asset configured

Dataset format details


The dataset is organized into several records, one per UE. Each record contains the following variables:
 

Name Type Description
Hf

Complex float array with size
(20, 4, 50, 32)

(# time samples, #UE ports, #RBs, #gNB ports)

20 time samples (20 ms apart) of frequency domain channel matrix per resource block

UeX_meters

Float

relative X location of UE (meters)

UeY_meters

Float

relative Y location of UE (meters)

UeZ_meters

Float

relative Z location of UE (meters)

ServingCellCouplingLoss_dB

Float

Coupling loss between serving cell and UE (dB)

Outdoor Logical

1 if UE is outdoor, else 0

LineOfSight Logical

1 if UE has line-of-sight condition to serving cell, else 0

ServingCellId Integer

index of serving cell of UE


The following scripts provide examples for how the records can be retrieved and used.

The first script provides examples in Python:

import scipy.io as sio
import numpy as np 
#############################################
#                                           #
#   Example 1: Load all data from one file  #
#                                           #
#############################################
UeRecord = sio.loadmat('UE1.mat', squeeze_me=True)

# This loads the data in UE1.mat into a dictionary called UeRecord:
#  UeRecord['Hf'] : complex numpy array with shape (20, 4, 50, 32) - frequency domain channel matrix per resource block
#  UeRecord['UeX_meters'] : float - relative X location of UE (meters)
#  UeRecord['UeY_meters'] : float - relative Y location of UE (meters)
#  UeRecord['UeZ_meters'] : float - relative Z location of UE (meters)
#  UeRecord['ServingCellCouplingLoss_dB'] : float - coupling loss to serving cell (dB)
#  UeRecord['Outdoor'] : int - 1 if UE is outdoor, 0 otherwise
#  UeRecord['LineOfSight'] : int - 1 if UE has line-of-sight condition to serving cell, 0 otherwise
#  UeRecord['ServingCellId'] : int - index of serving cell of UE

#############################################
#                                           #
#   Example 2: Load Hf data from 10 files   #
#                                           #
#############################################
Hf_all = np.empty((10, 20, 4, 50, 32), dtype='complex')
for i in range(10):
   Hf = sio.loadmat(f'UE{i + 1}.mat', squeeze_me=True, variable_names='Hf')['Hf']
   Hf_all[i] = Hf 


The next script provides examples in MATLAB: 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                           %
%   Example 1: Load all data from one file  %
%                                           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
UeRecord = load('UE1.mat');
% This loads the data in UE1.mat into a struct called UeRecord:
%  UeRecord.Hf : complex array with size (20, 4, 50, 32) - frequency domain channel matrix per resource block
%  UeRecord.UeX_meters : float - relative X location of UE (meters)
%  UeRecord.UeY_meters : float - relative Y location of UE (meters)
%  UeRecord.UeZ_meters : float - relative Z location of UE (meters)
%  UeRecord.ServingCellCouplingLoss_dB : float - coupling loss to serving cell (dB)
%  UeRecord.Outdoor : logical       - 1 if UE is outdoor, 0 otherwise
%  UeRecord.LineOfSight : logical   - 1 if UE has line-of-sight condition to serving cell, 0 otherwise
%  UeRecord.ServingCellId : int - index of serving cell of UE

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                           %
%   Example 2: Load Hf data from 10 files   %
%                                           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Hf_all = zeros(10, 20, 4, 50, 32);
for i = 1:10
   load(sprintf('UE%d.mat', i), 'Hf');
   Hf_all(i, :, :, :, :) = Hf; 
end



The index of the serving cell (ServingCellId) refers to an integer from 1 to 57 that indicates the serving sector (or cell) in a two-tier hexagonal layout with 3 sectors per site. The cell locations are according to the following table:

 

ServingCellId

X_meters

Y_meters

1

0

0

2

0

0

3

0

0

4

0

200

5

0

200

6

0

200

7

173.205

100

8

173.205

100

9

173.205

100

10

173.205

-100

11

173.205

-100

12

173.205

-100

13

0

-200

14

0

-200

15

0

-200

16

-173.205

-100

17

-173.205

-100

18

-173.205

-100

19

-173.205

100

20

-173.205

100

21

-173.205

100

22

0

400

23

0

400

24

0

400

25

173.205

300

26

173.205

300

27

173.205

300

28

346.41

200

29

346.41

200

30

346.41

200

31

346.41

0

32

346.41

0

33

346.41

0

34

346.41

-200

35

346.41

-200

36

346.41

-200

37

173.205

-300

38

173.205

-300

39

173.205

-300

40

0

-400

41

0

-400

42

0

-400

43

-173.205

-300

44

-173.205

-300

45

-173.205

-300

46

-346.41

-200

47

-346.41

-200

48

-346.41

-200

49

-346.41

0

50

-346.41

0

51

-346.41

0

52

-346.41

200

53

-346.41

200

54

-346.41

200

55

-173.205

300

56

-173.205

300

57

-173.205

300

Dataset organization details


Each UE’s record is stored as a separate .MAT file. The .MAT files are grouped into .ZIP files each containing the files for 550 UEs. The total number of UEs is 42180.

Dataset generation details


The data is based on the dense urban layout (macrocell layer only). A two-tier hexagonal layout with 3 sectors per site is assumed, and wrap-around modeling is incorporated. The inter-site distance is 200 meters, the base station antenna height is 25 meters, and the minimum BS-UE distance is set to 35 meters. Spatial consistency is modeled, as described in TR 38.901. Mobility aspects are not considered.


In the spatial domain, massive MIMO is assumed wherein each base station is modeled with 128 antenna elements mapped to 32 ports, and each UE is modeled with 4 antenna elements mapped to 4 ports.
 

In the frequency domain, a 4 GHz carrier frequency is assumed. The channel data is computed for 20 MHz bandwidth, mapped to 50 resource blocks (RBs).
 

In the time domain, for each UE, 20 time-samples of the channel are recorded, with successive time samples being 20 milliseconds apart.


The following table captures the above assumptions:

Parameter

Value

Scenario

Dense Urban (Macro only)

Frequency Range

FR1, 4 GHz

Inter-BS distance

200m

Minimum BS-UE 2D distance

35 m

Channel model        

UMa, according to TR 38.901

Antenna setup and port layouts at gNB

32 ports: (8,8,2,1,1,2,8), (dH,dV) = (0.5, 0.8)λ

Antenna setup and port layouts at UE

4 ports: (1,2,2,1,1,1,2), (dH,dV) = (0.5, 0.5)λ

BS antenna height

25m

UE antenna height & gain

Follow TR 36.873

Bandwidth

20 MHz (50 RBs)

UE distribution

80% indoor (3km/h), 20% outdoor (30km/h)



Dataset license

 

Massive MIMO Spatial Channel Model Dataset is available for research purposes.
 

Massive MIMO Spatial Channel Model Dataset License Agreement

Qualcomm AI Research

 

AI is shifting from simply seeing what is happening in front of the camera to understanding it. Data is the effective force behind these deep learning breakthroughs and is integral to the human-level performance of neural networks. Our crowd-acting approach to data collection overcomes the typical limitations of crowdsourcing, resulting in high-quality video data that is densely captioned, human-centric and diverse.

Qualcomm AI Research continues to invest in and support deep-learning research in computer vision. The publication of the Jester dataset for use by the AI research community is one of our many initiatives.


Find out more about Qualcomm AI Research.
For any questions or technical support, please contact us at [email protected]

Qualcomm AI Research is an initiative of Qualcomm Technologies, Inc.

Connect with our communities

Stay ahead of the curve

Receive the latest updates, exclusive offers, and valuable insights delivered through the Qualcomm newsletter straight to your inbox.

Stay ahead of the curve

Receive the latest updates, exclusive offers, and valuable insights delivered through the Qualcomm newsletter straight to your inbox.

Qualcomm relentlessly innovates to deliver intelligent computing everywhere, helping the world tackle some of its most important challenges. Our leading-edge AI, high performance, low-power computing, and unrivaled connectivity deliver proven solutions that transform major industries. At Qualcomm, we are engineering human progress.

Stay connected

Get the latest Qualcomm and industry information delivered to your inbox.

Subscribe
Manage your subscription

© Qualcomm Technologies, Inc. and/or its affiliated companies.

Snapdragon and Qualcomm branded products are products of Qualcomm Technologies, Inc. and/or its subsidiaries. Qualcomm patented technologies are licensed by Qualcomm Incorporated.

Note: Certain services and materials may require you to accept additional terms and conditions before accessing or using those items.

References to "Qualcomm" may mean Qualcomm Incorporated, or subsidiaries or business units within the Qualcomm corporate structure, as applicable.

Qualcomm Incorporated includes our licensing business, QTL, and the vast majority of our patent portfolio. Qualcomm Technologies, Inc., a subsidiary of Qualcomm Incorporated, operates, along with its subsidiaries, substantially all of our engineering, research and development functions, and substantially all of our products and services businesses, including our QCT semiconductor business.

Materials that are as of a specific date, including but not limited to press releases, presentations, blog posts and webcasts, may have been superseded by subsequent events or disclosures.

Nothing in these materials is an offer to sell or license any of the services or materials referenced herein.