0% found this document useful (0 votes)
707 views215 pages

Quadriga Documentation v2.2.0

Quadriga software documentation

Uploaded by

bradleybw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
707 views215 pages

Quadriga Documentation v2.2.0

Quadriga software documentation

Uploaded by

bradleybw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 215

Quasi Deterministic Radio Channel Generator

User Manual and Documentation

Document Revision: v2.2.0


June 27, 2019

Fraunhofer Heinrich Hertz Institute


Wireless Communications and Networks
Einsteinufer 37, 10587 Berlin, Germany
e-mail: [email protected]
http://www.quadriga-channel-model.de
QuaDRiGa v2.2.0

Contributors

Editor: Fraunhofer Heinrich Hertz Institute


Wireless Communications and Networks
Einsteinufer 37, 10587 Berlin, Germany

Contributing Authors: Stephan Jaeckel, Leszek Raschkowski and Lars Thiele


Fraunhofer Heinrich Hertz Institute

Frank Burkhardt and Ernst Eberlein


Fraunhofer Institute for Integrated Circuits IIS

Grants and Funding

This work was supported by


• the European Space Agency (ESA) in the Advanced Research in Telecommunications Systems (ARTES)
programme under contract AO/1-5985/09/08/NL/LvH (Acronym: MIMOSA), [1]
http://artes.esa.int/projects/mimosa-characterisation-mimo-channel-mobile-satellite-systems

• the German Federal Ministry of Economics and Technology (BMWi) in the national collaborative project In-
telliSpektrum under contract 01ME11024
http://www.intellispektrum.de

• the European Commission co-funded the project METIS as an Integrated Project under the Seventh Framework
Programme for research and development (FP7)
http://www.metis2020.com

• the GreenTouch consortium within the funded project “LSAS Channel Modelling”
http://www.greentouch.org

• the European Commission co-funded the project mmMAGIC as an Integrated Project under the Horizon 2020
Programme for research and development (FP7)
https://5g-mmmagic.eu

• the Celtic-Plus funded project REICOVAIR


https://www.celticplus.eu/project-reicovair

Acknowledgements

The authors thank G. Sommerkorn, C. Schneider, M. Kaeske [Ilmenau University of Technology (IUT),
Ilmenau, Germany] and V. Jungnickel [Heinrich Hertz Institute (HHI), Berlin, Germany] for the fruitful
discussions on the QuaDRiGa channel model and the manuscript of this document.

Copyright: Fraunhofer Heinrich Hertz Institute 2


eMail: [email protected]
QuaDRiGa v2.2.0 Contents

How to Cite QuaDRiGa

[2] S. Jaeckel, L. Raschkowski, K. Börner, and L. Thiele, “QuaDRiGa: A 3-D multi-cell channel
model with time evolution for enabling virtual field trials,” IEEE Trans. Antennas Propag.,
vol. 62, pp. 3242-3256, 2014.
[3] S. Jaeckel, L. Raschkowski, K. Börner, L. Thiele, F. Burkhardt and E. Eberlein, ”QuaDRiGa
- Quasi Deterministic Radio Channel Generator, User Manual and Documentation”, Fraun-
hofer Heinrich Hertz Institute, Tech. Rep. v2.2.0, 2019.

Contents

1 Introduction and Overview 14


1.1 Installation and System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2 General Remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Introduction to QuaDRiGa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 Continuous time evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5 QuaDRiGa program flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6 Description of modeling of different reception conditions by means of a typical drive course . 20
1.7 Compatibility with 3GPP models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2 Software Structure 26
2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2 Description of Classes, Properties, and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.1 Class “qd simulation parameters” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.2 Class “qd arrayant” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2.3 Class “qd track” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.2.4 Class “qd layout” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2.5 Class “qd builder” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.6 Class “qd sos” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.2.7 Class “qd channel” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.2.8 QuaDRiGa package functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.3 Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.4 Scenario Specific Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.5 Description of the Parameter Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.6 Data Exchange Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.6.1 QuaDRiGa Array Antenna Exchange Format (QDANT) . . . . . . . . . . . . . . . . . 75
2.6.2 QuaDRiGa Layout Exchange Format (KML) . . . . . . . . . . . . . . . . . . . . . . . 77

3 Technical Documentation 84
3.1 Spatially Consistent Channel Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.1.1 The Sum of Sinusoids Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.1.2 3-D Approximation of Arbitrary ACFs . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.1.3 Device-to-Device Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.2 Large-Scale Fading Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.3 Multi-Frequency Small-Scale Fading Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.3.1 Communication Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.3.2 Initial Delays and Angles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.3.3 Initial Path Powers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.3.4 Applying K-Factor, Delay Spread and Angle Spreads . . . . . . . . . . . . . . . . . . . 99
3.3.5 Subpaths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Copyright: Fraunhofer Heinrich Hertz Institute 3


eMail: [email protected]
QuaDRiGa v2.2.0 List of Figures

3.4 Drifting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101


3.5 Antennas and Polarization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.5.1 Relation between the Polarization Model and the Jones Calculus . . . . . . . . . . . . 107
3.5.2 Changing the Orientation of Antennas . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.5.3 Constructing the Polarization Transfer Matrix . . . . . . . . . . . . . . . . . . . . . . 110
3.6 Combining Sub-Paths into Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.7 Path Gain, Shadow Fading and K-Factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.8 Transitions between Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
3.9 Ground Reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.9.1 Path-Powers and Path-Delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.9.2 Departure and Arrival Elevation Angles . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.9.3 Polarization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
3.9.4 Reflection Coefficient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

4 Tutorials 122
4.1 The Most Common Mistake: Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4.2 Typical driving course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.3 Effects of the Antenna-Orientation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.4 Drifting Phases and Delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.5 Geometric Polarization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.6 Pairing and segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
4.7 Network Setup and Parameter Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.8 Time Evolution and Scenario Transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
4.9 Applying Varying Speeds (Channel Interpolation) . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.10 Resimulating a Measured Scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.11 Multi-frequency simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
4.12 Ground reflection simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
4.13 Spatial consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.14 Dual Mobility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

5 Model calibration 177


5.1 3GPP 36.873 Phase 1 Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.2 3GPP 36.873 Phase 2 Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5.3 3GPP 38.901 Large Scale Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.4 3GPP 38.901 Full Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

List of Figures

1 Evolution of GSCMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 Simplified overview of the modeling approach used in QuaDRiGa . . . . . . . . . . . . . . . . . 17
3 Typical driving course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4 UML class diagram of the model software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5 QuaDRiGa Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6 Steps for the calculation of time-evolving channel coefficients . . . . . . . . . . . . . . . . . . 85
7 Principle of the generation of channel coefficients based on correlated LSPs . . . . . . . . . . 93
8 Illustration of the communication model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
9 Scatterer positions and arrival angles (single-bounce model) . . . . . . . . . . . . . . . . . . . 103
10 Scatterer positions and arrival angles (multi-bounce model) . . . . . . . . . . . . . . . . . . . 104
11 Example patterns for a dipole antenna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
12 Illustration of the overlapping area used for calculating the transitions between segments . . . 115

Copyright: Fraunhofer Heinrich Hertz Institute 4


eMail: [email protected]
QuaDRiGa v2.2.0 List of Acronyms

13 Illustration of the snapshot coupling in dual-mobility simulations . . . . . . . . . . . . . . . . 116


14 Illustration of the angles and vectors used for the calculations . . . . . . . . . . . . . . . . . . 117
15 Values of the reflection coefficients for  = 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

List of Tables

1 QuaDRiGa System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14


2 System Compatibility Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
29 Parameter sets provided together with the standard software . . . . . . . . . . . . . . . . . . 69
34 Achievable delay and angular spread values . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
35 Offset Angle of the mth Sub-Path from [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
36 Electrical Properties of the Environment, 6-100 GHz [5] . . . . . . . . . . . . . . . . . . . . . 120
37 Simulation assumptions for 3GPP-3D calibration . . . . . . . . . . . . . . . . . . . . . . . . . 177

List of Acronyms

1-D one-dimensional
2-D two-dimensional
3-D three-dimensional
4-D four-dimensional
3GPP 3rd generation partnership project
5G fifth generation
ACF autocorrelation function
AoA azimuth angle of arrival
AoD azimuth angle of departure
AS angular spread
ASA azimuth spread of arrival
ASD azimuth spread of departure
ASE average squared error
BP break point
BS base station
CDF cumulative distribution function
CIR channel impulse response
COST European Cooperation in Science and Technology
D2D device-to-device
DS delay spread
EoA elevation angle of arrival
EoD elevation angle of departure
ESA elevation spread of arrival
ESD elevation spread of departure
FBS first-bounce scatterer
GCS global coordinate system
GR ground reflection
GSCM geometry-based stochastic channel model
JCF joint correlation function
KF Ricean K-factor
LBS last-bounce scatterer
LHCP left hand circular polarized
LOS line of sight

Copyright: Fraunhofer Heinrich Hertz Institute 5


eMail: [email protected]
QuaDRiGa v2.2.0 Glossary

LSF large-scale fading


LSP large-scale parameter
MIMO multiple-input multiple-output
MIMOSA MIMO over satellite
MPC multipath component
MT mobile terminal
NLOS non-line of sight
NR new radio
O2I outdoor-to-indoor
OFDM orthogonal frequency division multiplexing
P2P peer-to-peer
PAS power-angular spectrum
PDP power delay profile
PG path gain
PL path loss
QuaDRiGa quasi deterministic radio channel generator
RHCP right hand circular polarized
RX receiver
SCM spatial channel model
SF shadow fading
SISO single input single output
SOS sum-of-sinusoids
SSF small-scale-fading
SSG state sequence generator
STD standard deviation
TX transmitter
UMa urban-macrocell
UMi urban-microcell
UML unified modeling language
WGS world geodetic system
WINNER Wireless World Initiative for New Radio
WSS wide-sense stationary
WSSUS wide sense stationary uncorrelated scattering
XPD cross-polarization discrimination
XPR cross polarization ratio
ZoA zenith angle of arrival
ZoD zenith angle of departure
ZSA zenith angle spread of arrival
ZSD zenith angle spread of departure

Glossary

base station (BS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85


The term base station (BS) refers to a fixed transmitter which utilizes one or more transmit antennas
to serve one or more MTs. BSs might further use sectors to increase the capacity. Usually, BSs
operate independent of each other which might lead to inter-BS interference if they use the same time
and frequency resource.

Copyright: Fraunhofer Heinrich Hertz Institute 6


eMail: [email protected]
QuaDRiGa v2.2.0 Glossary

cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 114


A cluster describes an area where many scattering events occur simultaneously, e.g. at the foliage of
trees or at a rough building wall. In the channel model, each scattering cluster is approximated by 20
single reflections. Each of those reflections has the same propagation delay.

drifting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Drifting occurs within a small area (about 20-30 m diameter) in which a specific “cluster ” can be seen
from the MT. Within this area the cluster position is fixed. Due to the mobility of the terminal the
path length (resulting in a path delay) and the arrival angels change slowly, i.e. they “drift”.

large-scale parameter (LSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91


The term “large scale parameter ” refers to a set of specific properties of the propagation channel.
Those are the “delay spread ”, the “K-factor ”, the “shadow fading”, the “cross-polarization ratio”,
and four “angular spread ”-values. Those properties can be extracted from channel sounding data. If
a large amount of channel measurements is available for a specific propagation scenario and the LSPs
can be calculated from those channels, statistics of the LSPs, e.g. their distribution and correlation
properties can be obtained. A complete set of such statistical properties forms a “parameter table”
that characterizes the scenario.

mobile terminal (MT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85


Mobile terminals (MTs) are mobile receivers with one or more receive antennas. They are usually
assigned to a serving BS which delivers data to the terminal.

multipath component (MPC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85


Synonym for path.

path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113, 115


A path describes the way that a signal takes from the transmitter to the receiver. In the channel
model, there is usually a direct, or LOS path, and several indirect, or NLOS paths. Indirect paths
involve one or more scattering events which are described by clusters. However, paths do not describe
single reflections but combine sub-paths that can not be separated in the delay domain. Usually, the
channel model uses 6-25 paths to describe the propagation channel.

scatterer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102, 111


A scatterer describes a single reflection along a NLOS propagation path. Usually, several scatterers
with a similar propagation delay and a narrow angular spread are combined into a “(scattering)
cluster ”.

scattering cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Synonym for cluster.

scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
In this thesis, the term scenario refers to a specific propagation environment such as “Urban macro-
cell”, “Urban satellite”, “Indoor hotspot”, etc. Usually, each propagation environment can be further
split into LOS and NLOS propagation (e.g. “Urban macro-cell LOS” and “Urban macro-cell NLOS”),
both of which might have very different properties. In the channel model, each scenario is fully
specified by a parameter table.

Copyright: Fraunhofer Heinrich Hertz Institute 7


eMail: [email protected]
QuaDRiGa v2.2.0 List of Symbols

segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86, 102


Segments are parts of a user trajectory in which the LSPs do not change considerably and where the
channel keeps its WSS properties. Typical segment lengths are 5-30 m. It is assumed that within a
segment, the scattering clusters are fixed.

sub-path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101, 113


A sub-path is the exact way that a signal takes from the transmitter to the receiver. It contains at least
one reflection. However, normally the channel model uses two scatterers (resulting in two reflections)
to create a sub-path. 20 sub-paths are combined to a path. The LOS path has no sub-paths.

time evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85, 102


Time evolution describes how the propagation channel changes (or evolves) with time. In the channel
model, two effects are used to describe this time-dependency: drifting and the birth and death of
scattering clusters during the transition between segments. The propagation environment is considered
static and, thus, the model includes time-evolution only when the receiver is moving.

user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Synonym for mobile terminal.

List of Symbols

(.)T Transpose of a matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110


γ Polarization rotation angle for the linear NLOS polarization in [rad] . . . . . . . . . . 111, 112
λ Wavelength in units of [m] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86, 104
φ Azimuth angle in [rad]. φ can be used for φd or φa . . . . . . . . . . . . . . . 75, 89, 106, 107
φa Azimuth angle of arrival (AoA) in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
φd Azimuth angle of departure (AoD) in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . 101
φ̂ The offset angle between the path angle φ of the mth sub-path in [degree] . . . . . . . . . 101
ψ Phase of a path in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104, 113
ρ Correlation coefficient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88, 94
στ The RMS delay spread in units of [s] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
τ Delay of a MPC in units of [s] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103, 104
θ Elevation angle in [rad]. θ can be used for θd or θa . . . . . . . . . . . . . . . 75, 89, 106, 107
ϑ Polarization rotation angle in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
θa Elevation angle of arrival (EoA) in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
θd Elevation angle of departure (EoD) in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . 101
a Vector pointing from the position of the LBS to the RX position . . . . . . . . . . . . . . 103
B Bandwidth in units of [Hz] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
c Speed of Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103, 104
c Representation of the departure or arrival angle in Cartesian coordinates . . . . . . . . . . 108
cφ The scenario-dependent cluster-wise RMS angular spread in [degree] . . . . . . . . . . . . 101
d Length of a propagation path in [m] . . . . . . . . . . . . . . . . . . . . . . . . . . . 103, 113
dλ Decorrelation distance in [m] where the autocorrelation falls below e−1 . . . . . . . . . . . . 88
er,s Vector from the RX position to RX antenna element r at snapshot s . . . . . . . . . . . . 103
F Polarimetric antenna response . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107, 109, 112
fS Sampling Rate in [samples per meter] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
fT Sampling Rate in [samples per second] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
g Channel coefficient in time domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
J Jones vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
k Model parameter value, usually as a function of location or time . . . . . . . . . . . . . . . 88

Copyright: Fraunhofer Heinrich Hertz Institute 8


eMail: [email protected]
QuaDRiGa v2.2.0 References

l Path index, l ∈ {1, 2, ..., L} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102, 103


m Sub-path index, m ∈ {1, 2, ..., M } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101, 102
N Normal distribution N (µ, σ 2 ) with mean µ and STD σ . . . . . . . . . . . . . . . 88, 111, 112
r Receive antenna index; r ∈ {1, 2, ..., nr } . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
R Rotation matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108, 109
r Vector pointing from the TX position to the RX position . . . . . . . . . . . . . . . . 103, 106
s Snapshot index s ∈ {1, 2, ..., S} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
t Transmit antenna index; t ∈ {1, 2, ..., nt } . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
U Continuous uniform distribution U(a, b) with minimum a and maximum b . . . . . . . . . 107
v Speed in [m/s] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Z A random variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

References

[1] E. Eberlein, T. Heyn, F. Burkhardt, S. Jaeckel, L. Thiele, T. Haustein, G. Sommerkorn, M. Käske,


C. Schneider, M. Dominguez, and J. Grotz, “Characterisation of the MIMO channel for mobile satellite
systems (acronym: MIMOSA), TN8.2 – final report,” Fraunhofer Institute for Integrated Circuits (IIS),
Tech. Rep. v1.0, 2013.

[2] S. Jaeckel, L. Raschkowski, K. Börner, and L. Thiele, “QuaDRiGa: A 3-D multi-cell channel model with
time evolution for enabling virtual field trials,” IEEE Trans. Antennas Propag., vol. 62, pp. 3242–3256,
2014.

[3] S. Jaeckel, L. Raschkowski, K. Börner, L. Thiele, F. Burkhardt, and E. Eberlein, “QuaDRiGa - Quasi
Deterministic Radio Channel Generator, User Manual and Documentation,” Fraunhofer Heinrich Hertz
Institute, Tech. Rep. v1.4.1-551, 2016.

[4] P. Kyösti, J. Meinilä, L. Hentilä et al., “IST-4-027756 WINNER II D1.1.2 v.1.1: WINNER II channel
models,” Tech. Rep., 2007. [Online]. Available: http://www.ist-winner.org

[5] ITU-R P.527-3, “Electrical characteristics of the surface of the earth,” Tech. Rep., 1992.

[6] P. Heino, J. Meinilä, P. Kyösti et al., “CELTIC / CP5-026 D5.3: WINNER+ final channel models,”
Tech. Rep., 2010. [Online]. Available: http://projects.celtic-initiative.org/winner+

[7] C. Schneider, M. Narandzic, M. Käske, G. Sommerkorn, and R. Thomä, “Large scale parameter for the
WINNER II channel model at 2.53 GHz in urban macro cell,” Proc. IEEE VTC ’10 Spring, 2010.

[8] M. Narandzic, C. Schneider, M. Käske, S. Jaeckel, G. Sommerkorn, and R. Thomä, “Large-scale pa-
rameters of wideband MIMO channel in urban multi-cell scenario,” Proc. EUCAP ’11, 2011.

[9] 3GPP TR 36.873 v12.5.0, “Study on 3D channel model for LTE,” Tech. Rep., 2017.

[10] 3GPP TR 38.901 v14.1.0, “Study on channel model for frequencies from 0.5 to 100 GHz,” Tech. Rep.,
2017.

[11] X. Cai and G. B. Giannakis, “A two-dimensional channel simulation model for shadowing processes,”
IEEE Trans. Veh. Technol., vol. 52, no. 6, pp. 1558–1567, 2003.

[12] S. Jaeckel, L. Raschkowski, F. Burkhardt, and L. Thiele, “Efficient sum-of-sinusoids based spatial
consistency for the 3gpp new-radio channel model,” Proc. IEEE Globecom Workshops ’18, 2018.

[13] S. Jaeckel, L. Raschkowski, S. Wu, L. Thiele, and W. Keusgen, “An explicit ground reflection
model for mm-wave channels,” Proc. IEEE WCNC Workshops ’17, 2017. [Online]. Available:
https://doi.org/10.1109/WCNCW.2017.7919093

Copyright: Fraunhofer Heinrich Hertz Institute 9


eMail: [email protected]
QuaDRiGa v2.2.0 References

[14] 3GPP TR 38.901 v15.0.0, “Study on channel model for frequencies from 0.5 to 100 GHz,” Tech. Rep.,
2018.

[15] H2020-ICT-671650-mmMAGIC/D2.2, “mmMAGIC D2.2 - measurement results and final mmMAGIC


channel models,” Tech. Rep., 2017.

[16] S. Jaeckel, N. Turay, L. Raschkowski, L. Thiele, R. V. andMarko Sonkki, V. Hovinen, F. Burkhardt,


P. Karunakaran, and T. Heyn, “Industrial indoor measurements from 2-6 ghz for the 3gpp-nr and
quadriga channel model,” Proc. IEEE VTC’19 Fall (Submitted), 2019.

[17] L. Raschkowski, S. Jaeckel, F. Undi, L. Thiele, W. Keusgen, B. Pitakdumrongkija, and M. Ariyoshi,


“Directional propagation measurements and modeling in an urban environment at 3.7 GHz,” Proc.
ACSSC ’16, pp. 1799–1803, 2016.

[18] S. Jaeckel, “Quasi-deterministic channel modeling and experimental validation in cooperative and
massive MIMO deployment topologies,” Ph.D. dissertation, TU Ilmenau, 2017. [Online]. Available:
https://www.db-thueringen.de/receive/dbt mods 00032895

[19] E. Eberlein, F. Burkhardt, G. Sommerkorn, S. Jaeckel, and R. Prieto-Cerdeira, “MIMOSA - analysis


of the MIMO channel for LMS systems,” Space Communications, vol. 22, no. 2-4, pp. 145–158, 2013.

[20] F. Burkhardt, S. Jaeckel, E. Eberlein, and R. Prieto-Cerdeira, “QuaDRiGa: a MIMO channel model
for land mobile satellite,” 8th European Conference on Antennas and Propagation (EuCAP), 2014.

[21] G. F. Masters and S. F. Gregson, “Coordinate system plotting for antenna measurements,” AMTA
Annual Meeting & Symposium, 2007.

[22] 3GPP TR 25.996 v14.0.0, “Spatial channel model for multiple input multiple output (MIMO) simula-
tions,” Tech. Rep., 2017.

[23] L. Correia, Ed., Mobile Broadband Multimedia Networks. Elsevier, 2006, ch. 6.8: The COST 273
MIMO channel model, pp. 364–383.

[24] 3GPP TR 36.873 v12.2.0, “Study on 3D channel model for LTE,” Tech. Rep., 2015.

[25] H. Xiao, A. Burr, and L. Song, “A time-variant wideband spatial channel model based on the 3gpp
model,” Proc. IEEE VCT ’06 Fall, 2006.

[26] D. Baum, J. Hansen, and J. Salo, “An interim channel model for beyond-3G systems,” Proc. IEEE
VCT ’05 Spring, vol. 5, pp. 3132–3136, 2005.

[27] M. Shafi, M. Zhang, A. Moustakas, P. Smith, A. Molisch, F. Tufvesson, and S. Simon, “Polarized MIMO
channels in 3-D: models, measurements and mutual information,” IEEE J. Sel. Areas Commun., vol. 24,
pp. 514–527, Mar. 2006.

[28] C. Oestges, N. Czink, P. D. Doncker et al., Pervasive Mobile and Ambient Wireless Communications
(COST Action 2100). Springer, 2012, ch. 3: Radio Channel Modeling for 4G Networks, pp. 67–147.

[29] A. Zajic, G. Stuber, T. Pratt, and S. Nguyen, “Wideband MIMO mobile-to-mobile channels: Geometry-
based statistical modeling with experimental verification,” IEEE Trans. Veh. Technol., vol. 58, no. 2,
pp. 517–534, 2009.

[30] M. R. Andrews, P. P. Mitra, and R. de Carvalho, “Tripling the capacity of wireless communications
using electromagnetic polarization,” Nature, vol. 409, pp. 316–318, Jan 2001.

[31] S. Jaeckel, L. Thiele, and V. Jungnickel, “Interference limited MIMO measurements,” Proc. IEEE VTC
’10 Spring, 2010.

Copyright: Fraunhofer Heinrich Hertz Institute 10


eMail: [email protected]
QuaDRiGa v2.2.0 References

[32] M. Narandzic, M. Käske, C. Schneider, M. Milojevic, M. Landmann, G. Sommerkorn, and R. Thomä,


“3D-antenna array model for IST-WINNER channel simulations,” Proc. IEEE VTC ’07 Spring, pp.
319–323, 2007.

[33] C. Oestges, B. Clerckx, M. Guillaud, and M. Debbah, “Dual-polarized wireless communications: From
propagation models to system performance evaluation,” IEEE Trans. Wireless Commun., vol. 7, no. 10,
pp. 4019–4031, 2008.

[34] Y. Zhou, S. Rondineau, D. Popovic, A. Sayeed, and Z. Popovic, “Virtual channel space-time processing
with dual-polarization discrete lens antenna arrays,” IEEE Trans. Antennas Propag., vol. 53, pp. 2444–
2455, Aug. 2005.

[35] F. Quitin, C. Oestges, F. Horlin, and P. De Doncker, “Multipolarized MIMO channel characteristics:
Analytical study and experimental results,” IEEE Trans. Antennas Propag., vol. 57, pp. 2739–2745,
2009.

[36] R. C. Jones, “A new calculus for the treatment of optical systems, i. description and discussion of the
calculus,” Journal of the Optical Society of America, vol. 31, pp. 488–493, July 1941.

[37] J. Poutanen, K. Haneda, L. Liu, C. Oestges, F. Tufvesson, and P. Vainikainen, “Parameterization of


the COST 2100 MIMO channel model in indoor scenarios,” Proc. EUCAP ’11, pp. 3606–3610, 2011.

[38] M. Zhu, F. Tufvesson, and G. Eriksson, “The COST 2100 channel model: Parameterization and val-
idation based on outdoor MIMO measurements at 300 MHz,” Lund University, Sweden, Tech. Rep.,
2012.

[39] N. Czink, T. Zemen, J.-P. Nuutinen, J. Ylitalo, and E. Bonek, “A time-variant MIMO channel model
directly parametrised from measurements,” EURASIP J. Wireless Commun. Netw., no. 2009:687238,
2009.

[40] K. Saito, K. Kitao, T. Imai, Y. Okano, and S. Miura, “The modeling method of time-correlated mimo
channels using the particle filter,” Proc. IEEE VCT ’11 Spring, 2011.

[41] W. Wang, T. Jost, U. Fiebig, and W. Koch, “Time-variant channel modeling with application to mobile
radio based positioning,” Proc. IEEE GLOBECOM ’12, pp. 5038–5043, 2012.

[42] [Online]. Available: http://www.quadriga-channel-model.de

[43] S. Gregson, J. McCormick, and C. Parini, Principles of Planar Near-Field Antenna Measurements.
IET, 2007.

[44] M. Gudmundson, “Correlation model for shadow fading in mobile radio systems,” IET Electron Lett.,
vol. 27, no. 23, pp. 2145–2146, November 1991.

[45] M. Pätzold, N. Avazov, and V. D. Nguyen, “Design of measurement-based correlation models for shadow
fading,” pp. 112–117, Oct 2010.

[46] K. Bakowski and K. Wesolowski, “Change the channel,” IEEE Veh. Technol. Mag., vol. 6, pp. 82–91,
2011.

[47] T. Jamsa and P. Kyosti, “Device-to-device extension to geometry-based stochastic channel models,”
Antennas and Propagation (EuCAP), 2015 9th European Conference on, pp. 1–4, April 2015.

[48] M. Patzold, U. Killat, and F. Laue, “A deterministic digital simulation model for suzuki processes
with application to a shadowed rayleigh land mobile radio channel,” IEEE Transactions on Vehicular
Technology, vol. 45, no. 2, pp. 318–331, May 1996.

Copyright: Fraunhofer Heinrich Hertz Institute 11


eMail: [email protected]
QuaDRiGa v2.2.0 References

[49] Z. Wang, E. Tameh, and A. Nix, “A sum-of-sinusoids based simulation model for the joint shadowing
process in urban peer-to-peer radio channels,” Proc. IEEE VTC ’05 Fall, vol. 3, pp. 1732–1736, Sept
2005.

[50] M. Deserno, “How to generate equidistributed points on the surface of a sphere,” Max-Planck-Institut
für Polymerforschung, Tech. Rep., 2004.

[51] P. Hoeher, “A statistical discrete-time model for the wssus multipath channel,” IEEE Transactions on
Vehicular Technology, vol. 41, no. 4, pp. 461–468, 1992.

[52] A. Algans, K. Pedersen, and P. Mogensen, “Experimental analysis of the joint statistical properties of
azimuth spread, delay spread, and shadow fading,” IEEE J. Sel. Areas Commun., vol. 20, no. 3, pp.
523–531, 2002.

[53] L. Greenstein, V. Erceg, Y. Yeh, and M. Clark, “A new path-gain/delay-spread propagation model for
digital cellular channels,” IEEE Trans. Veh. Technol., vol. 46, no. 2, pp. 477–485, 1997.

[54] N. J. Higham, “Newton’s method for the matrix square root,” Mathematics of Computation, vol. 46,
no. 174, pp. 537–549, 1986. [Online]. Available: http://www.jstor.org/stable/2007992

[55] 3GPP TR 25.996 v6.1.0, “Spatial channel model for multiple input multiple output (MIMO) simula-
tions,” Tech. Rep., 2003.

[56] A. Ludwig, “The definition of cross-polarization,” IEEE Trans. Antennas Propagation, vol. AP-21, pp.
116–119, 1973.

[57] C. Oestges, V. Erceg, and A. Paulraj, “Propagation modeling of MIMO multipolarized fixed wireless
channels,” IEEE Trans. Veh. Technol., vol. 53, pp. 644–654, May 2004.

[58] V. Erceg, H. Sampath, and S. Catreux-Erceg, “Dual-polarization versus single-polarization MIMO


channel measurement results and modeling,” IEEE Trans. Wireless Commun., vol. 5, pp. 28–33, Jan.
2006.

[59] M. Landmann, K. Sivasondhivat, J. Takada, and R. Thomä, “Polarisation behaviour of discrete multi-
path and diffuse scattering in urban environments at 4.5 GHz,” EURASIP J. Wireless Commun. Netw.,
vol. 2007, no. 1, pp. 60–71, 2007.

[60] T. Svantesson, “A physical MIMO radio channel model for multi-element multi-polarized antenna
systems,” Proc. IEEE VTC’ 01 Fall, vol. 2, pp. 1083–1087, 2001.

[61] L. Materum, J. Takada, I. Ida, and Y. Oishi, “Mobile station spatio-temporal multipath clustering of an
estimated wideband MIMO double-directional channel of a small urban 4.5 GHz macrocell,” EURASIP
J. Wireless Commun. Netw., no. 2009:804021, 2009.

[62] F. Quitin, C. Oestges, F. Horlin, and P. De Doncker, “A polarized clustered channel model for indoor
multiantenna systems at 3.6 GHz,” IEEE Trans. Veh. Technol., vol. 59, no. 8, pp. 3685–3693, 2010.

[63] M. Hata, “Empirical formula for propagation loss in land mobile radio services,” IEEE Trans. Veh.
Technol., vol. 29, no. 3, pp. 317–325, 1980.

[64] R. J. Weiler, M. Peter, W. Keusgen, A. Kortke, and M. Wisotzki, “Millimeter-wave channel sounding
of outdoor ground reflections,” in 2015 IEEE Radio and Wireless Symposium, Jan 2015, pp. 95–97.

[65] M. Peter, R. J. Weiler, T. Kuhne et al., “Millimeter-wave small-cell backhaul measurements and con-
siderations on street-level deployment,” in 2015 IEEE Globecom Workshops, 2015.

[66] 3GPP TR 38.900 v14.2.0, “Channel model for frequency spectrum above 6 GHz,” Tech. Rep., 2016.

[67] A. Goldsmith, Wireless Communications. Cambridge University Press, 2003.

Copyright: Fraunhofer Heinrich Hertz Institute 12


eMail: [email protected]
QuaDRiGa v2.2.0 References

[68] K. Yu, Q. Li, and M. Ho, “Measurement investigation of tap and cluster angular spreads at 5.2 GHz,”
IEEE Transactions on Antennas and Propagation, vol. 53, no. 7, pp. 2156–2160, July 2005.

[69] ITU-R P.2040-1, “Effects of building materials and structures on radiowave propagation above about
100 mhz,” Tech. Rep., 2015.

[70] 3GPP TDOC R1-143469, “Summary of 3D-channel model calibration results,” Nokia Networks,
Nokia Corporation, Tech. Rep., 2014. [Online]. Available: http://www.3gpp.org/DynaReport/
TDocExMtg--R1-78--30657.htm

Copyright: Fraunhofer Heinrich Hertz Institute 13


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

1 Introduction and Overview

1.1 Installation and System Requirements

QuaDRiGa v2.2.0 supports MATLAB and Octave. The installation is straightforward and it does not require
any changes to your system settings. If you would like to use QuaDRiGa, just extract the ZIP-File containing
the model files and add the “quadriga src”-folder from the extracted archive to you MATLAB/Octave-Path.
In MATLAB, this can be done by opening MATLAB and selecting “File” - “Set Path ...” from the menu.
Then you can use the “Add folder ...” button to add QuaDRiGa to your MATLAB-Path. For Octave
(Linux), you need to create a file named “.octaverc” in your home directory with the following content:

addpath(’/[path to QuaDRiGa]/quadriga src’)


more off

The “more off” command enables the support for real-time progress reports which is by default disabled
in Octave. In Windows, this file is located at “C:\[path to Octave]\share\octave\site\m\startup\octaverc”.

Table 1: QuaDRiGa System Requirements


Requirement Value
Required MATLAB version 7.12 (R2011a)
Required Octave version 4.0
Required toolboxes none
Memory (RAM) requirement 1 GB
Processing power 1 GHz Single Core
Storage 50 MB
Operating System Linux, Windows, Mac OS

The following table provides some compatibility tests for different operating systems, architectures, MAT-
LAB versions, and QuaDRiGa versions.

Table 2: System Compatibility Tests


Operating System MATLAB / Octave Architecture QuaDRiGa Version Test result
Ubuntu 16.04 R2013a (9.1) 64 bit 2.2.0 works
R2016b (8.1) 64 bit 2.2.0 works
Octave 4.0.0 64 bit 2.2.0 works
Octave 5.1.0 64 bit 2.2.0 works
Windows 7 R2016a (9.0) 64 bit 2.0.0 works
Octave 4.2.1 64 bit 1.9.0 works

1.2 General Remarks

This document gives a detailed overview of the QuaDRiGa channel model and its implementation details. The
model has been evolved from the Wireless World Initiative for New Radio (WINNER) channel model de-
scribed in WINNER II deliverable D1.1.2 v.1.1 [4]. This document covers only the model itself. Measurement
campaigns covering the extraction of suitable parameters can be found in the WINNER documentation [4, 6]
or other publications such as [7, 8]. Furthermore, the MIMOSA project [1] covers the model development
and parameter extraction for land-mobile satellite channels.

Figure 1 gives an overview of a family of geometry-based stochastic channel models (GSCMs), starting with
the 3rd generation partnership project (3GPP)-spatial channel model (SCM) in 2003. Work on QuaDRiGa

Copyright: Fraunhofer Heinrich Hertz Institute 14


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

COST 273 COST 2100

QuaDRiGa

WINNER+ 3GPP-3D

WINNER-I WINNER-II IMT-Adv. METIS

3GPP-SCM SCM-E
Time
2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015

Open-Source implementation available


2-D
Project-internal implementations only
3-D
Model guidlines only

Figure 1: Evolution of GSCMs

started in 2011, after the end of the 3rd phase of the WINNER project. One year later, in 2012, 3GPP
and the European-funded research project METIS started working on an evolution of the SCM, which later
became commonly known as the 3GPP-3D channel model [9]. The latest 3GPP model [10] then extended the
model towards mm-wave channels. However, the core components, e.g. the small-scale-fading (SSF) model,
of this new model are in many parts identical to the WINNER+ model, which was also the baseline for the
quasi deterministic radio channel generator (QuaDRiGa). Hence, QuaDRiGa can be regarded a 3GPP-3D
and 3GPP 38.901 reference implementation. A mandatory part of the 3GPP-3D model is a calibration
phase, were individual implementations of the 3GPP contributors have to create a set of metrics which show
that the model implementation fulfills the requirements. This calibration exercise was also performed using
QuaDRiGa. The results can be found in section 5.

The QuaDRiGa channel model follows a geometry-based stochastic channel modeling approach, which allows
the creation of an arbitrary double directional radio channel. The channel model is antenna independent,
i.e. different antenna configurations and different element patterns can be inserted. The channel parame-
ters are determined stochastically, based on statistical distributions extracted from channel measurements.
The distributions are defined for, e.g. delay spread, delay values, angle spread, shadow fading, and cross-
polarization ratio. For each channel segment the channel parameters are calculated from the distributions.
Specific channel realizations are generated by summing contributions of rays with specific channel parame-
ters like delay, power, angle-of-arrival and angle-of-departure. Different scenarios are modeled by using the
same approach, but different parameters. The basic features of the model approach can be summarized as
follows:

• Support of freely configurable network layouts with multiple transmitters and receivers
• Scalability from a single input single output (SISO) or multiple-input multiple-output (MIMO) link
to a multi-link MIMO scenario
• Same modeling approach indoor, outdoor, and satellite environments as well as combinations of them
• Support of a frequency range of 450 MHz to 100 GHz with up to 1 GHz RF bandwidth (additional
frequency bands can be modeled as well, if suitable parameter tables are available)
• Support of multi-antenna technologies, polarization, multi-user, multi-cell, and multi-hop networks
• Smooth time evolution of large-scale and small-scale channel parameters including the transition be-
tween different scenarios
• High accuracy for the calculation of the polarization characteristics
• 3D model of antennas and propagation environment
• Support for massive MIMO antennas, both at the BS and mobile terminal (MT)

Copyright: Fraunhofer Heinrich Hertz Institute 15


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

The QuaDRiGa channel model largely extends the WINNER+ and the 3GPP-3D model to support several
new features that were originally not included. These are

• Time evolution
Short term time evolution of the channel coefficients is realized by updating the delays, the departure-
and arrival angles, the polarization, the shadow fading and the K-Factor based on the position of the
terminal.
• Scenario transitions
When the MT moves through the fading channel, it may pass through several different scenarios.
QuaDRiGa supports smooth transitions between adjacent channel segments. This is used to emulate
long term time evolution and allows the simulation of e.g. handover scenarios.
• Variable speeds for mobile terminals
QuaDRiGa supports variable speeds including accelerating and slowing down of mobile terminals.
• Common framework for LOS and NLOS simulations
In WINNER, line of sight (LOS) and non-line of sight (NLOS) scenarios were treated differently.
QuaDRiGa used the same method for both scenarios types. This reduces the model complexity and
enables freely configurable multicell scenarios. E.g. one MT can see two BSs, one in LOS and another
in NLOS.
• Geometric polarization
The polarizations for the LOS and for the NLOS case is now calculated based on a ray-geometric
approach.
• Improved method for calculating correlated large-scale parameters (LSPs)
The WINNER model calculates maps of correlated parameter values using filtered random fields.
QuaDRiGa uses the sum-of-sinusoids method [11] to generate spatially correlated LSPs and spatially
correlated SSF.
• New functions for modifying antenna patterns
Antenna patterns can now be freely rotated in 3D-coordinates while maintaining the polarization
properties. By default, individual antenna elements have individual antenna radiation patterns in
azimuth and elevation direction. Those can also be imported from anechoic chamber measurements.
The model further supports arbitrary array antenna structures where the elements can be placed in
3D coordinates. Hence, dual-polarized 2D or even 3D array structures both at the transmitter and
receiver are supported.
• New MATLAB / Octave implementation
The MATLAB code was completely rewritten. The implementations now fosters object oriented
programming and object handles. This increases the performance significantly and lowers the memory
usage.

1.3 Introduction to QuaDRiGa

QuaDRiGa (QUAsi Deterministic RadIo channel GenerAtor) was developed to enable the modeling of MIMO
radio channels for specific network configurations, such as indoor, satellite or heterogeneous configurations.

Besides being a fully-fledged three dimensional geometry-based stochastic channel model, QuaDRiGa con-
tains a collection of features created in SCM and WINNER channel models along with novel modeling
approaches which provide features to enable quasi-deterministic multi-link tracking of users (receiver) move-
ments in changing environments.

Copyright: Fraunhofer Heinrich Hertz Institute 16


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

The main features of QuaDRiGa are:

• Three dimensional propagation (antenna modeling, geometric polarization, scattering clusters),


• Continuous time evolution,
• Spatially correlated large and small-scale-fading,
• Transitions between varying propagation scenarios

The QuaDRiGa approach can be understood as a “statistical ray-tracing model”. Unlike the classical ray
tracing approach, it does not use an exact geometric representation of the environment but distributes the
positions of the scattering clusters (the sources of indirect signals such as buildings or trees) randomly. A
simplified overview of the model is depicted in Figure 3. For each path, the model derives the angle of
departure (the angle between the transmitter and the scattering cluster), the angle of arrival (the angle
between the receiver and the scattering cluster) and the total path length which results in a delay τ of the
signal. For the sake of simplicity, only two paths are shown in the figure.
Scatterer

th
S Pa ΦaNLOS
O dl
NL ngth
ΦdNLOS le
LOS Path
length d R0 ΦaLOS
Receiver
ΦdLOS
Transmitter Impulse Response
Power

PLOS
PNLOS Signal
τ LOS
τ NLOS delay

Figure 2: Simplified overview of the modeling approach used in QuaDRiGa

Terrestrial and Satellite scenarios can be modeled. For “Satellite to Earth” communication the angle of
departure is identical for all clusters. The concept behind the model allows also the modeling of scenarios
such as

• Earth to satellite
• Satellite systems with complementary ground components (CGC): Using several transmitters at dif-
ferent positions and simulating all propagation paths in one setup is supported.

The analysis of these scenarios was not in the scope of the MIMO over satellite (MIMOSA) project. This
feature is not tested and especially no parameter sets are available yet.

In the following, the terms cluster, scattering cluster and scatterer are used synonymously. A cluster
describes an area where many scattering events occur simultaneously, e.g. at the foliage of trees or at a
rough building wall. In QuaDRiGa, each scattering cluster is approximated by 20 individual scatterers.
Each one is modeled by a single reflection. The 20 signals can be resolved in spatial domain where they
have a typical angular spread of 1-6°. However, they cannot be resolved in delay domain. Therefore, in
the output of the channel model, these 20 signals (also named sub-paths) are combined into a single signal
which is represented by a path. The difference to Rayleigh fading models, which use wide sense stationary
uncorrelated scattering (WSSUS) taps instead of paths, is that each path has a very limited angular spread
(1-6°) which also results in a narrow Doppler spectrum. The terms path, multipath component (MPC) and
tap are also used synonymously in the QuaDRiGa documentation.

Copyright: Fraunhofer Heinrich Hertz Institute 17


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

To emulate a rich scatting environment with a wider angular spread, many scattering clusters are created.
QuaDRiGa has not upper limit for the amount of supported scattering clusters. However, depending on the
angular spread and the amount of diffuse scatting (which is approximated by discrete clusters in QuaDRiGa),
typical values are around 10 cluster for LOS propagation and 20 clusters for non-LOS. The positioning
of the clusters is controlled by the environment angular spread and the delay spread. The environment
angular spread has values of around 20-90° and is typically much larger than the per-cluster angular spread.
However, even with many clusters, the Doppler spread is narrower in QuaDRiGa than when assuming pure
Rayleigh fading. This is also in line with measurement results. It can be observed in the field that the main
components arrive from selected angles and the classical Doppler spectrum’s “Jakes” or Butterworth filter
shaped characteristics are only valid as long term average and not valid for a short time interval.

To summarize:

• A typical propagation environment for channels at a carrier frequency below 6 GHz requires 8-20
clusters.
• Internally, each cluster is represented by 20 sub-paths, resulting in 160 - 400 sub-paths in total.
• Each sub-path is modeled as a single reflection.
• The 160 - 400 sub-paths are weighted by the antenna response. The 20 sub-paths for each cluster are
summed up which results in 8-20 paths.
• For a MIMO system with multiple antennas at the transmitter and receiver, each path has as many
channel coefficients, as there are antenna pairs. Hence, at the output, there are nP ath ·nRx ·nT x channel
coefficients.

1.4 Continuous time evolution

QuaDRiGa calculates the channel for each defined reception point. To generate a “time series” a continuous
track of reception points can be defined. The arrival angles of the sub-paths play a crucial role for the
time evolution because the phase changes are calculated deterministically based on the arrival angles. This
results in a realistic Doppler spectrum.

The temporal evolution of the channel is modeled by two effects:


• drifting and
• birth and death of clusters.
Drifting (see Section 3.4) occurs within a small area (about 20-30 m diameter) in which a specific cluster
can be seen from the MT. Within this area the cluster position is fixed. Due to the mobility of the terminal
the path length (resulting in a path delay) and arrival angles change slowly.

Longer time-evolving channel sequences need to consider the birth and death of scattering clusters as well as
transitions between different propagation environments. We address this by splitting the MT trajectory into
segments. A segment can be seen as an interval in which the LSPs, e.g. the delay and angular spread, do
not change considerably and where the channel keeps its wide-sense stationary (WSS) properties. Thus, the
length of a segment depends on the decorrelation distances of the LSPs. We propose to limit the segment
length to the average decorrelation distance. Typical values are around 20 m for LOS and 45 m for NLOS
propagation. In the case where a state does not change over a long time, adjacent segment must have the
same state. For example, a 200 m NLOS segment should be split into at least 4 NLOS sub-segments.

A set of clusters is generated independently for each segment. However, since the propagation channel does
not change significantly from segment to segment, we need to include correlation. This is done by correlating
the LSPs from segment to segment. For example, measurements show that the shadow fading (the average
signal attenuation due to building, trees, etc.) is correlated over up to 100 m. Hence, we call all channel
characteristics showing similarly slow changes LSPs.

Copyright: Fraunhofer Heinrich Hertz Institute 18


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

With a segment length of 20 m, two neighboring segments of the same state will have similar receive-power.
To get the correct correlation, QuaDRiGa correlates the shadow fading for a large area. This approach also
contains cross-correlations to other LSPs such as the delay spread. For example, a shorter delay spread
might result in a higher received power. Hence, there is a positive correlation between power and delays
spread which is also included.

To get a continuous time-series of channel coefficients requires that the paths from different segments are
combined at the output of the model. In between two segments clusters from the old segment disappear
and new clusters appear. This is modeled by merging the channel coefficients of adjacent segments. The
active time of a scattering cluster is confined within the combined length of two adjacent segments. The
power of clusters from the old segment is ramped down and the power of new clusters is ramped up within
the overlapping region of the two segments. The combination clusters to ramp up and down is modeled by
a statistical process. Due to this approach, there are no sudden changes in the LSPs. For example, if the
delay spread in the first segment is 400 ns and in the second it is 200 ns, then in the overlapping region,
the delay spread (DS) slowly decreases till it reaches 200 ns. However, this requires a careful setup of the
segments along the used trajectory. If the segments are too short, sudden changes cannot be excluded. This
process is described in detail in Section 3.8.

1.5 QuaDRiGa program flow

For a propagation environment (e.g. urban, suburban, rural or tree-shadowing) typical channel characteris-
tics are described by statistics of the LSPs. Those are the median and the standard deviation of the delay
spread, angular spreads, shadow fading, Ricean K-Factor, as well as correlations between them. Additional
parameters describe how fast certain properties of the channel change (i.e. the decorrelation distance).
Those parameters are stored in configuration files which can be edited by the model user. Normally, the
parameters are extracted from channel measurements. A detailed description of the model steps can be
found Section 3.

1. The user of the model needs to configure the network layout. This includes:

• Setting the transmitter position (e.g. the BS positions or the satellite orbital position)
• Defining antenna properties for the transmitter and the receiver
• Defining the user trajectory
• Defining states (or segments) along the user trajectory
• Assigning a propagation environment to each state

Defining the user trajectory, states along the user trajectory and related parameters is performed by
the state sequence generator (SSG). In the current implementation different SSGs are available:

• Manual definition of all parameters by the user, e.g. definition of short tracks.
• Statistical model for the “journey”. A simple model (mainly designed for demonstration and
testing purpose is included in the tutorial “satellite channel”)
• Derive trajectory and state sequence from the measurement data.

2. Configuration files define the statistical properties of the LSPs. For each state (also called scenario) a
set of properties is provided. Typically two configurations files are used.

• One for the “good state” (also called LOS scenario)


• The other for the “bad state” (NLOS scenario).

For each state QuaDRiGa generates correlated “maps” for each LSP. For example, the delay spread in
the file is defined as log-normal distributed with a range from 40 to 400 ns. QuaDRiGa translates this
distribution in to a series of discrete values, e.g. 307 ns for segment 1, 152 ns for segment 2, 233 ns
for segment 3 and so on. This is done for all LSPs.

Copyright: Fraunhofer Heinrich Hertz Institute 19


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

3. The trajectory describes the position of the MT. For each segment of the trajectory, clusters are
calculated according to the values of the LSPs at the MT position. The cluster positions are random
within the limits given by the LSP. For example, a delay spread of 152 ns limits the distance between
the clusters and the terminal.

4. Each cluster is split into 20 sub-paths and the arrival angles are calculated for each sub-path and for
each positions of the terminal on the trajectory.

5. The antenna response for each of the arrival angles is calculated (the same holds for the departure
angles). If there is more than one antenna at the transmitter- and/or receiver side, the calculation is
repeated for each antenna.

6. The phases are calculated based on the position of the terminal antennas in relation to the clusters.
The terminal trajectory defines how the phases change. This results in the Doppler spread.

7. The coefficients of the 20 sub-paths are summed (the output are paths). If there is more than one
antenna and depending on the phase, this sum results in a different received power for each antenna-
pair. At this point, the MIMO channel response is created.

8. The channel coefficients of adjacent segments are combined (merged). This includes the birth/death
process of clusters. Additionally, different speeds of the terminal can be emulated by interpolation of
the channel coefficients.

9. The channel coefficients together with the path delays are formatted and returned to the user for
further analysis.

1.6 Description of modeling of different reception conditions by means of a typical drive


course

This section describes some of the key features of the model using a real world example. A detailed
introduction with a variety of tutorials, test cases and interface descriptions then follows in section 4.
The later part of the document then focusses on the mathematical models behind the software and the
assumptions made.

Figure 3: Typical driving course: From home to woodland parking site on the village outskirts

Copyright: Fraunhofer Heinrich Hertz Institute 20


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

The different effects along the track can be summarized as follows:

1. Start environment: Urban, LOS reception of satellite signal


2. LOS → NLOS change
3. NLOS → LOS change
4. Turning off without change in reception condition (LOS)
5. Stopping at traffic light (LOS)
6. Turning off with change of reception condition (LOS → NLOS)
7. Crossing side street (NLOS → short LOS → NLOS)
8. Structural change in the environment without a change in the environment type (higher density of
buildings but still the environment remains urban)
9. Stopping at traffic lights (NLOS)
10. Houses have the same characteristics as before but are further away from the street (urban environment
with different reception characteristics)
11. Change of environment (Urban → Forest)
12. Turning off without change of environment (NLOS)

Each simulation run in QuaDRiGa is done in three (and an optional fourth) step.

1. Set up tracks, scenarios, antennas and network layout


2. Generate correlated LSPs
3. Calculate the channel coefficients
4. Post-processing (optional)

Those steps also need to be done for the above scenario. However, different aspects of the track are handled
in different parts of the model. Additionally, the QuaDRiGa model supports two operating modes for
handling the LSPs:

1. The first (default) mode generates the correlated LSPs automatically based on a scenario-specific
parameter set. This is done in step 2 and involves so called parameter maps.

2. The manual mode does not generate LSPs automatically. Here, the user has to supply a list of
parameters to the model. The step 2 thus to be implemented by the user.

Steps 1, 3 and 4 are identical for both modes. The following list describes the modeling of the observed
effects along the track when using the automatic mode (1).

1. Start environment: Urban, LOS reception of satellite signal


Each segment along the track gets assigned an environment. In the QuaDRiGa terminology, this is
called a scenario. E.g. the first segment on the track is in the ”Satellite-LOS-Urban”-scenario. The
selection of the scenario is done during the first step (set up tracks, scenarios, antennas and network
layout). After the model setup, the ”automatic mode” generates a set of LSPs for this segment. I.e.
the second step of the model calculates one value for each of the 7 LSPs. The third step then calculates
a time-series of fading coefficients.

2. LOS → NLOS change


A scenario change is defined along the track. E.g. the second segment along the track gets assigned
the scenario ”Satellite-NLOS-Urban”. Now, a second set of LSPs is generated for all ”Satellite-NLOS-
Urban”-segments. We get a set of channel coefficients with different properties (e.g. more multipath
components, lower K-Factor etc.). A smooth transition between the coefficients from the first segment
and the second is realized by the ramping down the powers of the clusters of the old segment and
ramping up the power of the new. This is implemented in step 4 (Post-processing).

3. NLOS → LOS change


This is essentially the same as in point 2. However, since the third segment is also in the scenario

Copyright: Fraunhofer Heinrich Hertz Institute 21


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

”Satellite-LOS-Urban”, the parameters are extracted from the same spatially correlated generators as
for the starting segment.

4. Turning off without change in reception condition (LOS)


QuaDRiGa supports free 3D-trajectories for the receiver. Thus, no new segment is needed - the
terminal stays in the same segment as in point 3. However, we assume that the receive antenna is
fixed to the terminal. Thus, if the car turns around, so does the antenna. Hence, the arrival angles
of all clusters, including the direct path, change. This is modeled by a time-continuous update of the
angles, delays and phases of each multipath component, also known as drifting. Due to the change of
the arrival angles and the path-lengths, the terminal will also see a change in its Doppler-profile.

5. Stopping at traffic light (LOS)


QuaDRiGa performs all internal calculations at a constant speed. However, a stop of the car at a
traffic light is realized by interpolating the channel coefficients in an additional post processing step
(step 4). Here, the user needs to supply a movement profile that defines all acceleration, deceleration
or stopping points along the track. An example is given in section ??. Since the interpolation is an
independent step, it makes no difference if the mobile terminal is in LOS or NLOS conditions.

6. Turning off with change of reception condition (LOS → NLOS)


This is realized by combining the methods of point 2 (scenario change) and point 4 (turning without
change). The scenario change is directly in the curve. Thus, the LOS and the NLOS segments have
an overlapping part where the cluster powers of the LOS segment ramp down and the NLOS clusters
ramp up. The update of the angles, delays and phases is done for both segments in parallel.

7. Crossing side street (NLOS → short LOS → NLOS)


This is modeled by two successive scenario changes (NLOS-LOS and LOS-NLOS). For both changes,
a new set of clusters is generated. However, since the parameters for the two NLOS-segments are
extracted from the same map, they will be highly correlated. Thus, the two NLOS segments will have
similar properties.

8. Structural change in the environment without a change in the environment type (higher
density of buildings but still the environment remains urban)
This is not explicitly modeled. However, the ”Satellite-NLOS-Urban” scenario covers a typical range
of parameters. E.g. in a light NLOS area, the received power can be some dB higher compared to an
area with denser buildings. The placement of light/dense areas on the map is random. Thus, different
characteristics of the same scenario are modeled implicit. They are covered by the model, but the
user has no influence on where specific characteristics occur on the map when using the automatic
mode. An alternative would be to manually overwrite the automatically generated parameters or use
the manual mode. In order to update the LSPs and use a new set of parameters, a new segment needs
to be created. In this example, an environment change from ”Satellite-NLOS-Urban” to the same
”Satellite-NLOS-Urban” has to be created. Thus, a new set of LSPs is read from the map and new
clusters are generated accordingly.

9. Stopping at traffic lights (NLOS)


This is the same as in point 5.

10. Structural change in environment


Houses have the same characteristics as before but are further away from the street (urban environment
with different reception characteristics). This is the same as point 8.

11. Change of environment (Urban → Forest)


This is the same as in point 2. The segment on the track gets assigned the scenario ”Satellite-Forest”
and a third set of maps (15-21) is generated for the ”Satellite-Forest”-segment. The parameters are
drawn from the corresponding scenario distributions, new channel coefficients are calculated and the
powers of the clusters are ramped up/down.

Copyright: Fraunhofer Heinrich Hertz Institute 22


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

12. Turning off without change of environment (NLOS)


Same as in point 4.

1.7 Compatibility with 3GPP models

This section provides an overview of the implemented 3GPP 36.873 [9] and 3GPP 38.901 [10] model com-
ponents. Some modifications were made in order to make the models consistent. These modifications are
described in the technical documentation (Section 3). 3GPP calibration results are reported in Section 5.

In addition to the small-scale-fading (SSF) model, which is in large parts identical to the WINNER+ model,
3GPP-3D specifies an antenna model, deployment scenarios, as well as path-loss models and parameter tables
for urban-microcell (UMi) and urban-macrocell (UMa) deployments. All essential parts of the 3GPP-3D
model have been implemented in QuaDRiGa as well. However, there are some differences between the two
models which are explained in the following:

Differences between QuaDRiGa and the 3GPP-3D model

• Coordinate system
The 3GPP-3D coordinate system is defined with respect to a spherical coordinate system where the
zenith angle θ = 0◦ points to the zenith and θ = 90◦ points to the horizon. QuaDRiGa uses the
geographic coordinate system where the elevation angle θ = 90◦ points to the zenith and θ = 0◦ points
to the horizon. The conversion between the two is straight forward. To avoid confusion between the
coordinate systems, 3GPP uses the term “zenith”, i.e. zenith angle of arrival (ZoA), zenith angle of
departure (ZoD), zenith angle spread of arrival (ZSA), zenith angle spread of departure (ZSD), while
QuaDRiGa uses the term “elevation”, i.e. elevation angle of arrival (EoA), elevation angle of departure
(EoD), elevation spread of arrival (ESA), elevation spread of departure (ESD).

• Delays, angles and path powers


3GPP-3D uses a heuristically determined Ricean K-factor dependent scaling constant in order to
adjust the delays and angles in LOS scenarios (see [9], pp. 25). QuaDRiGa solves this differently by
first assigning delays and path powers, including the Ricean K-factor (KF) power scaling. Then, the
resulting DS is calculated and the path delays are scaled to the value from the large-scale fading (LSF)
model. This avoids the heuristic scaling. See Section 3.3 for details.

• Intra-cluster delay spread


The 3GPP-3D model splits the two strongest clusters into three sub-clusters (per cluster), with fixed
delay offsets. However, when using the spatial consistency model from 3GPP 38.901 [10], the cluster-
power changes as a function of the MT position. Hence, depending on where the MT is, the strongest
clusters will be different. This will break the spatial consistency when for two neighboring positions,
the two strongest clusters are different ones. Therefore, QuaDRiGa either splits ALL clusters into
three sub-cluster or none. In both cases, spatial consistency is maintained.

• Departure and arrival angles


3GPP-3D obtains the individual angles from mapping the path powers to a wrapped Gaussian or
wrapped Laplacian power-angular spectrum (PAS). Then, heuristically determined scaling factors are
used to adjust the angular values for a different number of paths and the Ricean K-factor (see [9],
pp. 26, step 7 and 8). However, this approach breaks the input-output consistency of the angular
spread, i.e. the angular spread calculated from the channel coefficients for an individual BS-MT link
is not equal to the value given to the SSF model. Only the first-order statistics agree with each other.
QuaDRiGa solves this by creating random angles, calculating the resulting angle spread, and scaling
the angles to obtain the value from the LSF model (see Section 3.3). 1
1
The 3GPP-3D method is implemented as well and can be activated in the simulation setting of QuaDRiGa. However, there

Copyright: Fraunhofer Heinrich Hertz Institute 23


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

• Polarization model
QuaDRiGa has its own polarization model as described in Section 3.5. However, for the calibration,
the model from 3GPP was used (see [9], pp. 26, step 11). The QuaDRiGa polarization model was
originally introduced to correctly model ecliptic cross polarization ratios (XPRs) (e.g. for satellite
channels), which is not covered well by the existing approach. The 3GPP / WINNER polarization
model creates additional random phase shifts which effectively destroy ecliptic polarization in NLOS
channels. These effects also change phase information in the channel coefficients - leading to a different
singular-value spread in cross-polarized channels.

• Wrapping method
QuaDRiGa does not implement a wrapping method for large deployments. Instead, MTs are only
placed inside the inner ring of the BSs, which ensures that the interference from the outer rings is cor-
rectly modeled. An additional option is to add an additional ring of BS.2 However, this roughly doubles
the number of BSs in the deployment (111 instead of 57), adding additional memory requirements and
computation time.

Baseline model features

The following table lists the implemented 3GPP baseline features:

Feature 3GPP Specification QuaDRiGa v2.2.0


Coordinate system TR 36.873 v12.5.0, Sec. 5.1, Page 7 Global coordinate system: Same as 3GPP.
TR 38.901 v14.1.0, Sec. 7.1, Page 14
Local coordinate system: Geographic coordinates
Global coordinate system: Cartesian (elevation θ = 90° points to the zenith, θ = 0° points to
coordinates (in units of meters) with the horizon)
arbitrary origin.
Local coordinate system: Spheric
coordinates (elevation θ = 0° points to
the zenith, θ = 90° points to the
horizon)
Antenna modeling TR 36.873 v12.5.0, Sec. 7.1, Page 17 3GPP antenna models are implemented in the
TR 38.901 v14.1.0, Sec. 7.3, Page 21 ’qd arrayant’ class of the channel model. The 36.873
model is named 3gpp-3d and the 38.901 model is named
3gpp-mmw. See ’qd arrayant.generate’ for available
antenna models.
Polarized antenna TR 36.873 v12.5.0, Sec. 7.1.1, Page 19 The antenna polarization model in QuaDRiGa is
modeling TR 38.901 v14.1.0, Sec. 7.3.2, Page 23 equivalent to ’Model-1’ in 3GPP (see Section 3.5.2).
3GPP defines two model variants 3GPP ’Model-2’ is not implemented.
Pathloss models TR 36.873 v12.5.0, Sec. 7.2.1, Page 20 Path-loss models are implemented in ’qd builder.get pl’.
TR 38.901 v14.1.0, Sec. 7.4.1, Page 24 The scenario-specific parameters are specified in the
configuration files in the folder ’quadriga src\config’.
LOS probability TR 36.873 v12.5.0, Sec. 7.2.2, Page 23 Line-Of-Sight (LOS) probability models are
TR 38.901 v14.1.0, Sec. 7.4.2, Page 27 implemented in ’qd layout.set scenario’.
O2I penetration TR 36.873 v12.5.0, Sec. 7.2.3, Page 24 TR 36.873 models included in path-loss formulas. TR
loss TR 38.901 v14.1.0, Sec. 7.4.3, Page 27 38.901 models implemented in ’qd layout.gen o2i loss’
O2I car TR 38.901 v14.1.0, Sec. 7.4.3.2, Page 29 Not implemented
penetration loss
Autocorrelation of TR 36.873 v12.5.0, Sec. 7.2.4, Page 24 Implemented by the sum-of-sinusoids method in the
shadow fading TR 38.901 v14.1.0, Sec. 7.4.4, Page 29 ’qd sos’ class. See also Section 3.1.1 and [12] for details.

is no difference in the calibration results.


2
There is an automatic function qd layout.generate(’regular’,37) for this.

Copyright: Fraunhofer Heinrich Hertz Institute 24


eMail: [email protected]
QuaDRiGa v2.2.0 1 INTRODUCTION AND OVERVIEW

Feature 3GPP Specification QuaDRiGa v2.2.0


Fast fading model TR 36.873 v12.5.0, Sec. 7.3, Page 24 Baseline model is not used by default! Enable by:
TR 38.901 v14.1.0, Sec. 7.5, Page 29
qd simulation parameters.use 3GPP baseline = 1
Baseline fast fading model.
Some modifications have been made:
An alternative model is used for spatial 1. Matrix square-root is used instead of Cholesky
consistency and multi-frequency decomposition for inter-parameter LSF correlation
simulations in TR 38.901.
2. Cluster delays, angles and powers are calculated
as described in Section 3.3
3. Intra-cluster DS is applied to all clusters

NLOS polarization TR 36.873 v12.5.0, Page 35, Step 10 See Section 3.5. 3GPP polarization model is not used by
model TR 38.901 v14.1.0, Page 35, Step 10 default, but can be enabled by:
qd simulation parameters.use geometric polarization = 0

Additional 3GPP 38.901 modeling components

In addition to the baseline features, 3GPP 38.901 specifies so-called additional features. The implementation
status is as follows:
Feature 3GPP Specification QuaDRiGa v2.2.0
Oxygen absorption TR 38.901 v14.1.0, Sec. 7.6.1, Page 43 Not implemented
Large bandwidth TR 38.901 v14.1.0, Sec. 7.6.2, Page 43 Large array antenna functionality is implemented and
and large antenna used by default. Large bandwidth extension is not
array implemented.
Spatial consistency TR 38.901 v14.1.0, Sec. 7.6.3.1, Page 45 Implemented by the sum-of-sinusoids method in the
procedure ’qd sos’ class. Requires alternative fast fading model
(which is based on UT mobility modeling procedure B
and multi-frequency simulations).
Spatially-consistent TR 38.901 v14.1.0, Sec. 7.6.3.2, Page 46 QuaDRiGa uses drifting (see Section 3.4) for UT
UT mobility 3GPP defines two precedures (A and B) mobility modeling. This is similar to 3GPP procedure
modeling A, but not the same. 3GPP procedure B is implemented
as well. See ’spatial consistency’ tutorial for details.
Spatially-consistent TR 38.901 v14.1.0, Sec. 7.6.3.3, Page 50 Not implemented
LOS/NLOS/indoor
states and O2I
parameters
Blockage TR 38.901 v14.1.0, Sec. 7.6.3, Page 52 Not implemented
Multi-frequency TR 38.901 v14.1.0, Sec. 7.6.5, Page 57 Alternative channel generation method is implemented
simulations and enabled by default. See tutorial
’multi frequency simulations’ for details.
Time-varying TR 38.901 v14.1.0, Sec. 7.6.6, Page 60 QuaDRiGa uses drifting (see Section 3.4) which includes
Doppler shift time-varying Doppler shifts. Variable MT speeds can be
achieved as well. See tutorials ’time evolution’ and
’speed profile interpolation’ for details.
UT rotation TR 38.901 v14.1.0, Sec. 7.6.7, Page 60 Implemented. Can be controlled by the property
’orientation’ of the ’qd track’ class.
Explicit ground TR 38.901 v14.1.0, Sec. 7.6.8, Page 60 Implemented with minor modification. See [13] and
reflection model tutorial ’ground reflection’ for details..

Copyright: Fraunhofer Heinrich Hertz Institute 25


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

2 Software Structure

2.1 Overview

QuaDRiGa is implemented in MATLAB / Octave using an object oriented framework. The user interface
is built upon classes which can be manipulated by the user. Each class contains fields to store data and
methods to manipulate the data.

It is important to keep in mind that all classes in QuaDRiGa are “handle”-classes. This significantly reduces
memory usage and speeds up the calculations. However, all MATLAB variable names assigned to
QuaDRiGa objects are pointers. If you copy a variable (i.e. by assigning “b = a”), only the pointer is
copied. “a” and “b” point to the same object in memory. If you change the values of “b”, the value of “a”
is changed as well. This is somewhat different to the typical MATLAB behavior and might cause errors if
not considered properly. Copying a QuaDRiGa object can be done by “b = a.copy”.

• User input
The user inputs (Point 1 in the programm flow) are provided through the classes:
“qd simulation parameters”, “qd arrayant”, “qd track”, and “qd layout”.

“qd simulation parameters” defines the general settings such as the center frequency and the sam-
ple density. It also enables and disables certain features of the model such as geometric polarization,
spherical waves, and progress bars.
“qd arrayant” combines all functions needed to describe array antennas.
“qd track” is used to define user trajectories, states and segments.
“qd layout” combines the tracks and antenna properties together with further parameters such as
satellite positions (e.g. for simulations including satellites).

• Internal processing
Internal processing steps are done by the classes “qd sos” and “qd builder”.

“qd sos” is responsible for generating spatially correlated random variables based on the sum-of-
sinusoids method.
“qd builder” creates the channel coefficients. It is responsible for generating LSPs for the cluster
generation, the cluster generation, and the MIMO channels. It implements steps 2-7 of the program
flow.

• Model output
The final two steps (8 and 9) of the program flow are implemented in the class “qd channel”. Objects
of this class hold the data for the channel coefficients. The class also implements the channel merger,
which creates long time evolving sequences out of the snapshots produced by the channel builder.
Additional functions such as the transformation into frequency domain can help the user to further
process the data.

An overview of the model software is depicted in Fig. 4. The unified modeling language (UML) class diagram
of the QuaDRiGa channel model gives an overview of all the classes, methods and properties of the model.
The class diagram serves as a reference for the following descriptions which also lists the methods that
implement a specific functionality.

Copyright: Fraunhofer Heinrich Hertz Institute 26


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

<<control>>
qd_builder
+name
1
+scenario
+scenpar
1
+plpar
+simpar
1 1
+tx_array
<<input>> +rx_array
qd_simulation_parameters <<input>> +tx_track
+sample_density qd_track +rx_track
+tx_position
+samples_per_meter +name
1 +rx_positions
+center_frequency +no_snapshots
+sos
+use_3GPP_baseline +initial_position
1...* +gr_sos
+use_absolute_delays +positions
+path_sos
+use_random_initial_phase +orientation
+xpr_sos
+show_progress_bars +movement_profile
+pin_sos
+autocorrelation_function +no_segments
+clst_dl_sos
#version +segment_index
+ds
#speed_of_light +scenario
+kf
#wavelength +par
+sf
+copy() #closed
+asD
+set_speed() +add_segment(): array +asA
+calc_orientation(): array +esD
+copy(): array +esA
+correct_overlap(): array +xpr
<<input>> +generate(): static +gr_epsilon_r
qd_arrayant +get_length(): array +NumClusters
+name +get_subtrack() +NumSubPaths
+center_frequency +interpolate() +taus
1...* +interpolate_positions(): array +pow
+elevation_grid
+azimuth_grid +set_scenario(): array +AoD
+no_elements +set_speed(): array +AoA
+element_position +split_segment(): array +EoD
+Fa 1...* +EoA
+Fb +gamma
+coupling +kappa
#no_az +pin
#no_el +subpath_coupling
+append_array() +fbs_pos
+beam_explorer() uses +lbs_pos
+calc_element_position() 1 #dual_mobility
+calc_gain() #no_rx_positions
<<input>>
+combine_pattern() #lsp_vals
qd_layout #lsp_xcorr_chk
+copy(): array
+copy_element() +name +lsp_xcorr
1
+generate(): static +simpar +check_dual_mobility(): array
+interpolate() +update_rate +gen_parameters(): array
+normalize_gain() +no_tx +get_angles()
+no_rx 1
+rotate_pattern() +get_channels(): array
+set_grid(): array +tx_name +get_distances()
+sub_array() +tx_position +get_los_channels(): array
+visualize() +tx_array <<control>> +get_lsp_map()
1...* +tx_track
+xml_read() qd_sos +get_pl()
+xml_write() +rx_name +get_sf_profile()
+rx_position +name
+init_sos()
+rx_array +distribution
+set_scenario_table()
+rx_track +dist_decorr
+split_multi_freq(): array
+pairing #dimensions
+supported_scenarios(): static
#no_links #no_coefficients
1 +visualize_clusters()
#dual_mobility #dist
#acf
+copy() uses #sos_freq creates
+gen_o2i_loss()
#sos_phase
+generate(): static
#sos_amp
+get_channels() <<output>>
+init_builder() +acf_2d()
1...* qd_channel
+kml2layout() +acf_approx()
+layout2kml() +acf_estimate() +name
+power_map() +acfi() +version
+randomize_rx_positions() +calc_mse() +center_frequency
+set_pairing() +copy(): array +coeff
+set_satallite_pos() +generate(): static +delay
Underlined +set_scenario() +init(): array +par
methods use +visualize() +load(): static +initial_position
"qd_builder" +map() +tx_position
+rand(): static +rx_position
+randi(): static #no_rxant
+randn(): static #no_txant
+save() #no_path
+set_acf() #no_snap
+val() +individual_delays
+combine_tx_rx()
merges with
+copy(): array
+fr()
+hdf5_load()
+hdf5_save()
+interpolate()
orders construction of
+merge()
+quantize_delays()
+split_snap()
+split_tx()

Figure 4: UML class diagram of the model software.

Copyright: Fraunhofer Heinrich Hertz Institute 27


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

2.2 Description of Classes, Properties, and Methods

In the following, all properties and methods of the QuaDRiGa classes are described. For the methods,
input and output variables are defined and explained. There are three types of methods: Standard methods
require an instance of a class. They are printed in black without the class name:

par = generate parameters ( overlap, usage, check parfiles, verbose )


Calling object Single object
Description Method description

Static methods can be called directly from the command line without creating an instance of the class first.
They are printed in blue:

[ h array, mse, mse pat ] = qd array.import pattern ( fVi, fHi )


Calling object None (static method)
Description Method description

The constructor is a special method that is called when the class name is used as a function, e.g. when
calling a = qd array(’dipole’). There is only one constructor for each class. They are printed in blue.

h array = qd array ( array type, phi 3dB, theta 3dB, rear gain )
Calling object None (constructor)
Description Method description

In addition, methods can either be called on single objects of a class or arrays of objects of the same class.
This is specified by the field “Calling object”. It can have three options:

• None (for constructors and static methods)


• Scalar object (method can only be called on single objects of a class)
• Object array (method can be called on single objects and arrays of objects of the same class)

Note that calls to object arrays work different in MATLAB and Octave. The following code works in
MATLAB only:
1 a = qd_arrayant ; % Create a r r a y a n t object
2 a (2) = qd_arrayant ; % Create another a r r a y a n t object (" a " now has two e l e m e n t s )
3 a (2) . name = ’ test ’; % Assign name to second object ( fails in Octave )
4 b = a . copy ; % Copy the entire object array ( fails in Octave )

Octave 4.0 and 4.2 have limited support for classes and contain some bugs. Line 3 fails because linear indexing
of object arrays is buggy in those versions. Line 4 fails because the calling method is not implemented. The
following code works on both platforms, MATLAB and Octave:
1 a = qd_arrayant ; % Create a r r a y a n t object
2 a (1 ,2) = qd_arrayant ; % Always use correct array i n d e x i n g in Octave
3 a (1 ,2) . name = ’ test ’; % Assign name ( works in Octave due to array i n d e x i n g )
4 b = copy ( a ) ; % Call the copy method and provide " a " as input

Copyright: Fraunhofer Heinrich Hertz Institute 28


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

2.2.1 Class “qd simulation parameters”

This class controls the simulation options and calculates constants for other classes.

Properties

sample density The number of samples per half-wave length


Sampling density describes the number of samples per half-wave length. To fulfill the sampling the-
orem, the minimum sample density must be 2. For smaller values, interpolation of the channel for
variable speed is not possible. On the other hand, high values significantly increase the computing
time significantly. A good value is around 1.2 for single-mobility and 2.5 for dual-mobility.
samples per meter Samples per meter
This parameter is linked to the sample density by
SD
fS = 2 · fC ·
c
where fC is the carrier frequency in Hz, SD is the sample density and c is the speed of light.
center frequency Center frequency in [Hz]. For multi-frequency simulations, a vector of frequency values may be defined.
use 3GPP baseline Enables or disables the 3GPP baseline model.
use 3GPP baseline = 0 (default)
Disables the 3GPP baseline model and uses enhanced QuaDRiGa features:
• This option uses spherical waves at both ends, the transmitter and the receiver. This method
uses a multi-bounce model where the departure and arrival angles are matched such that the
angular spreads stay consistent.
• Uses the polarization rotation with an additional phase offset between the H and V component
of the NLOS paths. The offset angle is calculated to match the XPR for circular polarization.

use 3GPP baseline = 1


Disables all QuaDRiGa features that are not specified by 3GPP.
• Applies rotating phasors to each path which emulates time varying Doppler characteristics.
Paths are not tracked and mobility is limited to maximum 10 m.
• The large-scale parameters (departure and arrival angles, shadow fading, delays, etc.) are not
updated for terminal mobility.
• The phases at the array antennas are calculated by a planar wave approximation.
• Spatial consistency is not available.
• Multi-frequency simulations are not supported.
• No polarization rotation is calculated. The polarization transfer matrix contains random pha-
sors scaled to match the XPR.

use absolute delays Returns absolute delays in channel impulse response (CIR).
By default, delays are calculated such that the LOS delay is normalized to 0. By setting
’use absolute delays’ to 1 or ’true’, the absolute path delays are included in ’qd channel.delays’
at the output of the model.
use random Initializes each path with a random initial phase
initial phase By default, each path is initialized with a random phase (except the LOS path and the optional ground
reflection). Setting ”use random initial phase” to false disables this function. In this case, each
path gets initialized with a zero-phase.
show progress bars Show a progress bar on the MATLAB / Octave prompt. If this doesn’t work correctly, you need to
enable real-time output by calling ”more off”.
autocorrelation The autocorrelation function for generating correlated model parameters.
function An autocorrelation function (ACF) is a description of the correlation vs. distance. This function is
approximated by a Fourier series. The coefficients of the series can be used to generate spatially
correlated random variables in the qd sos class. There are 3 ACF types that can be selected. The
coefficients are precomputed for 150, 300, 500, and 1000 sinusoids.
• Exponential ACF (Exp150, Exp300, Exp500, Exp1000 )
• Gaussian ACF (Gauss150, Gauss300, Gauss500, Gauss1000 )
• Combined Gaussian and Exponential ACF (Comb150, Comb300, Comb500, Comb1000)

version Version number of the current QuaDRiGa release (constant)


speed of light Speed of light (constant)
wavelength Carrier wavelength in [m] (read only)

Copyright: Fraunhofer Heinrich Hertz Institute 29


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

Methods
h simpar = qd simulation parameters
Calling object None (constructor)
Description Creates a new ’qd simulation parameters’ object with default settings

out = copy
Calling object Object array
Description Creates a copy of the handle class object or array of objects.
While the standard copy command creates new physical objects for each element of the object array
(in case obj is an array of object handles), copy checks whether there are object handles pointing to
the same object and keeps this information.
Output out Copy of the current object or object array

set speed ( speed kmh, sampling rate s )


Calling object Single object
Description This method can be used to automatically calculate the sample density for a given mobile speed
Input speed kmh speed in [km/h]
sampling rate s channel update rate in [s]

2.2.2 Class “qd arrayant”

This class combines all functions to create and edit array antennas. An array antenna is a set of single
antenna elements, each having a specific beam pattern, that can be combined in any geometric arrangement.
A set of synthetic arrays that allow simulations without providing your own antenna patterns is provided
(see generate method for more details).

Properties

name Name of the array antenna


center frequency Center frequency in [Hz]
no elements Number of antenna elements in the array
Increasing the number of elements creates new elements which are initialized as copies of the first
element. Decreasing the number of elements deletes the last elements from the array.
elevation grid Elevation angles (phi) in [rad] where samples of the field patterns are provided
The field patterns are given in spherical coordinates. This variable provides the elevation sampling
angles in radians ranging from − π2 (downwards) to π2 (upwards).
azimuth grid Azimuth angles (theta) in [rad] were samples of the field patterns are provided
The field patterns are given in spherical coordinates. This variable provides the azimuth sampling
angles in radians ranging from −π to π.
element position Position of the antenna elements in local cartesian coordinates (using units of [m])
Fa The first component of the antenna pattern contains the vertical component of the electric field given
in spherical coordinates (aligned with the phi direction of the coordinate system). This variable is a
tensor with dimensions [ elevation, azimuth, element-index ] describing the e-theta component of the
far field of each antenna element in the array.
Fb The second component of the antenna pattern contains the horizontal component of the electric field
given in spherical coordinates (aligned with the theta direction of the coordinate system). This variable
is a tensor with dimensions [ elevation, azimuth, element-index ] describing the e-phi component of
the far field of each antenna element in the array.

Copyright: Fraunhofer Heinrich Hertz Institute 30


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

coupling Coupling matrix between elements


This matrix describes a pre or postprocessing of the signals that are fed to the antenna elements. For
example, in order to transmit a left hand circular polarized (LHCP) signal, two antenna elements are
needed. They are then coupled by a matrix
 
1 1

2 j

The rows in the matrix correspond to the antenna elements, the columns to the signal ports. In this
example, the antenna has one port, i.e. it is fed with one input signal. This signal is then split into
two and fed to the two antenna elements where the second element radiates the signal with 90° phase
shift.
In a similiar fasion, it is possible to create fixed beamforming antennas and include crosstalk between
antenna elements. By default, ’coupling’ is set to an identity matrix which indicates perfect isolation
between the antenna elements.
no az Number of azimuth values
no el Number of elevation values

Methods
h array = qd arrayant ( array type, varargin )
Calling object None (constructor)
Description Creates a new array object.
The constructor calls qd arrayant.generate to create new array antennas. If no input is specified,
a vertically polarized omni-antenna is generated. See ’qd arrayant.generate’ for a description of the
input parameters and the list of supported antenna types.

append array ( a )
Calling object Single object
Description Appends an array antenna to the existing one
This method appends the array antenna given in ”a” to the existing array object. The antenna patterns
from ”a” are copied to the calling object. For example, if the calling object has 3 elements and ”a”
has 2 elements, the two elements are added to the calling object which now has 5 elements. Element
positions and coupling factors are copied as well.
Input a The array object which is appended to the current array object (scalar object).

beam explorer ( Jp )
Calling object Single object
Description Creates an interactive plot of the beam-forming capabilities of an array antenna
When applying maximum-ratio transmission (MRT) to calculate the coupling weights of an array
antenna, it is possible to direct a beam towards a given direction. However, the antenna geometry
(i.e. the positions and the orientations of the individual elements) and the shape of the individual
element-patterns will determine the overall shape of the beam and the existence and magnitude of
so-called sidelobes.
This method creates an interactive plot that uses the mouse pointer position to determine the target
direction. The y-axis corresponds to the elevation direction and the x-axis corresponds to the azimuth
direction relative to the local antenna coordinate system. Then, the method calculates the MRT-
weights that direct the beam towards this position and applies it to the antenna pattern. The plot is
then updated in real-time to visualize the radiated power using MRT beamforming. The maximum is
normalized to 1, the minimum is normalized to 0. Ideally, the array antenna creates a single narrow
beam that coincides exactly with the target direction, i.e. the maximum is always under the mouse
pointer. However, design limitations (i.e., using planar or circular arrays, number of elements, etc.) will
either lead to unwanted side-lobes or a widening of the main lobe. By clicking the left mouse button,
the animation is paused and it is possible to use the data-pointer to read the values from the plot.
Note: It is important to set the correct center frequency in the array object.
Input Jp The polarization (Jones-vector) of the probe antenna, Default [ 1 ; 0 ]

Copyright: Fraunhofer Heinrich Hertz Institute 31


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

[ gain dBi, pow max ] = calc gain ( i element )


Calling object Single object
Description Calculates the gain in dBi of the array antenna
Input i element A list of element indices.
Output gain dBi Normalized Gain of the antenna in dBi.
pow max Maximum power in main beam direction in dBi.

element position = calc element position ( verbose )


Calling object Single object
Description Calculates the element positions from the antenna patterns
When an antenna pattern is measured in an anechoic chamber, the phase center, i.e. the point from
which the electromagnetic radiation spreads spherically outward with the phase of the signal being
equal at any point on the sphere, is relative to the rotation center of the positioner. This method
calculates the element positions relative to the phase center of the array and adjusts the phases of the
individual elements such that their phase center is centered at the element position.
The maximum radius of the array antenna cannot exceed 20 wavelengths and the resolution of the
position estimation is set to 0.02 wavelengths.
Input verbose A value of 1 (default) shows a progress bar for the calculations. A value of 2 shows
a plot visualizing the estimation process.
Output element position Position of the antenna elements in local cartesian coordinates (using units of [m])

combine pattern ( center frequency )


Calling object Single object
Description Calculates a virtual pattern of the given array
When the inputs of an array antenna are coupled (i.e. fed with the same signal), then it is possible to
combine the elements of the array. This function calculates the virtual pattern by using the QuaDRiGa
simulator. Individual coupling weights can be set in the ”coupling” property of the qd arrayant object.
Phase offsets of the individual antenna elements due to their positions in the array (”element position”
property of the calling qd arrayant object) are calculated for the phase center of the array.
Input center frequency The center frequency in [Hz]. If this input variable is not given, it is assumed that
the element spacings in the ”element position” property of the calling arrayant
object are given in multiples of the carrier wavelength.

out = copy
Calling object Object array
Description Creates a copy of the handle class object or array of objects
While the standard copy command creates new physical objects for each element of the object array
(in case obj is an array of object handles), copy checks whether there are object handles pointing to
the same object and keeps this information.
Output out Copy of the current object or object array

copy element ( i source, i target )


Calling object Single object
Description Creates a copy of an antenna element
Input i source Index of the array object that should be copied. The value must be scalar, integer
and greater than 0 and it can not exceed the array size.
i target Target can be a scalar or vector with elements > 0.

par = qd arrayant.generate ( array type, Ain, Bin, Cin, Din, Ein, Fin, Gin, Hin, Iin, Jin )
Calling object None (static method)
Description Generates predefined array antennas
Array types omni An isotropic radiator with vertical polarization.
dipole A short dipole radiating with vertical polarization.
half-wave-dipole A half-wave dipole radiating with vertical polarization.
patch A vertically polarized patch antenna with 90° opening in azimuth and elevation.

Copyright: Fraunhofer Heinrich Hertz Institute 32


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

custom An antenna with a custom gain in elevation and azimuth. The values A,B,C and
D for the parametric antenna are returned.
Ain - 3dB beam width in azimuth direction
Bin - 3dB beam width in elevation direction
Cin - Isotropic gain (linear scale) at the back of the antenna

parametric An antenna with the radiation pattern set to


p
Eθ = A · B + (1 − B) · (cos θ)C · exp(−D · φ2 )
multi A multi-element antenna with adjustable electric downtilt.
Ain - Number of elements stacked in elevation direction
Bin - Element spacing in [λ]
Cin - Electric downtilt in [deg]
Din - Individual element pattern ”Fa” for the vertical polarization
Ein - Individual element pattern ”Fb” for the horizontal polarization

3gpp-macro An antenna with a custom gain in elevation and azimuth. See. 3GPP TR 36.814
V9.0.0 (2010-03), Table A.2.1.1-2, Page 59
Ain - Half-Power in azimuth direction (default = 70 deg)
Bin - Half-Power in elevation direction (default = 10 deg)
Cin - Front-to back ratio (default = 25 dB)
Din - Electrical downtilt (default = 15 deg)

3gpp-3d The antenna model for the 3GPP-3D channel model (TR 36.873, v12.5.0, pp.17).
Ain - Number of vertical elements (M )
Bin - Number of horizontal elements (N )
Cin - The center frequency in [Hz]
Din - Polarization indicator
1. K=1, vertical polarization only
2. K=1, H/V polarized elements
3. K=1, +/-45 degree polarized elements
4. K=M, vertical polarization only
5. K=M, H/V polarized elements
6. K=M, +/-45 degree polarized elements
Ein - The electric downtilt angle in [deg] for Din = 4,5,6
Fin - Element spacing in [λ], Default: 0.5

3gpp-mmw Antenna model for the 3GPP-mmWave channel model (TR 38.901, v14.1.0, pp.21).
The parameters “Ain” - “Fin” are identical to the above model for the “3gpp-3d”
channel model. Additional parameters are:
Gin - Number of nested panels in a column (M g)
Hin - Number of nested panels in a row (N g)
Iin - Panel spacing in vertical direction (dg, V ) in [λ], Default: 0.5 M
Jin - Panel spacing in horizontal direction (dg, H) in [λ], Default: 0.5 N

parabolic An ideal parabolic reflector antenna with input parameters:


Ain - Radius of the antenna aperture in [meters]
Bin - Center frequency in [Hz]
Cin - Min. sidelobe power relative to directivity in [dB] (default: -40 dB)
Din - Polarization indicator
1. vertical (E-theta) polarization (default)
2. horizontal (E-phi) polarization
3. LHCP
4. RHCP
5. dual-polarized two-port antenna (LHCP, RHCP)

xpol Two elements with ideal isotropic patterns (vertical polarization). The second
element is slanted by 90°.

Copyright: Fraunhofer Heinrich Hertz Institute 33


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

rhcp-dipole Two crossed dipoles with one port. The signal on the second element (horizontal)
is shifted by -90° out of phase. The two elements thus create a right hand circular
polarized (RHCP) signal.
lhcp-dipole Two crossed dipoles with one port. The signal on the second element (horizontal)
is shifted by 90° out of phase. The two elements thus create a left hand circular
polarized (LHCP) signal.
lhcp-rhcp-dipole Two crossed dipoles. For input port 1, the signal on the second element is shifted
by +90° out of phase. For input port 2, the the signal on the second element is
shifted by -90° out of phase. Port 1 thus transmits a LHCP signal and port 2
transmits a RHCP signal.
ula2 Uniform linear arrays composed of 2 omni-antennas (vertical polarization) with 10
cm element spacing.
ula4 Uniform linear arrays composed of 4 omni-antennas (vertical polarization) with 10
cm element spacing.
ula8 Uniform linear arrays composed of 8 omni-antennas (vertical polarization) with 10
cm element spacing.
vehicular Generates array antennas for vehicle UEs according to 3GPP TR 37.885 V15.1.0.
Ain - vehicle type
1. passenger vehicle w/ bumper antennas
2. passenger vehicle w/ rooftop antennas
3. bus/truck w/ rooftop antennas
Bin - frequency range
1. below 6 GHz
2. above 6 GHz
Cin - model option
1. antennas based on macro BS antenna pattern
2. antenna patterns based on simulated vehicle mounted antennas

Input array type One of the above array types.


Ain - Jin Additional parameters for the array antenna (see above).
Output par The parameters A, B, C, and D for the ”parametric” antenna type.

[ V, H, CP, dist ] = interpolate ( azimuth, elevation, i element )


Calling object Single object
Description Interpolates the field pattern
Interpolation of the beam patterns is very computing intensive. It must be performed several thou-
sands of times during a simulation run. Therefore, optimized 2D linear interpolation is used. There
are additional input parameters specified in the .m-File that are not in the list below. Those pa-
rameters correspond to the properties of the ’qd arrayant’ class. Passing those variables during the
function call takes less time than reading them from the object properties. This is used internally in
’qd builder.get channels’ but is irrelevant here.
Input azimuth A vector of azimuth angles in [rad]
elevation A vector of elevation angles in [rad]
i element The element indices for which the interpolation is done. If no element index is
given, the interpolation is done for all elements in the array.
Output V The interpolated vertical field pattern (θ-component)
H The interpolated horizontal field pattern (φ-component)
dist The effective distances between the antenna elements when seen from the direction
of the incident path. The distance is calculated by an projection of the array
positions on the normal plane of the incident path. This is needed for the planar
wave approximation.

Copyright: Fraunhofer Heinrich Hertz Institute 34


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

gain dBi = normalize gain ( i element, gain )


Calling object Single object
Description Normalizes all patterns to their gain
Input i element A list of elements for which the normalization is done. Default: All elements
gain The gain that should be set in the pattern. If this variable is not given, the gain
is calculated from the pattern
Output gain dBi Normalized gain of the antenna

rotate pattern ( deg, rotaxis, i element, usage )


Calling object Single object
Description Rotates antenna patterns
Pattern rotation provides the option to assemble array antennas out of single elements. By setting the
’element position’ property of an array object, elements can be placed at different coordinates. In
order to freely design arbitrary array configurations, however, elements often need to be rotated (e.g.
to assemble a +/- 45° crosspolarized array out of single dipoles). This functionality is provided here.
Input deg The rotation angle in [degrees] ranging from -180° to 180°
rotaxis The rotation axis specified by the character ’x’,’y’, or ’z’.
i element The element indices for which the rotation is done. If no element index is given,
the rotation is done for all elements in the array.
usage The optional parameter ’usage’ can limit the rotation procedure either to the
pattern or polarization. Possible values are:
• 0: Rotate both (pattern+polarization) - default
• 1: Rotate only pattern
• 2: Rotate only polarization

mse = set grid ( azimuth grid, elevation grid )


Calling object Single object
Description Sets a new grid for azimuth and elevation and interpolates the pattern
This function replaces the properties ’azimuth grid’ and ’elevation grid’ of the antenna object with
the given values and interpolates the antenna patterns to the new grid.
Input azimuth grid Azimuth angles in [rad] were samples of the field patterns are provided
The field patterns are given in spherical coordinates. This variable provides the
azimuth sampling angles in radians ranging from −π to π.
elevation grid Elevation angles in [rad] were samples of the field patterns are provided
The field patterns are given in spherical coordinates. This variable provides the
elevation sampling angles in radians ranging from − π2 (downwards) to π2 (upwards).
use interpolate Switch to enable (1, default) or disable (0) the antenna pattern interpolation.
Output mse The mean-square error in [dB] that is achieved when interpolating the array an-
tenna with the new grid back to the original grid. Larger values are better. Values
close to zero or below zero indicate that that pattern sampling interval is too low
to reconstruct the phases of the original pattern. The pattern has become useless.

a = sub array ( i element )


Calling object Single object
Description Generates a sub-array with the given array indices
This function creates a copy of the given array with only the selected elements specified in i element.
Input i element A list of element indices
Output a An arrayant object with the desired elements

h figures = visualize ( i element )


Calling object Single object
Description Create a plot showing the element configurations
Input i element The element indices for which the plot os created. If no element index are given,
a plot is created for each element in the array.
Output h figures The figure handles for further processing of the images.

Copyright: Fraunhofer Heinrich Hertz Institute 35


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

[ Fa, Fb, azimuth grid, elevation grid, element position ] = wrap grid ( i element, precision )
Calling object Single object
Description Wraps the antenna patterns around the unit sphere
This function reads the antenna patterns from the qd arrayant object and checks if the pattern is
wrapped. This is defined as:
• The first angle in the azimuth grid is smaller or equal to -pi
• The last angle in the azimuth grid is larger or equal to pi
• The first elevation angle is -pi/2
• The last elevation angle is pi/2
These conditions are required for the antenna pattern interpolation which can only interpolate, but
not extrapolate. The output of this function are the completed patterns.
Input i element The element indices that should be returned.
precision If set to ’single’, single precision variables are returned.
Output Fa The first component of the antenna pattern
Fb The second component of the antenna pattern
azimuth grid Azimuth angles (theta) in [rad]
elevation grid Elevation angles (phi) in [rad]
element position Position of the antenna elements

[ h array, l ] = qd arrayant.xml read ( fn, fid, pfx, l, ignore layout )


Calling object None (static method)
Description Reads antenna patterns from a QDANT XML file
The QuaDRiGa array antenna exchange format (QDANT) is a file format used to store antenna pat-
tern data in XML and load them into QuaDRiGa. The file format specification is described in the
documentation. This method loads the correctly formatted XML file into a qd arrayant object array.
Input fn Filename of the QDANT XML file.
fid An integer that identifies an already opened file for subsequent low-level file I/O
operations (e.g. used when loading antenna data embedded in a KML file).
pfx XML namespace declaration (string). It is possible to use a prefix to avoid name
conflicts when embedding QuaDRiGa antennas in other XML formats. The vari-
able ”pfx” is only required if the XML file uses a namespace to identify the antenna
objects.
l Current line of the already opened file identified by fid.
ignore layout Boolean value. By default (0), the layout of multiple qd arrayant objects is stored
in the QDANT file. This layout is restored by xml read. Setting ignore layout
to 1 loads all qd arrayant objects in a [1 x N] object array.
Output h array Array of qd arrayant objects.
l Last line of an already opened file identified by fid that was processed by xml read.

xml write ( fn, pfx, id, fid )


Calling object Object array
Description Writes antenna patterns into a QDANT XML file
The QuaDRiGa array antenna exchange format (QDANT) is a file format used to store antenna pattern
data in XML. The file format specification is described in the documentation. This method saves a
qd arrayant object array to a XML file.
Input fn Filename of the QDANT XML file.
pfx String defining the namespace (optional). It is possible to use a prefix to avoid
name conflicts when embedding QuaDRiGa antennas in other XML formats. When
using a prefix in XML, a namespace for the prefix must be defined.
id Integer number defining the array antenna ID (optional). If multiple array an-
tennas are stored in the same file, each antenna must be identified by an unique
ID.
fid An integer that identifies an already opened file for subsequent low-level file I/O
operations (optional).

Copyright: Fraunhofer Heinrich Hertz Institute 36


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

2.2.3 Class “qd track”

One feature of the channel model is the continuous evolution of wireless channels when the terminal moves
through the environment. A track describes the movement of a mobile terminal. It is composed of an
ordered list of positions. During the simulation, one snapshot is generated for each position on the track.

Along the track, wireless reception conditions may change, e.g. when moving from an area with LOS to a
shaded area. This behavior is described by segments, or states. A segment is a subset of positions that have
similar reception conditions. Each segment is classified by a segment index (i.e. the center position of the
segment) and a scenario.

Properties

name Name of the track


no snapshots Number of positions on the track
initial position Position offset (will be added to positions)
This position is given in global cartesian coordinates (x,y, and z-component) in units of [m]. The
initial position normally refers to the starting point of the track. If the track has only one segment,
it is also the position for which the LSPs are calculated. The initial position is added to the values in
the positions variable.
positions Ordered list of positions relative to the initial position
QuaDRiGa calculates an instantaneous channel impulse response (also called snapshot) for each po-
sition on the track.
orientation This 3-element vector describes the orientation of the radio device for each position on the track. The
reference system for aircraft principal axes is used. The first value describes the ”bank angle”, i.e.
the orientation around an axis drawn through the body of the vehicle from tail to nose in the normal
direction of movement. Positive rotation is clockwise (seen from the pilot/drivers perspective). The
second value describes the ”tilt angle”, i.e. the vertical angle relative to the horizontal plane; positive
values point upwards. The third value describes the bearing or ”heading angle”, in mathematic sense.
Heading is used to describe the direction an object is pointing. In contrast, the course angle refers to
the direction an object is actually moving. East corresponds to 0, and the angles increase counter-
clockwise, so north is 90 degree degrees, south is -90 degree, and west is 180 degree. All values are
given in [rad]. Note that by default, QuaDRiGa antennas face east (bank = 0, tilt = 0, heading = 0).
movement profile Time (in sec) vs. distance (in m) for speed profile
QuaDRiGa supports variable terminal speeds. This is realized by interpolating the channel coefficients
at the output of the model. The variable ’track.movement profile’ describes the movement along
the track by associating a time-point with a distance-point on the track. An example is:
1 t . m o v e m e n t _ p r o f i l e = [ 0 ,7 ; 5 ,0 ; 6 ,0 ; 20 ,20 ] ’;
2 dist = t . i n t e r p o l a t e _ m o v e m e n t ( 1e -3 ) ;
3 ci = cn . interpolate ( dist , t . get_length ) ;

See also the tutorial “Applying Varying Speeds (Channel Interpolation)” for more details.
no segments Number of segments or states along the track
segment index Starting point of each segment given as index in the ’positions’ vector
scenario Scenarios for each segment along the track
This variable contains the scenario names for each segment as a cell array of strings. A list of
supported scenarios can be obtained by calling ’qd builder.supported scenarios’. If there is only
one transmitter (i.e. one base station), the cell array has the dimension [1 x no segments]. For multiple
transmitters, the rows of the array may contain different scenarios for each transmitter. For example,
in a multicell setup with three terrestrial base stations, the propagation conditions may be different
to all BSs. Hence, cell arrays have a dimension [3 x no segments].
par Field for storing additional data
closed Indicates that the track is a closed curve

Copyright: Fraunhofer Heinrich Hertz Institute 37


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

Methods
h track = qd track ( track type, varargin )
Calling object None (constructor)
Description Creates a new track object
The constructor calls qd track.generate to create new tracks. If no input is specified, a linear track
with 1 m length is generated. See ’qd track.generate’ for a description of the input parameters and the
list of supported antenna types.

d min = add segment ( pos, scenario, threshold )


Calling object Object array
Description Adds segments to a qd track object of array of objects
This method can be used to add segments to an existing qd track object or array of qd track objects.
The variable pos defines the position where the segment should start. Ideally, this positions lies on a
track. However, if it doesn’t lie on a track, the closest point on the nearest track is used. If the track
has no point at this position, a new one will be created. For example, a 100 m long linear track is
defined by its start and end point (the qd track object contains two positions, 0 and 100 meters). If
a new segment should start at 50 m relative to the track start, the add segment method will create a
new point at 50 m and assign the segment to it. The qd track object will then contain 3 points (0 m,
50 m and 100 m).
Input pos A 3-element vector [x;y;z] in metric Cartesian coordinates defining the start-
position of the new segment (required).
scenario A string or cell-array of strings providing the scenario name (optional). Sce-
nario names are defined by the configuration files in the config folder of the
QuaDRiGa installation. A list of supported scenarios can be obtained by calling
”qd builder.supported scenarios”. The scenario cell-array can only have one
column. Rows are for different transmitters. If scenario is not defined, no new
points are added to the track, but the distances are calculated.
threshold A scalar value in meters describing the minimum distance to an existing point on a
track at which no new point is created, but the scenario is assigned to the existing
point (optional). The default value is 0.1 meters.
Output d min An array of floating point numbers describing the distance to each track in the
array of qd track objects. The scenario is assigned to the object with the minimum
distance.

calc orientation
Calling object Object array
Description Calculates the orientation of the mobile device from the positions
This function calculates the orientations of the mobile device based on the snapshot positions. If we
assume that the receive array antenna is fixed on a car and the car moves along the track, then the
antenna turns with the car when the car is changing direction. This needs to be accounted for when
generating the channel coefficients. This function calculates the orientation based on the positions and
stores the output in the orientation property of the track object.
The 3-element orientation vector describes the orientation of the radio device for each position on the
track. The reference system for aircraft principal axes is used. The first value describes the ”roll
angle”, i.e. the rotation around an axis drawn through the body of the vehicle from tail to nose in the
normal direction of movement. Positive rotation is clockwise (seen from the pilot/drivers perspective).
This values is set to 0 when using ”calc orientation”. The second value describes the ”pitch angle”,
i.e. the vertical (tilt) angle relative to the horizontal plane; positive rotation is up. The third value
describes the bearing or ”yaw angle”, in mathematic sense. East corresponds to 0, and the angles
increase counter-clockwise, so north is 90 degree degrees, south is -90 degree, and west is 180 degree.
All values are given in [rad]. Note that by default, QuaDRiGa antennas face east (roll = 0, pitch = 0,
yaw = 0).

Copyright: Fraunhofer Heinrich Hertz Institute 38


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

out = copy
Calling object Object array
Description Creates a copy of the handle class object or array of objects.
While the standard copy command creates new physical objects for each element of the object array
(in case obj is an array of object handles), copy checks whether there are object handles pointing to
the same object and keeps this information.
Output out Copy of the current object or object array

correct overlap ( overlap )


Calling object Object array
Description Corrects positions of the segment start to account for the overlap.
After the channel coefficients are calculated, adjacent segments can be merged into a time-continuous
output. The merger assumes that the merging interval happens at the end of one segment, before a
new segments starts. In reality, however, the scenario change happens in the middle of the overlapping
part (and not at the end of it). This function corrects the position of the segment start to account for
that.
Input overlap The length of the overlapping part relative to the segment length. It can have
values in between 0 (no overlap) and 1 (ramp along the entire segment). The
default value is 0.5. You need to make sure that the same value is used when
calling ”qd channel.merge”.

h track = qd track.generate ( track type, track length, direction, street length min, street length mu, street length std,
curve radius, turn probability )
Calling object None (static method)
Description Generate tracks
This function creates tracks with specific properties. Currently supported are ”linear”, ”circular” and
”street”.
Track types linear Creates a linear track with given length and direction.
Direction describes the travel direction along the track in [rad] in mathematical
sense (i.e. 0 means east, pi/2 means north, pi means west and -pi/2 south). If
”track length” or ”direction” is not specified, then the default track is 1 m long
and has a random direction.
circular Creates a circular track with given length and starting-direction.
Direction defines the starting point on the circle in [rad]. Positive values define
the travel direction as counter clock-wise and negative values as clock-wise. E.g. 0
sets the start point in the east of the circle, traveling north; -2π sets it in the east,
traveling south. The default is random.
street Emulates a drive route through a city grid.
The mobile terminal starts at point 0, going into a specified direction. The trajec-
tory grid is build from street segments. The length of each street is specified by the
parameters ’street length min’, ’street length mu’, and ’street length sigma’.
At the end of a street (i.e. at a crossing), the terminal turns with a probability
specified by ’turn probability’. The change of direction is in between 75 and 105
degrees either left or right. The radius of the curve is given by ’curve radius’.
The track is set up in a way that prevents driving in circles.
Input track type The type of the track
track length the length in [m]
direction specifies the driving direction in [rad] of the first segment in mathematical sense
(0 means east, pi/2 means north). The default value is random
street length min the minimal street length in [m]. The default is 50 m. (for type ”street” only)
street length mu the median street length in [m]. The default is 187 m. This value was obtained
from measurements in Berlin, Germany. (for type ”street” only)
street length std the standard deviation of the street length in [m]. The default is 83 m. This value
was obtained from measurements in Berlin, Germany. (for type ”street” only)
curve radius the curve radius during a turn in [m]. The default is 10 m. (for type ”street” only)
turn probability the probability of a turn at a crossing. Possible values are in between 0 and 1.
The default is 0.5. (for type ”street” only)
Output h track A qd track object

Copyright: Fraunhofer Heinrich Hertz Institute 39


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

[ len, dist ] = get length


Calling object Object array
Description Calculates the length of the track in [m]
Output len Length of a track in [m]
dist Distance of each position (snapshot) from the start of the track in [m]

subtracks = get subtrack ( i segment, i tx )


Calling object Single object
Description Splits the track in subtracks for each segment
After defining segments along the track, one needs the subtrack that corresponds only to one segment
to perform the channel calculation. This new track can consist of two segments. The first segment
contains the positions from the previous segment, the second from the current. This is needed to
generate overlapping channel segments for the merging process. This function returns the subtracks
for the given segment indices. When no input argument is provided, all subtracks are returned.
Input i segment A list of indices indicating which subtracks should be returned. By default, all
subtracks are returned.
Input i tx A list of indices indicating which transmitter should be returned. Usually, each
transmitter in a layout gets assigned a scenario. The scenario-IDs are stored in
”qd track.scenario”, where the number of rows corresponds to the number of trans-
mitters in a layout. By default, all transmitters are returned.
Output subtracks A vector of qd track objects corresponding to the number of segments.

[ dist, h track int ] = interpolate ( method, sample rate, movement profile, algorithm, update input )
Calling object Single object
Description Interpolates the snapshot positions along the track
This function interpolates the positions along the track such that it matches the given sample rate.
The channel model operates on a position-based sample grid. That means that the ’builder’ generates
one CIR for each position on the track. In practise, however, a time continuous evolution of the CIR is
often needed. This can be interpolated from the position-based grid, provided that the spatial sample
theorem is not violated (i.e. the channel needs to be sampled at least twice per half wave length). In
order to do that, enough sample points are needed along the track.
Interpolation distance The distance-based interpolation calculates the missing sample points and places
method them equally spaced along the track. This corresponds to a constant speed when
evaluating the output CIRs. The required minimum value for ’sample rate’ is
equal to ’1/samples per meter’ from the ’qd simulation parameters’ object.
time The time-based interpolation is needed in dual-mobility scenarios, where Tx and
Rx can move at different speeds. In this case the sample rate is given in [seconds]
and a movement profile must be given. If you use the set speed function of the
qd track object, the movement profile is automatically generated.
snapshot Time-based interpolation where positions on the track are given by snapshot num-
bers instead of distances. This is useful when the device is stationary but changes
it’s orientation over time, e.g. a radar antenna. The sample rate must be given
in [seconds]. The movement profile must contain the time-points (first row) vs.
snapshot number (second row). Snapshot indices start from 1. Fractional number
are possible (e.g. 1.5).
Input method Must be either ’distance’, ’time’ or ’snapshot’.
sample rate The interval between two (output) snapshots given in [meters] for distance-based
interpolation and [seconds] for time-based and snapshot-based interpolation.
movement profile A matrix describing the time (in seconds) vs. distance (in meters) for time-based
interpolation; or (input) snapshot-number vs. distance for snapshot-based inter-
polation. The first row describes the time points, the second row describes the
positions on the track relative to the start point.
algorithm Selects the interpolation algorithm. Optional are
• linear - Linear interpolation (default)
• cubic - Shape preserving piecewise cubic interpolation
Interpolation of the orientations are always done using the SLERP algorithm
(spherical linear interpolation).

Copyright: Fraunhofer Heinrich Hertz Institute 40


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

update input When set to ’true’, the input track object is updated. If set to ’false’ (default),
a new track object is created.
Output dist The interpolated distances relative to the track start point.
h track int A new ’qd track’ object containing the interpolated positions, orientations, seg-
ments and parameters. If ’update input’ is set to true, the calling track handle is
returned.

dist = interpolate movement ( si, algorithm )


Calling object Single object
Description Interpolates the movement profile to a distance vector
This function interpolates the movement profile. The distance vector at the output can then be used to
interpolate the channel coefficients to emulate varying speeds. See also the tutorial “Applying Varying
Speeds (Channel Interpolation)”.
Input si the sampling interval in [seconds]
algorithm selects the interpolation algorithm. The default is cubic spline interpolation. Op-
tional are:
• linear - Linear interpolation (default)
• cubic - Shape preserving piecewise cubic interpolation

Output dist Distance of each interpolated position from the start of the track in [m]

interpolate positions ( samples per meter )


Calling object Object array
Description Interpolates positions along the track
This function interpolates the positions along the track such that it matches the samples per meter
specifies in the simulation parameters.
The channel model operates on a position-based sample grid. That means that the ’builder’ generates
one CIR for each position on the track. In practise, however, a time continuous evolution of the CIR is
often needed. This can be interpolated from the position-based grid, provided that the spatial sample
theorem is not violated (i.e. the channel needs to be sampled at least twice per half wave length). In
order to do that, enough sample points are needed along the track. This function calculates the missing
sample points and places them equally spaced along the track. This corresponds to a constant speed
when evaluating the output CIRs. The required value for ’samples per meter’ can be obtained from
the ’qd simulation parameters’ object.
Input samples per meter the samples per meter (e.g. from ’qd simulation parameters.samples per meter’)

set scenario ( scenario, probability, seg length min, seg length mu, seg length std )
Calling object Object array
Description Assigns random scenarios and creates segments.
This function can be used to create segments along the trajectory and assign scenarios to the segments.
If there are less than 3 input arguments (i.e. only ’scenario’ and/or ’probability’ is
given), then no segments will be created. To create segments with the default settings call
’set scenario(scenario,[],[])’. Alternatively, it is possible to only create segments by leaving the
scenario empty, e.g. by calling ’set scenario([],[],[])’.
Input scenario A cell array of scenario-names. Each scenario (synonym for propagation en-
vironment) is described by a string (e.g. “MIMOSA 16-25 LOS” or “WIN-
NER SMa C1 NLOS”). A list of supported scenarios can be obtained by calling
’parameter set.supported scenarios’. The scenario parameters are stored in the
configuration folder “config” in the QuaDRiGa main folder. The filenames (e.g.
“MIMOSA 16-25 LOS.conf”) also serves as scenario name.
probability The probability for which the scenario occurs. This parameter must be a vector of
the same length as there are scenarios. Probabilities must be specified in between 0
and 1. The sum of the probabilities must be 1. By default (or when ’probability’
is set to ’[]’), each scenario is equally likely.
seg length min the minimal segment length in [m]. The default is 10 m.
seg length mu the median segment length in [m]. The default is 30 m.
seg length std the standard deviation of the street length in [m]. The default is 12 m.

Copyright: Fraunhofer Heinrich Hertz Institute 41


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

set speed ( speed )


Calling object Object array
Description Sets a constant speed in [m/s] for the entire track.
This function fills the ’qd track.movement profile’ field with a constant speed value. The movement
profile describes the movement along the track by associating a time-point with a distance-point on
the track. If the track length is 0 (e.g. for static transceivers), the first row of the movement profile
will contain time in seconds (calculated from 1/speed) and the second row will contain the snapshot
number.
Input speed The terminal speed in [m/s]

split segment ( mi, ma, mu, sig, no check )


Calling object Object array
Description Splits long segments in subsegments of the same type.
Input mi Minimum length of the subsegment in [m], default: 10m
ma Maximum length of the subsegment in [m], must be > 2*mi, default: 30m
mu Mean length of the subsegment (mi < mu < ma), default: 15m
sig Std of the length of the subsegment, default: 5m
no check Disable parsing of input variables, default: false

2.2.4 Class “qd layout”

Objects of this class define the network layout of a simulation run. Each network layout has one or more
transmitters and one or more receivers. Each transmitter and each receiver need to be equipped with an
array antenna which is defined by the qd arrayant class. In general, it is assumed that the transmitter is
at a fixed position and the receiver is mobile. Thus, each receivers movement is described by a track.

Properties

name Name of the layout


simpar Handle of a ’qd simulation parameters’ object. See Section 2.2.1
update rate Channel update rate in seconds
no tx Number of transmitters (or base stations)
no rx Number of receivers (or mobile terminals)
tx name Identifier of each Tx, must be unique
tx position Position of each Tx in global cartesian coordinates using units of [m]
tx array Handles of ’array’ objects for each Tx. See Section 2.2.2
rx name Identifier of each Tx, must be unique
rx position Initial position of each Rx (relative to track start) in global cartesian coordinates using units of [m]
rx array Handles of ’array’ objects for each Rx. See Section 2.2.2
track Handles of track objects for each Rx. See Section 2.2.3
pairing An index-list of links for which channels are created. The first row corresponds to the Tx and the
second row to the Rx.
no links Number of links for which channel coefficients are created (read only)
dual mobility Indicator if the layout contains moving transmitters

Methods
h layout = qd layout ( simpar )
Calling object None (constructor)
Description Creates a new qd layout object.
Input simpar Handle of a ’qd simulation parameters’ object.

Copyright: Fraunhofer Heinrich Hertz Institute 42


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

out = copy
Calling object Object array
Description Creates a copy of the handle class object or array of objects.
While the standard copy command creates new physical objects for each element of the object array
(in case obj is an array of object handles), copy checks whether there are object handles pointing to
the same object and keeps this information.
Output out Copy of the current object or object array

o2i loss dB = gen o2i loss ( low loss fraction, SC lambda, max indoor distance )
Calling object Single object
Description Generates the outdoor-to-indoor penetration loss for the 3GPP 38.901 model
This method generates the outdoor-to-indoor (O2I) penetration loss in [dB] for the 3GPP 38.901 chan-
nel model. The O2I-loss is specific for each terminal. In other words, if a MT is served by several BSs,
the same O2I-loss applies for each BSs. The values therefore need to be generated before any other LSF
or SSF parameters are generated. The automatic channel generation in ’qd layout.get channels’ will
call all functions in the correct order. For details see: 3GPP TR 38.901 v14.1.0, Sec. 7.4.3, Page 27.
The method generates the O2I-loss and indoor 3D distance as specified by 3GPP. The values are then
stored with the tracks in ’qd layout.track.par.o2i loss’ and ’qd layout.track.par.o2i d3din’.
These two variables are then read again by ’qd builder.get pl’ and applied to the path-loss in the
specific scenario.
Input low loss fraction 3GPP TR 38.901 specifies two different formulas for the O2I-loss, one for high-loss
(e.g. IRR glass and concrete) and one for low-loss (standard multi-pane glass).
The variable ’low loss fraction’ determines the likelihood of the low-loss model.
Values must be between 0 (high-loss only) and 1 (low-loss only). Default-value is
0.5.
SC lambda Random variables for the ’low loss fraction’ are spatially consistent. ’SC lambda’
describes the decorrelation distance of the random generator. Default: 50 m.
max indoor dist The maximum indoor distance between the building wall and the UE. Default is
25 m.
Output o2i loss dB A cell array containing the results for each MT. These values are identical to the
ones stored in ’qd layout.track.par.o2i loss’. Each cell contains an array of
values, where the dimensions correspond to: [ BS, Segment, Frequency ]. For
outdoor-scenarios, an empty array is returned.

h layout = qd layout.generate ( layout type, no sites, isd, h arrayant, no sectors, sec orientation )
Calling object None (static method)
Description Generates predefined network layouts.
Layout types hexagonal A hexagonal network layout with up to three rings of BSs. The first BS is at
coordinates [0,0]. The first BS of each ring is placed in the (north)-east of BS1.
Additional BSs are added in mathematical positive sense (counter-clockwise). De-
fault BS height is 25 m.
regular Same as hexagonal. However, each BS has three sectors. The number of sites
can be 1, 7, 19 or 37 - resulting in 3, 21, 57 or 111 sectors, respectively. Sector
orientations are 30, 150 and -90 degrees in mathematical sense.
regular6 Same as hexagonal, but with default settings of 6 sectors per site and sector ori-
entations 0, 60, 120, 180, 240 and 300 degree.
indoor 3GPP 38.901 indoor scenario. The number of sites can be given by a two-element
array [ N, M ], where N denotes the number of BSs in y-direction and m in x-
direction. Default BS height is 3 m.
random Randomly places base stations. The input parameter ISD describes the radius of
the layout in [m].
Input layout type The layout type (string)
no sites The number of BS sites in the layout.
isd The inter-site distance in [m]
h arrayant The array antenna object for each sector.
no sectors The number of sectors per site (default: 1)
sec orientation The orientation offset of the first sector in [deg]. (default: 0 deg)
Output h layout The generated layout

Copyright: Fraunhofer Heinrich Hertz Institute 43


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

[ h channel, h builder ] = get channels ( update rate, check parfiles, overlap, algorithm )
Calling object Single object
Description Generate the channel coefficients.
This method executes all necessary functions to generate the channel coefficients. These are:
1. Interpolation of the tracks to match the sample density. This avoids unnecessary computa-
tions. The minimum sample density (qd layout.simpar.sample density) is 1 sample per half-
wavelength for static transmitters and 2 samples per half-wavelength for mobile transmitters
(dual-mobility). The default value is 2.5. The interpolation is only done if a sample rate is
provided.
2. Generation of channel builder objects and assigning track segments to builders.
3. Generation of large and small-scale-fading parameters, including spatial consistency.
4. Splitting of builder object for multi-frequency simulations (only when multiple carrier frequencies
are given in (qd layout.simpar.center frequency).
5. Generation of drifting channel coefficients for each track-segment.
6. Merging of channel segments, including modeling the birth and death of scattering clusters.
7. Interpolation of channel coefficients to match the sample rate (only if sample rate is provided).
8. Formatting of output channel objects to an object array with dimensions: [ Rx , Tx , Freq. ]
If qd layout.simpar.show progress bars is set to 1, a progress report is provided on the command
prompt.
Input update rate Channel update rate in [s]. If this parameter is omitted or empty, the value from
the class property ”qd layout.update rate” is used. If this value is empty, no track
and channel interpolation is performed and channel coefficients are generated for
each snapshot specified in the track objects. If the parameter is given, each track
must have a movement-profile.
check parfiles check parfiles = 0 / 1 (default: 1)
Disables (0) or enables (1) the parsing of shortnames and the validity-check for the
config-files. This is useful, if you know that the parameters in the files are valid.
In this case, this saves execution time.
overlap The length of the overlapping part relative to the segment length (segments are
specified in qd layout.rx track. It can have values in between 0 (no overlap) and
1 (ramp along the entire segment).
algorithm Selects the interpolation algorithm for the tracks and channel coefficients. Optional
are
• linear - Linear interpolation (default)
• cubic - Shape preserving piecewise cubic interpolation
Interpolation of the transceiver orientations and channel phases are always done
using the SLERP algorithm (spherical linear interpolation). Spherical cubic inter-
polation is currently not supported.
Output h channel A vector ’qd channel’ objects.
h builder A vector of ’qd builder’ objects.

Copyright: Fraunhofer Heinrich Hertz Institute 44


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

h builder = init builder ( check parfiles, split tx )


Calling object Single object
Description Creates ’qd builder’ objects based on layout specification
This function processes the data in the ’qd layout’ object. First, all tracks in the layout are split
into subtracks. Each subtrack corresponds to one segment. Then, then scenario names are parsed. A
’qd builder’ object is created for each scenario and for each transmitter. For example, if there are two
BSs, each having urban LOS and NLOS users, then 4 ’qd builder’ objects will be created (BS1-LOS,
BS2-NLOS, BS2-LOS, and BS2-NLOS). The segments are then assigned to the ’qd builder’ objects.
Input check parfiles Enables (1, default) or disables (0) the parsing of shortnames and the validity-
check for the config-files. This is useful, if you know that the parameters in the
files are valid. In this case, this saves some execution time.
split tx If set to true (1), each Tx gets assigned to a new builder object. Hence, all LSPs
and SSF parameters will be independently generated for each Tx. If set to false
(0), Txs belonging to the same scenario will be combined into one builder, enabling
spatial consistency for the Txs. The default value is 1, if all Txs are static, and 0,
if at least on Tx is mobile (dual-mobility feature).
Output h builder A matrix of ’qd builder’ objects. Rows correspond to the scenarios, columns
correspond to the transmitters.

[ h layout, ReferenceCoord ] = qd layout.kml2layout ( fn, split seg )


Calling object None (static method)
Description Imports a layout object from a KML file
This function loads a QuaDRiGa layout from a KML-File. KML-Files are created e.g. by Google(TM)
maps or a GPS device. In the KML-File, the user can specify the positions of the transmitters (Tx),
the receiver tracks (Rx) and segments for the receiver track. In order to work properly, the KML-File
needs to meet some specific formatting requirements:
Tx-positions are represented by a ”Placemark” in the KML-file. The name must be ”tx TxName”
where ’TxName’ has to be replaced by a unique name for each transmitter. Rx-Tracks are specified by
paths. Each path found in the KML-File is interpreted as a Rx-track. As for the Tx, all paths must
contain a unique name.
Segments of a Rx-Track are determined by placemarks in close proximity to the track. The name
of the placemark contains the scenario. The naming convention for segments is ”seg Scen” where
’Scen’ determines the scenaio of the segment. For example, you can create a path with the name
”rx GPS1”. In order so assign the scenario ”WINNER UMa C2 LOS” to the path, you need to add
a placemark at the beginning of the track with the name: ”seg WINNER UMa C2 LOS”. It also
possible to specify a different scenario for each transmitter in the layout. The naming convention then
is ”seg ScenTx1:ScenTx2:...:ScenTxN” where the scenarios for each transmitter are separated by a ”:”.
A complete description of QuaDRiGa-KML specification can be found in the documentation.
Input fn The filename of the KML-File (string)
split seg It set to true (1, default), tracks are split into segment as indicated by the pa-
rameter ”SplitSegments” in the KML file. If set to false (0), ”SplitSegments” is
ignored.
Output h layout The ’qd layout’ object
ReferenceCoord A tuple for longitude and latitude (WGS84) at which the origin (0,0,0) of the
metric Cartesian coordinate system used by QuaDRiGa is placed.

layout2kml ( fn, reference coord, embed antennas, use description, split segments )
Calling object Single object
Description Exports a layout object to a KML file
This function exports a QuaDRiGa layout object to a KML file. KML-Files can be read e.g. by
Google(TM) maps. A complete description of QuaDRiGa-KML specification can be found in the
documentation.
Input fn The filename of the KML-File.
reference coord A tuple for longitude and latitude (WGS84) at which the origin (0,0,0) of the metric
Cartesian coordinate system used by QuaDRiGa is placed (optional). If this value
is not given, the origin is placed at QuaDRiGas origin: 13.324947e,52.516319n.
embed antennas Boolean value (optional). By default (1), antennas are embedded into the KML
file. If disabled (0), antennas are written to an external QDANT file.

Copyright: Fraunhofer Heinrich Hertz Institute 45


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

use description Boolean value (optional). By default (0), additional QuaDRiGa simulation param-
eters are written to the ExtendedData elements in the KML file. If enabled (1),
parameters are written to the description element. Description elements can be
edited in Google earth.
split segments This parameter controls the splitting of long segments into sub-segments with the
same scenario definition. SplitSegments is a tuple of 4 values defining:
1. min. length of a sub-segment (e.g. 10 m)
2. max. length of the sub-segment; must be > 2·min. (e.g. 30 m)
3. average length of the sub-segment (e.g. 15 m)
4. standard-deviation of a sub-segment (e.g. 5 m)
The four values are written to the KML file and applied when the file is loaded by
kml2layout. The effect will not be visible when viewing the KML file in Google
earth. If SplitSegments is not defined, segment splitting is disabled.

[ map, x coords, y coords ] = power map ( scenario, usage, sample distance, x min, x max, y min, y max, rx height,
tx power )
Calling object Single object
Description Calculates a power-map for the given layout.
This function calculates receive power values in [W] on a square lattice at a height of ’rx height’ above
the ground for the given layout. This helps to predict the performance for a given setup.
Input scenario The scenario for which the map shall be created. There are four options:
1. A string describing the scenario. A list of supported scenarios can be ob-
tained by calling ’qd builder.supported scenarios’.
2. cell array of strings describing the scenario for each transmitter in the layout.
3. A ’qd builder’ object. This method is useful if you need to edit the pa-
rameters first. For example: call ’p = qd builder(’UMal’)’ to load the
parameters. Then edit ’p.scenpar’ or ’p.plpar’ to adjust the settings.
4. An array of ’qd builder’ objects describing the scenario for each transmitter
in the layout.

usage A string specifying the detail level. The following options are implemented:
• ’quick’ - Uses the antenna patterns, the LOS path, and the path gain from
the scenario
• ’sf’ - Uses the antenna patterns, the LOS path, the path gain from the
scenario, and a shadow fading map
• ’detailed’ - Runs a full simulation for each pixel of the map (very slow)
• ’phase’ - Same as quick, but the output contains the complex-valued am-
plitude instead of the power

sample distance Distance between sample points in [m] (default = 10 m)


x min x-coordinate in [m] of the top left corner
x max x-coordinate in [m] of the bottom right corner
y min y-coordinate in [m] of the bottom right corner
y max y-coordinate in [m] of the top left corner
rx height Height of the receiver points in [m] (default = 1.5 m)
tx power A vector of tx-powers in [dBm] for each transmitter in the layout. This power is
applied to each transmit antenna in the tx-array antenna. By default (if tx power
is not given), 0 dBm are assumed.
Output map A cell array containing the power map for each tx array in the layout. The power
maps are given in [W] and have the dimensions
[ n y coords , n x coords , n rx elements , n tx elements ].
x coords Vector with the x-coordinates of the map in [m]
y coords Vector with the y-coordinates of the map in [m]

Copyright: Fraunhofer Heinrich Hertz Institute 46


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

randomize rx positions ( max dist, min height, max height, track length, rx ind )
Calling object Single object
Description Generates random Rx positions and tracks.
Places the users in the layout at random positions. Each user will be assigned a linear track with random
direction. The random height of the user terminal will be in between ’min height’ and ’max height’.
Input max dist the maximum distance from the layout center in [m]. Default is 50 m.
min height the minimum user height in [m]. Default is 1.5 m.
max height the maximum user height in [m]. Default is 1.5 m.
track length the length of the linear track in [m]. Default is 1 m.
rx ind a vector containing the receiver indices for which the positions should be generated.
Default: All receivers

[ pairs, power ] = set pairing ( method, threshold, tx power, overlap, check parfiles )
Calling object Single object
Description Determines links for which channel coefficient are generated.
This function can be used to automatically determine the links for which channel coefficients should be
generated. For example, in a large network there are multiple base stations and mobile terminals. The
base stations, however, only serve a small area. It the terminal is far away from this area, it will receive
only noise from this particular BS. In this case, the channel coefficients will have very little power and
do not need to be calculated. Disabling those links can reduce the computation time and the storage
requirements for the channel coefficients significantly. There are several methods to do this which can
be selected by the input variable ’method’.
Methods ’all’ Enables the simulation of all links. Links where the Tx and the Rx are at the same
position are are deactivated.
’power’ Calculates the expected received power taking into account the path loss, the
antenna patterns, the LOS polarization, and the receiver orientation. If the power
of a link is below the ’threshold’, it gets deactivated.
Input method Link selection method. Supported are: ’all’ or ’power’ (see above)
threshold If the Rx-power is below the threshold in [dBm], the link gets deactivated
tx power A vector of tx-powers in [dBm] for each transmitter in the layout. This power is
applied to each transmit antenna in the tx-array antenna. By default (if ’tx power’
is not given), 0 dBm is assumed
overlap The length of the overlapping part relative to the segment length. It can have
values in between 0 (no overlap) and 1 (ramp along the entire segment). The
default value is 0.5. You need to make sure that the same value is used when
calling ”qd channel.merge”. (only used for ’sf’)
check parfiles Disables (0) or enables (1, default) the parsing of shortnames and the validity-
check for the config-files. This is useful, if you know that the parameters in the
files are valid. In this case, this saves execution time.
Output pairs An index-list of links for which channels are created. The first row corresponds
to the Tx and the second row to the Rx. An identical copy gets assigned to
’qd layout.pairing’.
power A matrix containing the estimated receive powers for each link in [dBm]. Rows cor-
respond to the receiving terminal, columns correspond to the transmitter station.
For MIMO links, the power of the strongest MIMO sublink is reported.

pos = set satellite pos ( rx latitude, sat el, sat az, sat height, tx no )
Calling object Single object
Description Calculates the Tx position from a satellite orbit.
QuaDRiGas reference coordinate system is on the surface of the earth. In order to use QuaDRiGa
for satellite links, the satellite position must be set. Normally, this position is given in azimuth and
elevation relative to the users position. This function takes a satellite orbital position and calculates
the corresponding transmitter coordinates.
Input rx latitude The receiver latitude coordinate on the earth surface in [deg]. Default is 52.5
sat el Satellite elevation seen from the receiver positions in [deg]. Default is 31.6
sat az Satellite azimuth in [deg] given in compass coordinates. Default is 180° (south)
sat height Satellite height in [km] relative to earth surface. Default is 35786 (GEO orbit)
tx no The ’tx no’ in the layout object for which the position should be set. Default is 1
Output pos The satellite positions in the metric QuaDRiGa coordinate system

Copyright: Fraunhofer Heinrich Hertz Institute 47


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

indoor rx = set scenario ( scenario, rx, tx, indoor frc, SC lambda rx, SC lambda tx )
Calling object Single object
Description Assigns scenarios to tracks and segments.
This function can be used to assign scenarios to tracks and segments of tracks. This takes the distance-
dependent LOS probability into account for some specific scenarios. Currently, distance-dependent
scenario selection is available for:
• 3GPP 3D UMi
• 3GPP 3D UMa
• mmMAGIC initial UMi
• mmMAGIC initial Indoor
• 3GPP 38.901 UMi
• 3GPP 38.901 UMa
• 3GPP 38.901 RMa
• 3GPP 38.901 Indoor Mixed Office
• 3GPP 38.901 Indoor Open Office
• 3GPP 38.881 DenseUrban (Satellite)
• mmMAGIC UMi
• mmMAGIC Indoor
• QuaDRiGa Industrial
• QuaDRiGa UD2D
Alternatively, you can use all scenarios specified in ’qd builder.supported scenarios’.
Input scenario A string containing the scenario name
rx A vector containing the receiver indices for which the scenarios should be set.
Default: all receivers
tx A vector containing the transmitter indices for which the scenarios should be set.
Default: all transmitters
indoor frc The fraction of the users (number between 0 and 1) that are indoors
SC lambda rx Decorrelation distance for spatially consistent LOS states based on the RX posi-
tion. It set to 0, LOS sates are uncorrelated with respect to RX position. The
default setting depends on the values of ’use 3GPP baseline’ in the simulation
setting. For ’use 3GPP baseline = 1’, spatially consistent LOS states are uncor-
related otherwise, the values set as defined in 3GPP TR 38.901, Table 7.6.3.1-2.
SC lambda tx Decorrelation distance for spatially consistent LOS states based on the TX posi-
tion. It set to 0, LOS sates are uncorrelated with respect to TX position.
Output indoor rx A logical vector indicating if a user is indoors (1) or outdoors (0)

han = visualize ( tx , rx, show names , create new figure )


Calling object Single object
Description Plots the layout.
Input tx A vector containing the transmitter indices that should be shown. Default: All
rx A vector containing the receiver indices that should be shown. Default: All
show names Options: (0) shows no Tx and Rx names; (1, default) shows the Tx name and the
scenario for each track segment; (2) shows the Tx and Rx name
create new figure If set to 0, no new figure is created, but the layout is plotted in the currently active
figure
Output han The figure handle

2.2.5 Class “qd builder”

This class implements all functions that are necessary to generate and manage correlated LSPs, correlated
SSFs, and functions that are needed to generate the channel coefficients. It thus implements the core
components of the channel model. The class holds all the input variables as properties. Its main function
’get channels’ then generates the coefficients.

LSPs are the shadow fading, the Ricean K-Factor, the RMS delay spread and the four angles (elevation and

Copyright: Fraunhofer Heinrich Hertz Institute 48


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

azimuth at the transmitter and receiver). This class implements functions of the channel model that the
user does normally not need to interact with it. However, if parameter tables need to be changed, here is
the place to do so.

When calling get channels, the builder generates a set of random clusters around each receiver. This
is done by drawing random spatially correlated variables for the delay, the power and the departure and
arrival angles for each cluster. Each cluster thus represents the origin of a reflected (and scattered) signal.
The clusters are then represented as taps in the final CIR. The random variables fit the distributions and
correlations defined by the LSF parameters. Spatial correlation is implemented by using the sum-of-sinuoids
method for all random variables in the model.

Next, antenna dependent parameters are extracted for each user. Those depend on the position of the
terminal, its orientation and the equipped antennas. The polarization rotation of the NLOS taps is modeled
by a random variable which fits to the distribution defined by the LSPs. The LOS polarization is calculated
from the geometric orientation of the antennas. A core function here is the interpolation of the antenna
patterns which results in a specific antenna response for each subpath.

The core function then generates the coefficients themselves. This is done for each antenna element and for
each snapshot separately and also includes the Doppler shift of each subpath. Finally, the K-factor and the
shadow fading are applied and a all the data is returned as an ’qd channel’ object.

Properties

name Name of the ’qd builder’ object


scenario Name of the scenario (text string)
scenpar The parameter table. See Section 2.4
plpar Parameters for the path loss. See Section 2.4
simpar Handle of a ’qd simulation parameters’ object. See Section 2.2.1
tx array Handles of ’qd arrayant’ objects for each Tx. See Section 2.2.2
rx array Handles of ’qd arrayant’ objects for each Rx. See Section 2.2.2
rx track Handles of ’qd track’ objects for each Rx. See Section 2.2.3
tx position The transmitter position obtained from the corresponding ’qd layout.tx position’
ry positions The list of initial positions for which LSPs are generated. This variable is obtained from the properties
’qd track.initial position’ and ’qd layout.rx position’
sos The large-scale parameter SOS generators
gr sos The SOS generator for the ground reflection coefficient
path sos The SOS generators for the generation of MPCs
xpr sos The SOS generators for the generation of the NLOS polarization
pin sos The SOS generators for the generation of initial phases
clst dl sos The SOS generators for the generation per-cluster delay offsets
ds The RMS delay spread in [s] for each receiver position
kf The Ricean K-Factor [linear scale] for each receiver position
sf The shadow fading [linear scale] for each receiver position
asD The azimuth spread of departure in [deg] for each receiver position
asA The azimuth spread of arrival in [deg] for each receiver position
esD The elevation spread of departure in [deg] for each receiver position
esA The elevation spread of arrival in [deg] for each receiver position
xpr The cross polarization ratio [linear scale] for each receiver position
gr epsilon r The relative permittivity for the ground reflection
NumClusters The number of clusters
NumSubPaths The number of sub-paths for each cluster
taus The initial delays for each path in [s]. Rows correspond to the MTs, columns to the paths.
pow The normalized initial power (squared average amplitude) for each path. Rows correspond to the
MTs, columns to the paths. The sum over all columns must be 1.
AoD The initial azimuth of departure angles for each path in [rad].
AoA The initial azimuth of arrival angles for each path in [rad].
EoD The initial elevation of departure angles for each path in [rad].
EoA The initial elevation of departure angles for each path in [rad].

Copyright: Fraunhofer Heinrich Hertz Institute 49


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

gamma The polarization rotation angle for the lineaar XPR in [rad]. For 3GPP baseline simulations, this
property stores the per-path XPR (linear units).
kappa The phase offset angle for the circular XPR in [rad]. For 3GPP baseline simulations, this property
stores the initial random phases. The dimensions correspond to polarization matrix index ’[1 3 ; 2 4]’,
the subpath number and the MT.
pin The initial phases in [rad] for each sub-path.
subpath coupling A random index list for the mutual coupling of subpaths at the Tx and Rx. The dimensions correspond
to the subpath index (1-20), the angle (AoD, AoA, EoD, EoA), the path number and the MT.
fbs pos The positions of the first-bounce scatterers
lbs pos The positions of the last-bounce scatterers
dual mobility Indicates if the builder is a dual-mobility builder (-1 = unknown)
no rx positions Number of receiver positions associated to this ’qd builder’ object
Note that each segment in longer tracks is considered a new Rx position.
lsp vals The distribution values of the LSPs (extracted from scenpar)
lsp xcorr chk Indicator if cross-correlation matrix is positive definite
lsp xcorr The Cross-correlation matrix for the LSPs

Methods
h builder = qd builder ( scenario, check parfiles )
Calling object None (constructor)
Description Creates a new ’qd builder’ object.
Input scenario The scenario name for which the parameters should be loaded. A list of supported
scenarios can be obtained by calling ’qd builder.supported scenarios’.
check parfiles check parfiles = 0 / 1 (default: 1)
Disables (0) or enables (1) the parsing of shortnames and the validity-check for the
config-files. This is useful, if you know that the parameters in the files are valid.
In this case, this saves execution time.
Output h builder Handle to the created ’qd builder’ object.

isdual = check dual mobility


Calling object Object array
Description Checks the input data of the builder
This function checks the input variables ”simpar”, ”tx array”, ”rx array”, ”tx track”, and ”rx track”
of the builder object(s) for conformity. The data representation is adjusted such that all other methods
of the builder class can work with the variables without checking them again. The method also checks
if dual-mobility processing is required. This information is stored in ”qd builder.dual mobility” to be
accessed by other methods.
Output isdual A logical array indicating for each builder if dual-mobility processing is required
(true) or if single-mobility processing is done (false).

gen parameters ( usage )


Calling object Object array
Description Generates LSF parameters, SSF parameters and scatterer positions
This function generates all parameters that are needed for the channel coefficient generation. The
outputs of the method are stored in the class properties. This includes the following steps:
1. Initialize the random generators by calling ”qd builder.init sos”. If the random generators
are already initialized, use the existing initialization.
2. Generate correlated large scale parameters for each user position. Those parameters are needed
by the channel builder to calculate initial SSF parameters for each track or segment which are
then evolved into time varying channels.
3. Generates the small-scale-fading parameters for the channel builder. Already existing param-
eters are overwritten. However, due to the spatial consistency of the model, identical values
will be obtained for the same rx positions. Spatial consistency can be disabled by setting
”qd builder.scenpar.SC lambda = 0".
4. Calculates the positions of the scatterers.

Copyright: Fraunhofer Heinrich Hertz Institute 50


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

Input usage Controls the working mode of the method. The allowed options are:
• usage = 0
Clears all exisiting LSF and SSF parameters including the SOS random
generators.
• usage = 1
Generates only the LSF parameters. Exisiting LSF parameters will be over-
written and all SSF parameters will be cleared. If the SOS generators
are not initialized, they are initialized first. Existing SOS generators in
”qd builder.sos” are reused. This leads to identical results when calling
the method multiple times.
• usage = 2
Generates the SSF parameters. Exisiting SSF parameters will be overwrit-
ten. Existing SOS generators and LSF parameters will be reused.
• usage = 3
Generate the random initial phases, split the SSF parameters into sub-
clusters and calculates the scattering cluster positions. This may lead to
changes in the departure angles (AoD, EoD). If LSF or SSF parameters are
not initialized, they are initialized first.
• usage = 4 (default)
Clears exisiting LSF parameters, SSF parameters and cluster positions and
calculates new ones. Existing SOS generators are reused.

angles = get angles


Calling object Single object
Description Calculates the departure- and arrival angles of the LOS path between Tx and Rx
Output angles A matrix containing the four angles:
• Azimuth of Departure at the Tx (AoD, row 1)
• Azimuth of Arrival at the Rx (AoA, row 2)
• Elevation of Departure at the Tx (EoD, row 3)
• Elevation of Arrival at the Rx (EoA, row 4)
The number of columns corresponds to the number of rx-positions.

h channel = get channels


Calling object Object array
Description Calculate the channel coefficients
Output h channel A vector handles to the qd channel objects

dist = get distances


Calling object Single object
Description Calculates the 3D distances between Rx and Tx
Output dist A vector containing the 3D distances between each Rx and the Tx in [m]

h channel = get los channels ( precision, return coeff, tx array mask )


Calling object Object array
Description Generates channel coefficients for the LOS path only.
This function generates static coefficients for the LOS path only. This includes the following properties:
• antenna patterns
• orientation of the Rx (if provided)
• polarization rotation for the LOS path
• plane-wave approximation of the phase
• path loss
• shadow fading
No further features of QuaDRiGa are used (i.e. no drifting, spherical waves, time evolution, multipath
fading etc.). This function can thus be used to acquire quick previews of the propagation conditions
for a given layout.
Input precision The additional input parameter ’precision’ can be used to set the numeric preci-
sion to ’single’, thus reducing the memory requirements for certain computations.
Default: double precision.

Copyright: Fraunhofer Heinrich Hertz Institute 51


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

return coeff Adjusts the format of the output. This is mainly used internally.
return coeff = ’coeff’;
If this is set to ’coeff’, only the raw channel coefficients are returned, but no
QuaDRiGa channel object is created. This may help to reduce memory require-
ments. In this case, ’h channel’ has the dimensions: [ n rx, n tx, n pos ]
return coeff = ’raw’;
Same as ’coeff’ but without applying the distance-dependant phase and the path
loss. The rx-antenna is assumed to be dual-polarized with two elements (i.e.
the rx interpolation is omitted). This mode is used QuaDRiGa-internally by
[qd arrayant.combine pattern]
tx array mask Indices for selected transmit antenna elements
Output h channel A handle to the created ’qd channel’ object. The output contains one coefficient
for each position in ’qd builder.rx position’.

map = get lsp map ( xc, yc, zc )


Calling object Single object
Description Calculates the spatial map of the correlated LSPs
Input xc A vector containing the map sample positions in [m] in x-direction
yc A vector containing the map sample positions in [m] in y-direction
zc A vector containing the map sample positions in [m] in z-direction
Output map An array of size [ nx, ny, nz, 8 ] containing the values of the LSPs at the sample
positions. The indices of the fourth dimension are:
1. Delay spread [s]
2. K-factor [linear]
3. Shadow fading [linear]
4. Azimuth angle spread of departure [rad]
5. Azimuth angle spread of arrival [rad]
6. Elevation angle spread of departure [rad]
7. Elevation angle spread of arrival [rad]
8. Cross-polarization ratio [linear]

[ loss, scale sf, loss init, scale sf init ] = get pl ( evaltrack, alt plpar, txpos )
Calling object Single object
Description Implements various path-loss models
This function implements various path-loss models such as defined by 3GPP 36.873 or 38.901. The
parameters of the various models are given in the configuration files in the folder ’quadriga src\config’.
When a builder object is initialized, the parameters appear in the structure ’qd builder.plpar’.
Input evaltrack A ’qd track’ object for which the PL should be calculated. If ’evaltrack’ is not
given, then the path loss is calculated for each Rx position. Otherwise the path
loss is calculated for the positions provided in ’evaltrack’.
alt plpar An optional alternative plpar which is used instead of ’qd builder.plpar’.
txpos The corresponding tx positions. This variable can be provided by:
1. A ’qd track’ object having the same number of snapshots as the
’evaltrack’;
2. A 3-element vector containing the fixed x,y, and z coordinate of the tx;
3. A [3 x N] matrix containing one tx position for each position on the
’evaltrack’;
4. The variable is unprovided or empty. In this case, the tx-positions are
obtained from the ’qd builder’ object.

Output loss The path loss in [dB]


scale sf In some scenarios, the SF might change with distance between Tx and Rx. Hence,
the shadow fading provided by the LSFs generator has to be changed accordingly.
The second output parameter ”scale sf” can be used for scaling the (logarithmic)
SF value.

Copyright: Fraunhofer Heinrich Hertz Institute 52


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

loss init The path loss in [dB] for the initial position of the ”evaltrack” object. Returns
an empty array if no ”evaltrack” is given.
scale sf init ”scale sf” for the initial position of the ”evaltrack” object. Returns an empty
array if no ”evaltrack” is given.

[ sf,kf ] = get sf profile ( evaltrack, txpos )


Calling object Single object
Description Returns the shadow fading and the K-factor along a track
This function returns the shadow fading and the K-factor along the given track. This function is mainly
used by the channel builder class to scale the output channel coefficients. The profile is calculated by
using the data in the LSF autocorrelation model and interpolating it to the positions in the given track.
Input evaltrack Handle to a ’qd track’ object for which the SF and KF should be interpolated.
txpos The corresponding tx positions. This variable can be provided by:
1. A ’qd track’ object having the same number of snapshots as the
’evaltrack’;
2. A 3-element vector containing the fixed x,y, and z coordinate of the tx;
3. A [3 x N] matrix containing one tx position for each position on the
’evaltrack’;
4. The variable is unprovided or empty. In this case, the tx-positions are
obtained from the ’qd builder’ object.

Output sf The shadow fading [linear scale] along the track


kf The K-factor [linear scale] along the track

init sos ( force )


Calling object Object array
Description Initializes all SOS random number generators
This method initializes all random number generators of the ”qd builder” object array. The results
are stored in the properties ”sos”, ”gr sos”, ”path sos”, ”xpr sos”, ”pin sos”, and ”clst dl sos”.
Once initialized, the ”qd builder” object will generate identical parameters and channels. Note that
this does not work for 3GPP baseline simulations.
Input force If set to true (1), existing SOS generators will be discarded. By default (0), they
will be reused.

h builder out = split multi freq


Calling object Object array
Description Split the builder objects for multi-frequency simulations
QuaDRiGa allows multi-frequency-simulations by setting multiple carrier frequencies in
”qd simulation parameters.center frequency”. Correlated SSF for multi-frequency simulations is
an additional feature of the 3GPP model (see Section 7.6.5, pp 57 of TR 38.901 V14.1.0).
Identical parameters for each Frequency:
• LOS / NLOS state must be the same
• BS and MT positions are the same (antenna element positions are different!)
• Cluster delays and angles for each multipath component are the same
• Spatial consistency of the LSPs is identical

Differences:
• Antenna patterns are different for each frequency
• Path-loss is different for each frequency
• Path-powers are different for each frequency
• Delay- and angular spreads are different
• K-Factor is different
• XPR of the NLOS components is different

Copyright: Fraunhofer Heinrich Hertz Institute 53


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

The method ”split multi freq” separates the builder objects so that each builder creates channels for
only one frequency. If you call ”split multi freq” before any LSF and SSF parameters are generated
as it is done the the following code, then LSF parameters (e.g. SF, DS, AS) will be uncorrelated for
each frequency. If you call ”gen lsf parameters” before ”split multi freq”, then all LSF parameters
will be fully correlated. However, frequency dependent averages and variances still apply. If you call
”gen lsf parameters” and ”gen ssf parameters” before ”split multi freq”, then SSF will also correlated,
i.e. the same paths will be seen at each frequency.
Output h builder out An array of ”qd builder” objects where where each builder only served one fre-
quency.

[ scenarios, file names, file dir ] = qd builder.supported scenarios ( parse shortnames )


Calling object None (static method)
Description Returns a list of supported scenarios
Input parse shortnames This optional parameter can disable (0) the shortname parsing. This is significantly
faster. By default shortname parsing is enabled (1)
Output scenarios A cell array containing the scenario names. Those can be used in
’qd track.scenario’
file names The names of the configuration files for each scenario
file dir The directory where each file was found. You can place configuration file also in
your current working directory

visualize clusters ( i mobile , i cluster, create figure )


Calling object Single object
Description Plots the positions of the scattering clusters for a mobile terminal
This method plots all scattering clusters for a given mobile terminal. If i cluster is not given, then
only the main paths are shown for all MPCs. If i cluster is given, then also the subpaths are shown
for the selected cluster. The plot is in 3D coordinates. You can rotate the image using the rotate tool.
Input i mobile The index of the mobile terminal within the channel builder object
i cluster The index of the scattering cluster. (Optional)
create figure If set to 1 (default), a new figure is created. If set to 0, the last figure is updated

write conf file ( fn, write defaults )


Calling object Single object
Description Writes configuration files from qd builder objects
Input fn String containing the filename
write defaults If set to true, default values are written to the file.

2.2.6 Class “qd sos”

This class implements the sum-of-sinusoids method for generating spatially correlated random variables. An autocorrelation
function (ACF), i.e. a description of the correlation vs. distance, needs to be provided. This function is approximated by a
Fourier series. The coefficients of the series can be used to generate spatially correlated random variables.

Properties

name The name of the object


distribution Distribution of random variables (’normal’ or ’uniform’)
dist decorr Decorrelation distance in [m]
dimensions Number of dimensions (1, 2 or 3)
no coefficients Number of sinusoid coefficients used to approximate the ACF
dist Vector of sample points for the ACF in [m]
acf Desired autocorrelation function
sos freq Sinusoid coefficients (frequencies)
sos phase Phase offsets
sos amp Amplitude of the sinusoid coefficients

Copyright: Fraunhofer Heinrich Hertz Institute 54


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

Methods
h sos = qd sos ( acf type, distribution, dist decorr )
Calling object None (constructor)
Description Creates a new ’qd sos’ object.
Calling qd sos without options creates a new SOS object with default settings. The default ACF is
defined by a combination of the Gauss profile (ranging from 0 to the decorrelation distance) and an
exponential decaying profile (ranging from the decorrelation distance to a maximum distance of 5 time
the decorrelation distance. It is approximated by 300 sinusoids in 3D coordinates.
There are 3 optional ACF types that can be selected by acf type. The 3D SOS frequencies are
precomputed for 150, 300, 500, and 1000 sinusoids.
• Exponential ACF (Exp150, Exp300, Exp500, Exp1000 )
• Gaussian ACF (Gauss150, Gauss300, Gauss500, Gauss1000 )
• Combined Gaussian and Exponential ACF (Comb150, Comb300, Comb500, Comb1000)
The distributer function can be either (’normal’ or ’uniform’).
Input acf type String describing the shape of the autocorrelation function and the number of
sinusoids, Default: ’Comb300’
distribution Distribution of the random variables (’normal’ or ’uniform’), Default: ’normal’
dist decorr Decorrelation distance in [m], Default: 10 m
Output h sos Handle of the created qd sos object

[ Ri, Di ] = acf 2d
Calling object Single object
Description Interpolates the ACF to a 2D version
This method calculates a 2D version of the given ACF (qd sos.acf). The distance ranges from -2 Dmax
to 2 Dmax, where Dmax is the maximum value in qd sos.dist. Values outside the specified range are
set to 0.
Output Ri 2D ACF
Di Vector of sample points (in x and y direction) for the 2D ACF in [m]

[ Ro, Do ] = acf approx


Calling object Single object
Description Generates the approximated ACF from SOS coefficients
This method calculates the approximated ACF. The distance ranges from -2 Dmax to 2 Dmax, where
Dmax is the maximum value in qd sos.dist. The format of the output variable (Ro) depends on the
number of dimensions.
• 1 dimension
Ro is a vector containing the values at the sample points of Do.
• 2 dimensions
Ro is a matrix containing the approximated 2D ACF
• 3 dimensions
Ro contains 3 matrices, one for the x-y plane, one for the x-z plane and one for the y-z plane.

Output Ro Approximated ACF


Do Vector of sample points (in x and y direction) for the ACF in [m]

Copyright: Fraunhofer Heinrich Hertz Institute 55


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

[ Re, De, Re dual ] = acf estimate ( no pos, D )


Calling object Single object
Description Estimates the 3D and 6D ACF from randomly generated positions
This method creates random positions within a cube of 0.4*max(D) m edge length. Then, spatially
correlated Normal distributed random numbers are generated for each position using qd sos.val. The
distance between each pair of positions is calculated and pairs with similar distance are grouped, i.e.
positions with a distance between 0 and 2 meters of each other belonged to group 1, positions with a
distance between 2 and 4 meters belonged to group 2, and so on. The Pearson correlation coefficient
is calculated for the samples within each group.
For the 6D estimation, half the positions are used for the transmitter and half are used for the receiver.
Spatially correlated values are generated using the dual-mobility extension. The grouping is done for
the receiver positions under the constraint that the transmitter cannot move more than the receiver.
For example, if group 3 contains all pairs where the receivers have a distance between 4 and 6 meters,
then the transmitters have a distance between 0 and 6 meters.
Input no pos Number of positions for the ACF estimation.
D Distance vector containing the center distances in [m] of the groups.
Output Re Estimated 3D ACF
De Distance vector containing the actual center distances in [m] of the groups calcu-
lated from the random positions.
Re dual Estimated 6D ACF for the dual-mobility extension.

val = acfi ( dist )


Calling object Single object
Description Linear interpolation of the ACF
Input dist Vector containing the distances in [m] for which the ACF should be interpolated.
Output val Interpolated ACF at the given distances

[ mse, mse core, mse all, Ro, Ri ] = calc mse ( T )


Calling object Single object
Description Calculates the approximation MSE of the ACF
This method calculates the mean-square-error (in dB) of the approximation of the given ACF.
Input T Number of test directions, Default: 10
Output mse The MSE for the given number of test directions
mse core The 2D MSE for the range 0 to Dmax (covered by the desired ACF)
mse all The 2D MSE for the range 0 to 2*Dmax
Ro Approximated ACF from qd sos.acf approx
Ri Interpolated ACF (from qd sos.acf 2d in case of 2 dimensions or more)

out = copy
Calling object Object array
Description Creates a copy of the handle class object or array of objects.
While the standard copy command creates new physical objects for each element of the object array
(in case obj is an array of object handles), copy checks whether there are object handles pointing to
the same object and keeps this information.
Output out Copy of the current object or object array

Copyright: Fraunhofer Heinrich Hertz Institute 56


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

h sos = qd sos.generate ( R, D, N, dim, uniform smp, debug )


Calling object None (static method)
Description Generates SOS parameters from a given ACF
This (static) method approximates any given ACF by sinusoid coefficients. A sampled ACF is provided
at the input. Then, the N sinusoid coefficients are iteratively determined until the best match is found.
Input R The desired ACF (having values between 1 and -1). The first value must be 1.
D Vector of sample points for the ACF in [m]
N Number of sinusoid coefficients used to approximate the ACF
dim Number of dimensions (1, 2 or 3)
uniform smp If set to 1, sample points for 2 or more dimensions are spaced equally. If set to 0,
sample points are chosen randomly. Default: 0 (random)
T Number of test directions for the MSE calculation, Default: 10
random init If set to 1, the SOS frequencies are randomly initialized. If set to 0, the frequencies
are initialized by zeros. Default: 1 (random)
show progress If set to 1, an animation plot of the progress is shown. Default: 0
Output h sos Handle of the created qd sos object

init ( use same )


Calling object Object array
Description Initializes the random phases
Input use same If set to 1 (default), identical phases are used for the dual-mobility option, assuming
that devices are on the same radio-map. If set to 0, different values are used.

h sos = qd sos.load ( filename )


Calling object None (static method)
Description Loads coefficients from mat file
Sinusoid coefficients can be stored in a mat-file by calling qd sos.save. This (static) method loads
them again. In this way, it is possible to precompute the sinusoid coefficients and save some significant
time when initializing the method. It is possible to adjust the decorrelation distance of a precomputed
function without the need to perform the calculations again.
Input filename Path or filename to the coefficient file
Output h sos Handle of the loaded qd sos object

S = map ( xc, yc, zc )


Calling object Single object
Description Generates random variables at the given coordinates in x,y and z direction
This method generates a multi-dimensional array (of up to 3 dimensions) of spatially correlated random
variables.
Input xc A vector containing the map sample positions in [m] in x-direction
yc A vector containing the map sample positions in [m] in y-direction
zc A vector containing the map sample positions in [m] in z-direction
Output S Array of spatially correlated random variables

[ s, h sos ] = qd sos.rand ( dist decorr, ca, cb )


Calling object None (static method)
Description Generates spatially correlated uniformly distributed random numbers
Input dist decorr Vector of decorrelation distances [1 x M] or [M x 1]
ca Coordinates for the first mobile device in [m] given as [3 x N] matrix. The rows
correspond to the x,y and z coordinate.
cb Coordinates for the corresponding second mobile device in [m] given as [3 x N]
matrix. The rows correspond to the x,y and z coordinate. This variable must
either be empty or have the same size as ”ca”.
acf type String describing the shape of the autocorrelation function and the number of
sinusoids, Default: ’Comb300’
Output s Random spatially correlated numbers [ M x N ]
h sos A handle to the used qd sos object

Copyright: Fraunhofer Heinrich Hertz Institute 57


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

[ s, h sos ] = qd sos.randi ( dist decorr, ca, imax, cb )


Calling object None (static method)
Description Generates spatially correlated random integers between 1 and imax
Input dist decorr Vector of decorrelation distances [1 x M] or [ M x 1 ]
ca Coordinates for the first mobile device in [m] given as [3 x N] matrix. The rows
correspond to the x,y and z coordinate.
imax The maximum value [ 1 x 1 ]
cb Coordinates for the corresponding second mobile device in [m] given as [3 x N]
matrix. The rows correspond to the x,y and z coordinate. This variable must
either be empty or have the same size as ”ca”.
acf type String describing the shape of the autocorrelation function and the number of
sinusoids, Default: ’Comb300’
Output s Random spatially correlated numbers [ M x N ]
h sos A handle to the used qd sos object

[ s, h sos ] = qd sos.randn ( dist decorr, ca, cb )


Calling object None (static method)
Description Generates spatially correlated normal distributed random numbers
Input dist decorr Vector of decorrelation distances [1 x M] or [ M x 1 ]
ca Coordinates for the first mobile device in [m] given as [3 x N] matrix. The rows
correspond to the x,y and z coordinate.
cb Coordinates for the corresponding second mobile device in [m] given as [3 x N]
matrix. The rows correspond to the x,y and z coordinate. This variable must
either be empty or have the same size as ”ca”.
acf type String describing the shape of the autocorrelation function and the number of
sinusoids, Default: ’Comb300’
Output s Random spatially correlated numbers [ M x N ]
h sos A handle to the used qd sos object

save ( filename )
Calling object Single object
Description Saves the coefficients to a mat-file
Sinusoid coefficients can be stored in a mat-file. In this way, it is possible to precompute the sinu-
soid coefficients and save significant time when initializing the method. It is possible to adjust the
decorrelation distance of a precomputed function without the need to perform the calculations again.
Input filename Path or filename to the coefficient file

h sos = qd sos.set acf ( acf type, distribution, dist decorr )


Calling object None (static method)
Description Creates a new ’qd sos’ object.
There are 3 ACF types that can be selected by acf type. The 3D SOS frequencies are precomputed
for 150, 300, 500, and 1000 sinusoids.
• Exponential ACF (Exp150, Exp300, Exp500, Exp1000 )
• Gaussian ACF (Gauss150, Gauss300, Gauss500, Gauss1000 )
• Combined Gaussian and Exponential ACF (Comb150, Comb300, Comb500, Comb1000)
The distributer function can be either (’normal’ or ’uniform’).
Input acf type String describing the shape of the autocorrelation function and the number of
sinusoids, Default: ’Comb300’
distribution Distribution of the random variables (’normal’ or ’uniform’), Default: ’normal’
dist decorr Decorrelation distance in [m], Default: 10 m
Output h sos Handle of the created qd sos object

Copyright: Fraunhofer Heinrich Hertz Institute 58


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

s = val ( ca, cb )
Calling object Object array
Description Returns correlated values at given coordinates
This method generates spatially correlated random variables at the given coordinates. The function
allows two inputs for the coordinates (”ca” and ”cb”). This can be used for dual-mobility scenarios
where both ends of the link are moving. In this case, ”ca” contains the coordinates for the first mobile
device and ”cb” contains the coordinates for the second mobile device. For each point in ”ca” there
must be one point in ”cb”. For single-mobility scenarios, where only one side is mobile, you may only
provide the input for ”ca”.
Input ca Coordinates for the first mobile device in [m] given as [3 x N] matrix. The rows
correspond to the x,y and z coordinate.
cb Coordinates for the corresponding second mobile device in [m] given as [3 x N]
matrix. The rows correspond to the x,y and z coordinate. This variable must
either be empty or have the same size as ”ca”.
Output s Vector ([M x N] elements) of spatially correlated random variables. If the method
was called on an object arrays, the rows contain the outputs of the individual SOS
objects.

2.2.7 Class “qd channel”

Objects of this class are the output of the channel model. They are created by ’qd builder’ objects.
By default, channel coefficients are provided in the time domain, as a list of delays and complex-valued
amplitudes. However, this class also implements certain methods to postprocess the channel data. Those
include:

• Transformation into frequency domain


• Interpolation in time domain (to change the terminal speed and sampling rate)
• Combining channel traces into longer segments (including birth and death of clusters)

Properties

name Name of the ’channel’ object.


This string is a unique identifier of the ’qd channel’ object. The ’qd builder’ creates one channel
object for each MT, each Tx and each segment. They are further grouped by scenarios (propagation
environments). The string consists of four parts separated by an underscore ’ ’. Those are:
• The scenario name from ’qd track.scenario’
• The transmitter name from ’qd layout.tx name’
• The receiver name from ’qd layout.rx name’
• The segment number
After ’qd channel.merge’ has been called, the name string consists of:
• The transmitter name from ’qd layout.tx name’
• The receiver name from ’qd layout.rx name’

version Version number of the QuaDRiGa release that was used to create the ’qd channel’ object.
center frequency Center frequency in [Hz].
coeff The complex-valued channel coefficients for each path. The indices of the 4-D tensor are:
[ no rxant , no txant , no path , no snapshot ]
delay The delays for each path.
There are two different options. If the delays are identical on the MIMO links, i.e. ’individual delays
= 0’, then ’delay’ is a 2-D matrix with dimensions [ no path , no napshot ]. If the delays are different
on the MIMO links, then ’delay’ is a 4-D tensor with dimensions [ no rxant , no txant , no path ,
no snapshot ].
par Field to store custom variables.
initial position The snapshot number for which the initial LSPs have been generated.
Normally, this is the first snapshot. However, if the user trajectory consists of more than one seg-
ment, then ’initial position’ points to the snapshot number where the current segment starts. For
example: If ’initial position’ is 100, then snapshots 1-99 are overlapping with the previous segment.

Copyright: Fraunhofer Heinrich Hertz Institute 59


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

tx position Position of each Tx in global cartesian coordinates using units of [m].


rx position The receiver position global cartesian coordinates using units of [m] for each snapshot.
no rxant Number of receive elements (read only)
no txant Number of transmit elements (read only)
no path Number of paths (read only)
no snap Number of snapshots (read only)
individual delays Indicates if the path delays are identical on each MIMO link (0) or if each link has a different path
delay (1).

Methods
h channel = qd channel ( Ccoeff, Cdelay, Cinitial position )
Calling object None (constructor)
Description Creates a new ’qd channel’ object.
Input Ccoeff The complex-valued channel coefficients for each path. The indices of the 4-D
tensor are: [ no rxant , no txant , no path , no snapshot ]
Cdelay The delays for each path. There are two different options: a 2-D matrix with
dimensions [ no path , no snapshot ] or a 4-D tensor with dimensions [ no rxant ,
no txant , no path , no snapshot ].
Cinitial position The snapshot number for which the initial LSPs have been generated
Output h channel Handle to the created ’qd channel’ object

h channel comb = combine tx rx


Calling object Object array
Description Combines channels from a qd channel array into a single object
This method operates on an array of qd channel objects containing channels from several BSs to
several MTs. It then merges these channels into a single qd channel object. For example, if you use
QuaDRiGa to generate channels from two single-antenna BSs to one single-antenna MT, you get an
two-element array of qd channel objects. The first object contains the SISO channel from BS1 to the
MT, the second object contains the SISO channel from BS2 to the MT. However, for some evaluations,
it would be preferable to have a MISO channel where the two BSs operate as a distributed-antenna
system. This is done by this method. If you call ”combine tx rx” on the qd channel array, you get
a MISO channel object with two transmit antennas and one receive antenna as output. Note that for
mobile receivers, all individual channel objects must have the same number of snapshots.
Output h channel comb Single qd channel object containing the channel coefficients of the combined chan-
nel.

out = copy
Calling object Object array
Description Creates a copy of the handle class object or array of objects.
While the standard copy command creates new physical objects for each element of the object array
(in case obj is an array of object handles), copy checks whether there are object handles pointing to
the same object and keeps this information.
Output out Copy of the current object or object array

Copyright: Fraunhofer Heinrich Hertz Institute 60


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

freq response = fr ( bandwidth, carriers, i snapshot )


Calling object Single object
Description Transforms the channel into frequency domain and returns the frequency response
Input bandwidth The baseband bandwidth in [Hz]
carriers The carrier positions. There are two options:
1. Specify the total number of carriers. In this case, ’carriers’ a scalar natural
number > 0. The carriers are then equally spaced over the bandwidth.
2. Specify the pilot positions. In this case, ’carriers’ is a vector of carrier
positions. The carrier positions are given relative to the bandwidth where
’0’ is the begin of the spectrum and ’1’ is the end. For example, if a 5 MHz
channel should be sampled at 0, 2.5 and 5 MHz, then ’carriers’ must be
set to [0, 0.5, 1].

i snapshot The snapshot indices for which the frequency response should be calculated. By
default, i.e. if ’i snapshot’ is not given, all snapshots are processed.
Output freq response The complex-valued channel coefficients for each carrier in frequency domain. The
indices of the 4-D tensor are:
[ Rx-Antenna , Tx-Antenna , Carrier-Index , Snapshot ]

c = interpolate ( dist, algorithm )


Calling object Single object
Description Interpolates the channel coefficients and delays.
The channel builder creates one snapshot for each position that is listed in the track object. When
the channel sampling theorem is not violated (i.e. the sample density is ≥ 2), then the channel can be
interpolated to any other position on the track. This can be used e.g. to emulate arbitrary movements
along the track.
For more information see ’qd track.movement profile’, ’qd track.interpolate movement’, or the tu-
torial “Applying Varying Speeds (Channel Interpolation)”.
Input dist A vector containing distance values on the track. The distance is measured in [m]
relative to the beginning of the track.
Alternatively, “dist” can be given as a 3-D tensor with dimensions
[ Rx-Antenna , Tx-Antenna , Snapshot ].
In this case, interpolation os done for each antenna element separately.
algorithm Selects the interpolation algorithm. The default is linear interpolation.
Optional are:
• linear - Linear interpolation (optimized for speed)
• cubic - Cubic spline interpolation of the channel coefficients and piecewise
cubic hermite polynomial interpolation for the delays

Output c Handle to the ’qd channel’ object containing the interpolated coefficients and de-
lays for each entry in ’dist’.

c = merge ( overlap, optimize, verbose )


Calling object Object array
Description Combines channel segments into a continuous time evolution channel.
The channel merger implements the continuous time evolution with smooth transitions between seg-
ments. Each segment of a track is split in two parts: an overlapping area with the previous segment
and an exclusive part with no overlapping. Each segment is generated independently by the channel
builder. However, the distance dependent autocorrelation of the large scale parameters was considered
when the parameters were drawn from the corresponding statistics.
Transition from segment to segment is carried out by replacing taps of the previous segment by the
taps of the current segment, one by one. The modeling of the birth/death process is done as published
in the documentation of the WIM2 channel model. The route between adjacent channel segments is
split into sub-intervals equal to the minimum number of taps in both overlapping segments. During
each sub-interval the power of an old tap ramps down and a new tap ramps up. Power ramps are
modeled by a modified sinus function to allow smooth transitions.

Copyright: Fraunhofer Heinrich Hertz Institute 61


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

Taps from the old and new segments are coupled based on their power. If the number of clusters is dif-
ferent in the channel segments, the weakest clusters are ramped up or down without a counterpart from
the new/old segment. The merging is only done for the NLOS components since the LOS component
has a deterministic behavior. The LOS component is thus just scaled in power.
Input overlap The length of the overlapping part relative to the segment length. It can have
values in between 0 (no overlap) and 1 (ramp along the entire segment). A value of
0 disables the merging process and the channel segments are simply concatenated.
A value of 1 constantly merges the channels. The default setting is 0.5.
verbose Enables (1, default) or disables (0) the progress bar.
Output c An array of handles to the ’qd channel’ objects containing the merged coefficients
and delays.

h channel quant = quantize delays ( tap spacing, verbose )


Calling object Single object
Description Fixes the path delays to a grid of delay bins
For some applications, e.g. channel emulation, it is not possible to achieve an infinite delay accuracy.
However, when the delays are rounded to a fixed grid of delay-bins (also refereed to as ”taps”), the
time-evolving channel is no longer smooth. When a delay ”jumps” from one delay-bin to the next, e.g.
when a MT is moving away from the BS, the phases in the frequency domain representation of the
channel will suddenly change as well. Multi-carrier communications systems with closed-loop channel
adaption (e.g. OFDM, WiFi, LTE, etc.) will exhibit poor performance in this case. This method
corrects this problem by approximating the ”real” delay value by two delays at a fixed spacing.
For example: when we assume that the required tap spacing is 5 ns (which corresponds to a 200 MHz
sample-rate) and the distance between BS and MT is 10 m, the delay of the LOS path would be 33.4
ns. However, the fixed tap spacing only allows values of 30 or 35 ns. This method approximates the
LOS delay by two taps (one at 30 and one at 35 ns) and linear interpolation of the path power. Hence,
in the frequency domain, the transition from one tap to the next is smooth. But note: this only works
when the bandwidth of the communication system is significantly less than the sample-rate.
Input tap spacing The spacing of the delay-bin in [seconds]. Default: 5 ns
verbose Enables (1, default) or disables (0) a progress bar.
Output h channel quant A qd channel object containing the approximated delays and channel coefficients

chan out = split snap ( varargin )


Calling object Single object
Description Splits channel objects based on snapshot indices.
This function can be used to split a channel object into sub-objects based on a list of snapshots. For
example, this can be used to separate channels into LOS and NLOS parts. To split the channels, the
following command can be used:
cs = c.split( 1:100, 101:2:200 );
This splits the channel object ”c” into two sub-channels, the first containing the snapshots 1 to 100,
and the second containing the snapshots 101 to 199 (at half resolution).
Notes:
• Inputs must be scalar channel objects.
• If there is evaluation data in the par field, it will be split as well. This requires the field
par.cluster ind which determines the small-scale-fading averaging intervals.
• A running index (in the format ”p001”, ”p002”, etc.) is added to the channel name, so that the
sub-channels can be identified.

Input varargin A list of snapshot indices. The number of inputs determines the number of output
channels.
Output chan out An array of handles to the split ’qd channel’ objects

Copyright: Fraunhofer Heinrich Hertz Institute 62


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

chan out = split tx ( varargin )


Calling object Object array
Description Splits channel arrays based on transmit antenna indices.
This function can be used to split large transmit array antennas into smaller arrays. For example, this
can be used to calculate the channels for individual sectors at a BS.
Example: A channel array has channels from three base stations (BSs). The first and second BS have
two sectors, each with two antennas. However, the sector antennas are merged into one array. The
third BS has only one sector. To split the channels into five sectors, the following command can be
used:
cs = c.split( {1:2,3:4}, {1:2,3:4}, {1:2} );
Notes:
• The method parses the name-string of the channel objects channel.name in order to determine
the Tx-Rx relationship. There are two allowed formats: (a) ”tx rx” and (b) ”scenario tx rx”
• The order of the inputs must match the transmitters in alphabetical order, i.e. the first input
corresponds to ”Tx01”, the second to ”Tx02” and so on. This is independent of the order in
”layout.tx name”, which might have a different order.
• If only one cell is given as input, but there are several Txs in the channel array, the same
sectorization is applied to each one of them.
• Outputs are sorted alphabetically according to ”tx rx” (scenario names are ignored)
• If the input array is shaped as [ Rx, Tx ], the output will be shaped as [ Rx, Tx * Sec ]

Input varargin A list of cell-arrays containing the transmit antenna indices.


Output chan out An array of handles to the split ’qd channel’ objects

2.2.8 QuaDRiGa package functions

The QuaDRiGa package functions are independent functions that are use by several classes of the QuaDRiGa
channel model. They can be fount in the ”+qf” folder and are called by ”qf.function name”.

Functions
[ Sh , bins , Sc , mu , sig ] = qf.acdf ( data , bins , dim , cdim )
Calling object None (static method)
Description Calculate the cumulative distribution function of a given data set
This function calculates the empirical cumulative distribution function from the given data. It is
possible to analyze multi-dimensional data-sets and average the results. For example, you may collect
10,000 data samples of an experiment and repeat the experiment 5 times. Hence, your data variable
may have the size [ 5,10000 ]. Then, you want to calculate 5 independent CDFs, one for each experiment
run, and evaluate how much the results differ for each run. Calling
[ Sh , bins, Sc , mu , sig ] = qf.acdf( data, [], 2,1 );
will produce the desired results. The input parameter dim = 2 describes which dimension of the data
set contains the samples, cdim = 1 describes on which dimension the repetitions are stored. The output
variable Sh contains the individual probabilities (y-axis), bins contains the sample values (x-axis), Sc
the average probabilities where the averaging was done over the quantiles.
Input data The data samples can be either given as a multi-dimensional array of size [ nA, nB,
nC ...] or as a cell array. The latter can be useful if there are different numbers of
results per experimental run.
bins The center values of each bin on the x-axis of the (non-cumulative) distribution
function. By default, 201 bins are equally spaced over the data range.
dim The dimension on which the analysis is done, Default: 1
cdim The dimension for which the resulting CDFs are averaged, Default: 2
Output Sh The individual CDFs. Default size: [ no bins, nB, nC, ...]

Copyright: Fraunhofer Heinrich Hertz Institute 63


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

bins The center values of each bin on the x-axis of the (non-cumulative) distribution
function.
Sc The averaged CDFs; Default size: [ no bins, nC, ...]
mu The average 0.1 ... 0.9 quantiles; Default size: [ 9, nC, ...]
sig The standard deviation of the 0.1 ... 0.9 quantiles; Default size: [ 9, nC, ...]

[ az, el, J, pow, accuracy, resolved ] = qf.calc angles ( cf, h qd arrayant, no subpath, range, verbose )
Calling object None (static method)
Description Estimates the arrival angles from the channel coefficients
This function estimates the arrival angles from a given coefficient matrix cf. This is done by comparing
the coefficients with the antenna response of the given antenna object h qd arrayant and determining
the most likely arrival direction in azimuth and elevation relative to the local antenna coordinate
system. Note that the direction finding results depend on the spatial resolution capabilities of the
antenna. If the array antenna has no spatial resolution (e.g. a single dipole), then the returned values
will be incorrect.
Input cf The channel coefficients; size [ n rx, n tx, n coeff ]
h qd arrayant The receive antenna object. The number of elements must match [ n rx ]
no subpath The maximum number of sub-paths per path, default: 1
range The allowed angle range in degree [ -el +el -az +az ], Default: [-90 90 -180 180]
verbose Show the estimation progress. 0 = Disable, 1 = Show progress bar, 2 = Show
spatial signature
Output az The azimuth angles in [rad], dimension [ n coeff, no subpath ]
el The elevation angles in [rad], dimension [ n coeff, no subpath ]
J The Jones vectors of the path, dimension [ 2, n tx, n coeff, no subpath ]
pow The power of the path without antenna pattern [ n tx, n coeff, no subpath ]
accuracy The estimation MSE [ n coeff, 1 ]
resolved The resolved spatial power [ n coeff, 1 ]

[ as, mean angle ] = qf.calc angular spreads ( ang, pow, wrap angles )
Calling object None (static method)
Description Calculates the angular spread in [rad]
This function calculates the RMS angular spread from a given set of angles. It is used by the
”qd builder” to map the path powers to angles.
Input ang A vector of angles in [rad]. Dimensions: [ n ang x n path ]
pow A vector of path powers in [W]. Dimensions: [ n ang x n path ] or [ 1 x n path ]
wrap angles A logical variable. If set to 1, angles will be wrapped around +/- pi. If set to 0,
no wrapping is applied. Default: 1 (with wrapping)
Output as The RMS angular spread in [rad] for each angle vector. Dimensions: [ n ang x 1 ]
mean angle The mean angles in [rad]. Dimensions: [ n ang x 1 ]

[ R, phiL, thetaL, gamma ] = qf.calc ant rotation ( zrot, yrot, xrot, phi, theta )
Calling object None (static method)
Description Calculates the polarimetric antenna rotation in geographic coordinates
This function implements the antenna rotation, including the polarization. For each rotation angle
”zrot”, ”yrot”, and ”xrot”, a 3D rotation matrix (Rz, Ry, Ry) is calculated (assuming a right-handed
Cartesian coordinate system). The matrices are combined in the order ”Rz * Ry * Rx”, i.e. the
x-rotation is applied first and the z-rotation is applied last. The input angles ”phi” (azimuth) and
”theta” (elevation) are relative to the global coordinate system. They are converted into the local
antenna coordinates ”phiL” and ”thetaL” which takes the antenna orientation into account. The
angle ”gamma” is the polarization rotation angle. The rotation angles ”zrot”, ”yrot”, and ”xrot”
can be empty, scalar, or match the size of ”phi and ”theta”. This function is used by the classes
”qd arrayant”, ”qd layout”, and ”qd builder”.
Note:
In the ”qd track” objects, the property ”height direction” is defined as a NEGATIVE rotation around
the y-axis (right-hand-rule), and the ”ground direction” is a positive rotation around the z-axis. Hence,
you need to use the negative ”height direction” as ”yrot” to get the correct antenna rotation!
Input zrot Rotation angle around z-axis in [rad], Default = 0
yrot Rotation angle around y-axis in [rad], Default = 0

Copyright: Fraunhofer Heinrich Hertz Institute 64


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

xrot Rotation angle around x-axis in [rad], Default = 0


phi Azimuth input angles in [rad], Default = 0
theta Elevation input angles in [rad], Default = 0
Output R Antenna rotation matrix (Rz * Ry * Rx)
phiL Azimuth angles for pattern interpolation in [rad]
thetaL Elevation angles for pattern interpolation in [rad]
gamma The polarization rotation angle in [rad]

[ ds, mean delay ] = qf.calc delay spread ( taus, pow )


Calling object None (static method)
Description Calculates the delay spread in [s]
This function calculates the RMS delay spread from a given set of delays and powers. It is used by the
”qd builder” to map the path powers to delays.
Input ang A vector of deays [s]. Dimensions: [ n taus x n path ]
pow A vector of path powers in [W]. Dimensions: [ n taus x n path ]
Output as The RMS delay spread for each delay vector. Dimensions: [ n taus x 1 ]
mean angle The mean delay in [s]. Dimensions: [ n taus x 1 ]

iseq = qf.eqo ( obj, obj array )


Calling object None (static method)
Description Determines if object handles are equal
Octave 4.0 does not implement the ”eq” function and is very sensitive to incorrect indexing of ob-
ject arrays. This function provides the required functionality for QuaDRiGa. For this to work, the
corresponding classes must have a writable property ”OctEq” which may be hidden.
Input obj A single object handle.
obj array A (multi-dimensional) array of object handles with up to four dimensions.
Output iseq A boolean variable having the same size as ”obj array”. True (1) values indicate
that the corresponding handles in ”obj array” point to the same object as the
”obj”-handle does.

zi = qf.interp ( x, y, z, xc, yc )
Calling object None (static method)
Description 2D linear interpolation optimized for performace
This function implements a 2D linear interpolation which is highly optimized for fast execution. All
calculations are done in single-precision floating point (30% faster than double precision, but less
accurate), and multiple data sets can be interpolated simultaneously.
One-dimensional linear interpolation can be done by using
zi = interp( x, 0, z, xc )
Input x Vector of x sample points; size [ 1, nx ] or [ nx, 1 ]
y Vector of y sample points; size [ 1, ny ] or [ ny, 1 ]
z The input data matrix; size [ ny, nx, ne ]; the 3rd dimension allows for interpola-
tions of multiple data-sets; for one-dimensional interpolation, the size must be [ 1,
nx, ne ]
xc Vector of x sample points after interpolation; size [ 1, nxi ] or [ nxi , 1 ]
xc Vector of y sample points after interpolation; size [ 1, nyi ] or [ nyi, 1 ]
Output zi The interpolated data; size [ nyi, nxi, ne ]

[ mu, epsilon, gamma, Ri, sigma, kappa, delta ] = qf.log2dfit ( vi, ai, bi, round digits, show plot, a linear, b linear, a name,
b name, v name )
Calling object None (static method)

Copyright: Fraunhofer Heinrich Hertz Institute 65


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

Description Logarithmic curve fitting with two variables


This function fits the input data ”vi” sampled at points ”ai” and ”bi” to the following model in a
least square sense:
V = R + X * S
R = mu + epsilon * log10( a ) + gamma * log10( b )
S = sigma + kappa * log10( a ) + delta * log10( b )
V is assumed to be a random, normal-distributed variable with a mean value R and standard deviation
S. The reference value R depends on the variables a and b. X is a normal-distributed random variable
with zero-mean and unit-variance. The scaling of the STD of V is done by S, which also depends on
the variables a and b.
Input vi Vector of input data values
ai Sample points for variable a (linear). If ai is empty, 1D fitting is done for bi only.
bi Sample points for variable b (linear). If bi is empty, 1D fitting is done for ai only.
If ai and bi are empty, only mu and sigma are returned.
round digits Rounds the output to this number of decimal digits after the coma.
show plot Shows a plot with the results and outputs the fitted values to the console. The
plot contains the average and the 1-sigma interval above and below the average as
well as the data points. The options are: (0) disables the plot; (1, default) shows
the plot and the text for avg and std; (2) shows the plot and the text for avg only;
(3) shows the plot and the text for std only; (4) shows the plot only
a linear If set to true, fitting is done for linear values of ai instead of log10( ai ).
b linear If set to true, fitting is done for linear values of bi instead of log10( bi ).
a name Alternative variable name for a in the figure title and console text
b name Alternative variable name for a in the figure title and console text
v name Alternative name for the z-axis in the figure
Output mu Reference value R at a = 1 and b = 1
epsilon Scaling of the reference vale R with a [R/log10(a)] or [R/a]
gamma Scaling of the reference value R with b [R/log10(b)] or [R/b]
Ri The reference value R for the input sample points ai and bi
sigma The STD of V at a = 1 and b = 1
kappa Scaling of the STD S with a [S/log10(a)] or [S/a]; If kappa is not requested as an
output variable, no STD scaling is assumed.
delta Scaling of the STD S with b [S/log10(b)] or [S/b]; If delta is not requested as an
output variable, STD scaling is only done for a.

str = qf.mat2str ( dat, name, line, format )


Calling object None (static method)
Description Converts numeric data into M-code
This function converts numeric data into M-code that can be used in MATLAB/Octave to be executed
on the command line or embedded into scripts and functions.
Input dat A multi-dimensional array containing the real-valued data. The maximum number
of dimension is 3.
name The variable name (string) to be written to the output.
line Number of characters per line. Default: 100
format Format of the output fields, specified as a string. See ”num2str” for reference.
Output str Formatted output string.

[ theta, phi, B, d phi ] = qf.pack sphere ( N )


Calling object None (static method)
Description Creates equally distributed points on the unit sphere
This function equally distributes points on a unit sphere. The actual number of placed points (M)
might be smaller then N due to rounding offsets.
Input N The number of points to place.
Output theta Vector of elevation angles in [rad] having values from -pi/2 to pi/2; size [ M x 1 ]
phi Vector of azimuth angles in [rad] having values from -pi to pi; size [ M x 1 ]
B Positions of the points on Cartesian coordinates; size [ 3 x M ]

Copyright: Fraunhofer Heinrich Hertz Institute 66


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

[ i1,i2,i3,i4 ] = qf.qind2sub ( sic, ndx )


Calling object None (static method)
Description Calculates subscripts from linear indices.
The qind2sub command determines the equivalent subscript values corresponding to a single index
into an array. The output is identical to the MATLAB / Octave ind2sub command. However, the
qind2sub command offers slightly better performance.
Input sic A vector describing the layout of the object. For two-dimensional objects, siz(1)
is the number of rows and siz(2) is the number of columns.
ndx A vector containing the linear indices of the array.
Output i1 Row-index
i2 Column-index
i3 Page-index
i4 Index of the 4-th dimension

out = qf.reshapeo ( obj, shape )


Calling object None (static method)
Description Reshapes the input handle object array to an output object array
Octave 4.0 does not implement the ”reshape” function and is very sensitive to incorrect indexing of
object arrays. This function provides the required functionality for QuaDRiGa.
Input obj Object array with up to 4 dimensions.
shape A vector describing the desired layout of the object array. For two-dimensional
array, shape(1) is the number of rows and shape(2) is the number of columns.
Output out Reshaped object array with up to 4 dimensions.

[ phiI, thetaI, pI ] = qf.slerp ( x, phi, theta, xi )


Calling object None (static method)
Description Spherical linear interpolation optimized for performace
Slerp is shorthand for spherical linear interpolation and refers to constant-speed motion along a
unit-radius great circle arc. This function is needed when interpolating angles in spheric or circu-
lar coordinates, e.g. when interpolating phase information (qd channel.interpolate) or orientations
(qd track.interpolate).
Circular linear interpolation can be done by using
phiI = slerp( x, phi, 0, xi )
Input x Vector of x sample points; size [ 1, nx ] or [ nx, 1 ]
phi Vector of phi angles in [rad]; values from -pi to pi; size [ nx, ne ]; the 2nd dimension
allows for interpolations of multiple data-sets
theta Vector of theta angles in [rad]; values from -pi/2 (down) to pi/2 (up); size [ nx, ne
]; the 2nd dimension allows for interpolations of multiple data-sets
xc Vector of x sample points after interpolation; size [ 1, nxi ] or [ nxi , 1 ]
Output phiI Vector of interpolated phi angles in [rad]; values from -pi to pi; size [ nxi, ne ]
thetaI Vector of interpolated theta angles in [rad]; values from -pi/2 (down) to pi/2 (up);
size [ nxi, ne ]
pI Cartesian coordinates of the interpolated points on the unit-sphere; size [ 3, nxi,
ne ]

c = qf.xcorrcoeff ( a,b )
Calling object None (static method)
Description Calculates the correlation coefficient of two vectors
Input a Data vector of size [ 1 x N ]
b Data vector of size [ T x N ]
Output c Correlation coefficient between the values in a and b, size [ 1 x T ]

Copyright: Fraunhofer Heinrich Hertz Institute 67


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

2.3 Data Flow

The data flow of the QuaDRiGa channel model is depicted in Fig. 5. This figure shows how each of the
processing steps, which are described in detail in the following sections, are linked together. The lines show,
which parameters are exchanged and how often they are updated. Black lines are for parameters that are
either provided by the model users or which are given in the parameter table. Those values are constant.
Blue values are updated once per segment and red values are updated once per snapshot.

User Input Variables


Terminal trajectories Network layout
Propagation scenarios Transmitter positions Antenna Parameters
Antenna patterns and array geometries, F
Speed profile Carrier frequency

Trajectories
Scenarios Transmitter Positions

Split terminal trajectories


into segments Snapshot position
LOS direction, φLOS
Scenarios
Map Size

Snapshot position
Calculate path loss
Path Loss Parameters
for each snapshot Drifting Path Loss
XPRμ XPRσ No. clusters, L
Parameter Table Cluster-wise azimuth spread, cAoA
Per cluster SF std.

Kμ DSμ
Delay factor, No. clusters

Kσ DSσ
SFσ AoAμ Snapshot position
Corr. AoAσ

Generation of
Correlated Large sum-of-sinusoids Calculate KF Drifting SF
Scale Parameters coefficients and SF values Drifting KF
Angular Spread, K-Factor
Delay spread, K-Factor Draw random
initial phases

Generate initial Generate cluster Generate drifting Generate XPR Generate channel
delays powers AoAs coefficients

Channel coefficients
X-pol. power ratios
Drifting angles of arrival

Cluster powers

Generate drifting Drifting delay for each path


Initial delay for each path delays

Overlapping area Scaled channel Apply path loss, K-factor


Connect successive
coefficients and shadow fading
channel traces

Merged channel coefficients


Constant values
Apply speed profile
One update per segment

One update per snapshot


Return output

Figure 5: QuaDRiGa Data Flow

Copyright: Fraunhofer Heinrich Hertz Institute 68


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

2.4 Scenario Specific Parameters

The large-scale parameters (LSPs) are defined by the parameter files which can be found in the folder
’config’ of the QuaDRiGa source (’quadriga src’) folder. The method ’qd layout.set scenario’ can
be used to assign parameters automatically to receivers. A scenario may include several files describing
propagation conditions for line of sight (LOS), non-line of sight (NLOS), and outdoor-to-indoor (O2I). The
following table describes the parameter groups and their applicability.

Table 29: Parameter sets provided together with the standard software
Generic parameter sets for specific QuaDRiGa functions
LOSonly One LOS path only, no shadow fading, no path loss
Freespace One LOS path only, no shadow fading, freespace loss
TwoRayGR Two-Ray Ground Reflection model (2 paths), no shadow fading, freespace loss
Null A parameter set that disables the channel (e.g. for satellites below the horizon)

3GPP 3D model (3GPP TR 36.873) [9]


3GPP 3D UMa - 3GPP 3D Urban Macro-Cell
3GPP 3D UMa LOS For typical terrestrial base stations deployed above rooftop in densely populated urban
3GPP 3D UMa LOS O2I areas. Parameters cover LOS, NLOS and O2I. The maximum cell radius is about 1 km,
3GPP 3D UMa NLOS the carrier frequency is fixed to 2 GHz, the BS height is 25 meters and the MT height
3GPP 3D UMa NLOS O2I can vary from 1.5 to 22.5 m.
3GPP 3D UMi - 3GPP 3D Urban Micro-Cell (3GPP TR 36.873, [9])
3GPP 3D UMi LOS For typical terrestrial small-cell BSs deployed below rooftop in densely populated urban
3GPP 3D UMi LOS O2I areas. Parameters cover LOS, NLOS and O2I. The maximum cell radius is about 200
3GPP 3D UMi NLOS m, the carrier frequency is fixed to 2 GHz, the BS height is 10 meters and the MT height
3GPP 3D UMi NLOS O2I can vary from 1.5 to 22.5 m.

3GPP NR model (3GPP TR 38.901) [14]


3GPP 38.901 Indoor Mixed Office, 3GPP 38.901 Indoor Open Office - 3GPP NR Indoor Office
3GPP 38.901 Indoor LOS For typical indoor deployments such as WiFi or femto-cells covering carrier frequencies
3GPP 38.901 Indoor NLOS from 500 MHz to 100 GHz. The BS antenna height is fixed to 3 meters and the MT
antenna height to 1 meter. Two office types are covered: Mixed office and Open of-
fice. They differ only in their LOS probability. The office type can be selected using
’qd layout.set scenario’.
3GPP 38.901 UMa - 3GPP NR Urban Macro-Cell
3GPP 38.901 UMa LOS For typical terrestrial base stations deployed above rooftop in densely populated urban
3GPP 38.901 UMa LOS O2I areas. Parameters cover LOS, NLOS and O2I. The maximum cell radius is about 1
3GPP 38.901 UMa NLOS km, the carrier frequency can be varied from 500 MHz to 100 GHz, the BS height is 25
3GPP 38.901 UMa NLOS O2I meters and the MT height can vary from 1.5 to 22.5 m
3GPP 38.901 UMi - 3GPP NR Urban Micro-Cell
3GPP 38.901 UMi LOS For typical terrestrial base stations deployed below rooftop in densely populated urban
3GPP 38.901 UMi LOS O2I areas. Parameters cover LOS, NLOS and O2I. The maximum cell radius is about 200
3GPP 38.901 UMi NLOS m, the carrier frequency can be varied from 500 MHz to 100 GHz, the BS height is 10
3GPP 38.901 UMi NLOS O2I meters and the MT height can vary from 1.5 to 22.5 m
3GPP 38.901 RMa - 3GPP NR Rural Macro-Cell
3GPP 38.901 RMa LOS For typical rural base stations. Parameters cover LOS, NLOS and O2I. The maximum
3GPP 38.901 RMa LOS O2I cell radius is about 10 km, the carrier frequency can be varied from 500 MHz to 100
3GPP 38.901 RMa NLOS GHz, the BS height can vary from 10 to 150 m, and the MT height can vary from 1.5
3GPP 38.901 RMa NLOS O2I to 22.5 m

Copyright: Fraunhofer Heinrich Hertz Institute 69


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

mmMAGIC model [15]


mmMAGIC Indoor - mmMAGIC Indoor Office
mmMAGIC Indoor LOS For typical indoor deployments such as WiFi or femto-cells covering carrier frequencies
mmMAGIC Indoor NLOS from 6 GHz to 100 GHz with up to 2 GHz bandwidth. The BS antenna height is fixed
to 3 meters and the MT antenna height to 1 meter.
mmMAGIC UMi - mmMAGIC Urban Micro-Cell
mmMAGIC UMi LOS For typical terrestrial pico-base stations deployed below rooftop in densely populated
mmMAGIC UMi LOS O2I urban areas covering carrier frequencies from 6 GHz to 100 GHz with up to 2 GHz
mmMAGIC UMi NLOS bandwidth. The BS antenna height can vary from 6 to 10 meters and the MT antenna
mmMAGIC UMi NLOS O2I height is fixed to 1.5 meters.

Measurement-based parameters
QuaDRiGa Industrial - Industrial Indoor Scenario [16]
QuaDRiGa Industrial LOS For industrial-indoor deployments (e.g. for factory halls) covering carrier frequencies
QuaDRiGa Industrial NLOS from 2 GHz to 6 GHz. The BS antenna height can vary from 1 to 10 meters and the
MT antenna height can vary from 1 to 3 meters. The maximum diameter of the hall
can be up to 150 m with a ceiling height ranging from 6 to 10 meters. This scenario
supports dual-mobility.
QuaDRiGa UD2D - Urban Device-to-Device Scenario
QuaDRiGa UD2D LOS For device-to-device communications in an outdoor urban environment. Parameters
QuaDRiGa UD2D NLOS were extracted from measurements in an UMi deployment in Berlin [17]. However, the
values have not be validated by measurements. The parameters are for testing only. BS
and MT antenna heights are fixed to 1.5 meters. This scenario supports dual-mobility.
BERLIN UMa LOS Terrestrial Urban Macrocell parameters extracted from measurements in Berlin, Ger-
BERLIN UMa NLOS many [18].
DRESDEN UMa LOS Terrestrial Urban Macrocell parameters extracted from measurements in Dresden, Ger-
DRESDEN UMa NLOS many [18].

WINNER model [4, 6]


WINNER UMa C2 LOS WINNER Urban Macrocell
WINNER UMa C2 NLOS For typical terrestrial base stations deployed above rooftop in densely populated urban
areas. The max. cell radius is about 1 km.
WINNER UMi B1 LOS WINNER Urban Microcell
WINNER UMi B1 NLOS For typical terrestrial pico-base stations deployed below rooftop in densely populated
urban areas. The max. cell radius is about 200 m.
WINNER SMa C1 LOS WINNER Sub-Urban Macrocell
WINNER SMa C1 NLOS For typical terrestrial base stations deployed above rooftop in sub-urban areas. The
max. cell radius is about 10 km.
WINNER Indoor A1 LOS WINNER Indoor Hotspot
WINNER Indoor A1 NLOS For typical indoor deployments such as WiFi or femto-cells.
WINNER UMa2Indoor C4 LOS WINNER Urban Macrocell to Indoor
WINNER UMa2Indoor C4 NLOS For users within buildings that are connected to a terrestrial base station deployed above
rooftop in densely populated urban areas.
WINNER UMi2Indoor B4 LOS WINNER Urban Microcell to Indoor
WINNER UMi2Indoor B4 NLOS For users within buildings that are connected to terrestrial pico-base stations deployed
below rooftop in densely populated urban areas.

MIMOSA parameters (MIMO over Satellite) [19, 20]


MIMOSA 10-45 LOS MIMOSA Satellite to Mobile Parameters for Urban Propagation Elevation range from
MIMOSA 10-45 NLOS 10 to 45°. Parameters were extracted from terrestrial measurement using a high-altitude
platform.
MIMOSA 16-25 LOS MIMOSA Satellite to Mobile Parameters for Urban Propagation Elevation range from
MIMOSA 16-25 NLOS 16 to 25°. Parameters were extracted from terrestrial measurement using a high-altitude
platform.
MIMOSA 25-35 LOS MIMOSA Satellite to Mobile Parameters for Urban Propagation Elevation range from
MIMOSA 25-35 NLOS 25 to 35°. Parameters were extracted from terrestrial measurement using a high-altitude
platform.
MIMOSA 35-45 LOS MIMOSA Satellite to Mobile Parameters for Urban Propagation Elevation range from
MIMOSA 35-45 NLOS 35 to 45°. Parameters were extracted from terrestrial measurement using a high-altitude
platform.

Copyright: Fraunhofer Heinrich Hertz Institute 70


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

2.5 Description of the Parameter Table

The QuaDRiGa channel model is a generic model. That means, that it uses the same method for generating
channel coefficients in different environments. E.g. the principal approach is exactly the same in a cellular
network and in a satellite network. The only difference is the parametrization for both cases. Each envi-
ronment is described by 55 individual parameters. These parameters are stored in configuration files that
can be found in the subfolder named “config” in the main channel model folder. The parameters and values
can be described as follows:

• No. Clusters
This value describes the number of clusters. Each cluster is the source of a reflected or scattered wave
arriving at the receiver. Typically there are less clusters in a LOS scenario then in a NLOS scenario.
Note that the number of clusters directly influences the time needed to calculate the coefficients.
• Path Loss (PL)
A common path loss (PL) model for cellular systems is the log-distance model
d f
PL[dB] = A · log10 + B + C log10 (1)
d0 f0
where A, B and C are scenario-specific coefficients. They are typically determined by measurements. d
is the distance between the transmitter and the receiver, f is the carrier frequency. d0 is the reverence
distance (usually 1 m), f0 is the reference frequency (usually 1 GHz). The path-loss exponent A
typically varies between 20 and 40, depending on the propagation conditions, the base station height
and other influences. In other environments such as in satellite systems, the PL does not depend on
the distance but has a constant value. In this case, A would be 0.
• Shadow Fading (SF)
Shadow fading occurs when an obstacle gets positioned between the wireless device and the signal
transmitter. This interference causes significant reduction in signal strength because the wave is
shadowed or blocked by the obstacle. It is modeled as log-normal distributed with two parameters:
The standard deviation SFσ defines the width of the distribution, i.e. the power value (in dB) above
or below the distance dependent PL and the decorrelation distance SFλ . This parameter defines how
fast the SF varies when the terminal moves through the environment. E.g. a value of 87 means that
when the terminal moves 87 m in any given direction, then the correlation of the value at this distance
with the value at the initial position is e−1 = 0.37.
• Delay Spread (DS)
The root-mean-square (RMS) delay spread is probably the most important single measure for the delay
time extent of a multipath radio channel. The RMS delay spread is the square root of the second
central moment of the power delay profile and is defined to be
v !2
L L
u
u1 X 1 X
DS = t · Pl · (τl )2 − · Pl · τl (2)
Pi Pi
l=1 l=1

with Pi is the total received power, Pl the cluster-power and τl the cluster delay.

In order to generate the coefficients, QuaDRiGa has to generate delays for each of the multipath
clusters. I.e. the total lengths of scattered paths have to be defined. This generation of delays is
governed by value of the DS in a specific environment. The DS is assumed to be log-normal distributed
and defined by two parameters: Its median value DSµ and its STD DSσ . Thus, a value for DSµ of −6.69
corresponds to a median DS of 204 ns (Note: mean and median differ for log-normal distributions).
DSσ then defines the range of the values. E.g. DSσ = 0.3 leads to typical values in the range of
10−6.69−0.3 = 102 ns to 10−6.69+0.3 = 407 ns. As for the shadow fading, the decorrelation distance DSλ
defines how fast the DS varies when the terminal moves through the environment.

Copyright: Fraunhofer Heinrich Hertz Institute 71


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

The delay spread is calculated from both, the delays τl and the path powers Pl . I.e. lager delay spreads
can either be achieved by increasing the values of τl and keeping Pl fixed or adjusting Pl and keeping
τl fixed. In order to avoid this ambiguity, an additional proportionality factor (delay factor) rτ is
introduced to scale the width of the distribution of τl . rτ is calculated from measurement data. See
Sec. 3.3 for more details.

• Ricean K-Factor (KF)


Rician fading occurs when one of the paths, typically a line of sight signal, is much stronger than
the others. The KF K is the ratio between the power in the direct path and the power in the other,
scattered, paths. As for the DS, the KF is assumed to be log-normal distributed. The distribution is
defined by its median value KFµ and its STD KFσ . The decorrelation distance KFλ defines how fast
the KF varies when the terminal moves through the environment.

• Angular Spread
The angular spread defines the distribution of the departure- and arrival angles of each multipath
component in 3D space seen by the transmitter and receiver, respectively. Each path gets assigned an
azimuth angle in the horizontal plane and an elevation angle in the vertical plane. Thus we have four
values for the angular spread:

1. Azimuth spread of Departure (AsD)


2. Azimuth spread of Arrival (AsA)
3. Elevation spread of Departure (EsD)
4. Elevation spread of Arrival (EsA)

Each one of them is assumed to be log-normal distributed. Hence, we need the parameters µ, σ and
λ to define the distributions. These spreads are translated into specific angles for each multipath
cluster. Additionally, we assume that clusters are the source of several multipath components that are
not resolvable in the delay domain. Thus, these sub-paths do not have specific delays, but they have
different departure- and arrival angles. Thus, we need an additional parameter cφ for each of the four
angles that scales the dimensions of the clusters in 3D-space. See Sec. 3.3 for details.

• Cross-polarization Ratio (XPR)


The XPR defines how the polarization changes for a multipath component. I.e. the initial polarization
of a path is defined by the transmit antenna. However, for the NLOS components, the transmitted
signal undergoes some diffraction, reflection or scattering before reaching the receiver.

The XPR (in dB) is assumed to be normal distributed where µ and σ define the distribution. We
translate the XPR in a polarization rotation angle which turns the polarization direction. A XPR
value where a value of +Inf means that the axis remains the same for all NLOS paths. I.e. vertically
polarized waves remain vertically polarized after scattering. On the other hand, a value of -Inf dB
means that the polarization is turned by 90°. In case of 0 dB, the axis is turned by 45°, i.e. the power
of a vertically polarized wave is split equally into a H- and V component.

The following table gives an overview of the parameters in the config files. They get converted into a
structure ’qd parameter set.scenpar’.

Parameter Unit or type Description


plpar.model Text string Selects the model for average path loss. For satellite applications the pathloss is
(PL model) defined by the satellite distance and is assumed to be constant for the reception
are. For terrestrial cases pathloss models like ”Hata” or others (e.g. WINNER
pathloss models) can be selected.
plpar.A dB For satellite applications this parameter defines the average path loss and is
(PL A) equivalent to the “mu” of the lognormal distribution of the shadow fading.
Parameters in structure ’qd parameter set.scenpar’
Large-Scale Parameters Those parameters describe how the large-scale parameters vary within a prop-
agation environment.

Copyright: Fraunhofer Heinrich Hertz Institute 72


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

SF sigma dB Those parameter describe the slow fading implemented as Lognormal distribu-
SF delta dB/GHz tion and filtered according to the decorrelation distance “lambda”. SF delta
SF lambda meter describes the frequency dependence relative to 1 GHz.
KF mu dB Statistical properties of the K-factor. KF gamma describes the frequency depen-
KF gamma dB/GHz dence of the average KF relative to 1 GHz, KF delta describes the frequency
KF sigma dB dependence of the KF spread relative to 1 GHz
KF delta dB/GHz
KF lambda meter
XPR mu dB The XPR is defined by the XPR-Antenna (see antenna pattern) and the XPR
XPR gamma dB/GHz “environment”. The parameters describe the statistical properties of the XPR
XPR sigma dB “environment”. Note: For the LOS component no XPR environment is as-
XPR delta dB/GHz sumed, only the XPR antenna is applied. Hence the overall XPR depends also
XPR lambda meter highly on the K-factor.
DS mu log10([s]) Statistical properties of the delay spread.
DS gamma log10([s])/GHz
DS sigma log10([s])
DS delta log10([s])/GHz
DS lambda meter
AS A mu log10([deg]) Statistical properties of the azimuth of arrival spread at the receiver.
AS A gamma log10([deg])/GHz
AS A sigma log10([deg])
AS A delta log10([deg])/GHz
AS A lambda meter
ES A mu log10([deg]) Statistical properties of the elevation of arrival spread at the receiver.
ES A gamma log10([deg])/GHz
ES A sigma log10([deg])
ES A delta log10([deg])/GHz
ES A lambda meter
AS D mu log10([deg]) Statistical properties of the azimuth of departure spread at the transmitter.
AS D gamma log10([deg])/GHz
AS D sigma log10([deg])
AS D delta log10([deg])/GHz
AS D lambda meter
ES D mu log10([deg]) Statistical properties of the elevation of departure spread at the transmitter.
ES D gamma log10([deg])/GHz The additional parameter ES D mu A described the distance-dependency of the
ES D mu A log10([deg])/m ESD relative to one meter. ES D mu min describes the minimum allowed ESD.
ES D mu min log10([deg])
ES D sigma log10([deg])
ES D delta log10([deg])/GHz
ES D lambda meter
Cross correlations There are interdependencies between parameters. For example, if the K-Factor
is high, the delay spread gets shorter since more power is coming from the direct
component. This is expressed by the cross-correlations parameters. They can
vary between -1 and 1. Negative values denote inverse correlation, e.g. a high K-
Factor implies a low delay spread. Positive Value implies a positive correlation
such as a high K-Factor also implies a high shadow fading. Cross-Correlations
are used during the map-generation.
ds kf Correlation of delay spread and K-Factor.
asA ds Correlation of delay spread and azimuth of arrival angle spread.
esA ds Correlation of delay spread and elevation of arrival angle spread.
ds sf Correlation of delay spread and shadow fading.
asA kf Correlation of K-Factor and azimuth of arrival angle spread.
esA kf Correlation of K-Factor and elevation of arrival angle spread.
sf kf Correlation of K-Factor and shadow fading.
esA asA Correlation elevation of arrival angle spread and azimuth of arrival angle spread.
asA sf Correlation of shadow fading and azimuth of arrival angle spread.
esA sf Correlation of shadow fading and elevation of arrival angle spread.
Cluster Parameter Those parameters influence the generation of the scattering-clusters and the
distribution of the sub-paths within each cluster.
NumClusters Integer The number of clusters including LOS and (optional) ground reflection cluster.
For multipath rich environments typically more clusters are used. If the LOS
component is dominant a lower number of clusters is sufficient.
NumSubPaths Integer The number of sub-paths per cluster. The default value is 20.

Copyright: Fraunhofer Heinrich Hertz Institute 73


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

SubpathMethod Text string Selector for the subpath generation method. The default 3GPP and WINNER
model use ’legacy’ model. Alternatively, the ’mmMAGIC’ [15] model can be
used.
PerCluster DS ns The per-cluster delay spread in nanoseconds. PerClusterDS gamma de-
PerClusterDS gamma ns/GHz scribes the frequency dependence of the cluster DS relative to 1 GHz.
PerClusterDS min ns PerClusterDS min describes the minimum value.
PerCluster AS A deg The azimuth of arrival angular spread of the sub-paths within one cluster.
PerCluster ES A deg The elevation of arrival angular spread of the sub-paths within one cluster.
PerCluster AS D deg The azimuth of departure angular spread of the sub-paths within one cluster.
PerCluster ES D deg The elevation of departure angular spread of the sub-paths within one cluster.
LNS ksi Normally, cluster powers are taken from an exponential power-delay-profile.
This parameter enables an additional variation of the individual cluster powers
around the PDP.
r DS This parameter allows the mapping of delay-spreads to delays and powers for
the clusters. See section 3.3.
Spatial consistency parameters Those parameters influence the locations-dependence of the large-and small-
scale parameters.
SC lambda meter Decorrelation distance of all random variables used for generating the small-
scale-fading.
Ground reflection parameters Those parameters control the ground reflection.
GR enabled 0/1 Enables (1) or disables (0, default) the explicit ground reflection.
GR epsilon complex Fixed reflection coefficient (complex-valued) of the ground. If a value of 0 is
set, the reflection coefficient is determined by a frequency-dependent model.
See: [13]

Copyright: Fraunhofer Heinrich Hertz Institute 74


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

2.6 Data Exchange Formats

2.6.1 QuaDRiGa Array Antenna Exchange Format (QDANT)

In QuaDRiGa, antenna data is described over a surface as a function of position relative to the antenna. Far-
field data is mapped to spherical surfaces from which directivity, polarization and patterns are calculated.
A reference for antenna measurements and coordinate systems can be found in [21]. QuaDRiGa uses the
Polar-Spherical (Theta-Phi) coordinate system, where the antenna coordinate system has two angles and
two poles. The elevation angle θ is measured relative to the pole axis. A complete circle will go through
each of the two poles, similar to the longitude coordinate in the world geodetic system (WGS). The azimuth
angle φ moves around the pole, similar to the latitude in WGS. Thus, the antenna is defined in geographic
coordinates.

Polarization is described in a polar-spherical polarization basis in which the the pole of the polarization
basis is placed along the z-axis. The electric field is resolved onto three vectors which are aligned to each of
the three spherical unit vectors êθ , êφ and êr of the coordinate system. In this representation, êr is aligned
with the propagation direction of a path. In the far-field of an antenna, there is no field in this direction.
Thus, the radiation pattern consists of two components, one is aligned with êθ and another is aligned with
êφ .

The QuaDRiGa array antenna exchange format is a file format used to store antenna pattern data in XML
and load them into QuaDRiga. This section contains a reference for all XML elements defined in QDANT
v2.2.0. Because QDANT is an XML grammar and file format, tag names are case-sensitive and must appear
exactly as shown here. An example of a 2-element array antenna with perfect cross-polarization is given as:
1 <? xml version ="1.0" e n c o d i n g =" UTF -8" ? >
2 < qdant xmlns = " http :// www . quadriga - channel - model . de " >
3 < layout >1 </ layout >
4 < arrayant id = " 1 " >
5 < name > Simple XPOL </ name >
6 < C en te rF r eq ue nc y > 2600000000 </ C en te rF r eq ue n cy >
7 < NoElements >2 </ NoElements >
8 < E le me nt P os it io n > 0 ,0 ,0 0 ,0 ,0 </ El em en t Po si ti o n >
9 < ElevationGrid > -90 0 90 </ ElevationGrid >
10 < AzimuthGrid > -180 -90 0 90 180 </ AzimuthGrid >
11 < CouplingAbs >1 ,0 0 ,1 </ CouplingAbs >
12 < CouplingPhase >0 ,0 0 ,0 </ CouplingPhase >
13 < EthetaMag el = " 1 " >
14 0 0 0 0 0
15 0 0 0 0 0
16 0 0 0 0 0
17 </ EthetaMag >
18 < EthetaPhase el = " 1 " >
19 0 0 0 0 0
20 0 0 0 0 0
21 0 0 0 0 0
22 </ EthetaPhase >
23 < EphiMag el = " 2 " >
24 0 0 0 0 0
25 0 0 0 0 0
26 0 0 0 0 0
27 </ EphiMag >
28 < EphiPhase el = " 2 " >
29 0 0 0 0 0
30 0 0 0 0 0
31 0 0 0 0 0
32 </ EphiPhase >
33 </ arrayant >
34 </ qdant >

Copyright: Fraunhofer Heinrich Hertz Institute 75


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

qdant
Description The root element of a QDANT file. This element is required. It follows the XML declaration at
the beginning of the file. A basic <qdant> element contains 0 or 1 <layout> element and 1 or more
<arrayant> elements.

Attributes xmlns Namespace declaration (required). It is possible to use a prefix to avoid name
conflicts when embedding QuaDRiGa antennas in other XML formats. When
using a prefix in XML, a namespace for the prefix must be defined. The namespace
can be defined by an xmlns attribute in the start tag of an element (see example
below).
Elements layout A layout describes the organization of multiple array antennas into an object array
(optional). The containing integer numbers must match the id attributes of the
<arrayant> elements. If objects are arranged as a matrix, <layout> contains
column vectors where the elements are separated by a comma and the multiple
vectors are separated by space.
arrayant The definition of the array antenna (required).

Example using a prefix:


1 < qdant xmlns : qdant = " http :// www . quadriga - channel - model . de " >
2 < qdant : layout >1 ,2 1 ,2 2 ,1 </ qdant : layout >
3 < qdant : arrayant id = " 1 " >
4 <! - - Array antenna d e f i n i t i o n for object 1 in the layout -- >
5 </ qdant : arrayant >
6 < qdant : arrayant id = " 2 " >
7 <! - - Array antenna d e f i n i t i o n for object 2 in the layout -- >
8 </ qdant : arrayant >
9 </ qdant >

arrayant
Description This element describes a single array antenna.
Attributes id If multiple array antennas are stored in the same file, each antenna must be identi-
fied by an unique ID. Array antenna IDs are integer numbers. Each array antenna
ID must be present in the <layout>.
Elements name User defined text identifying the array antenna (optional).
CenterFrequency Center frequency in [Hz] for which the antenna patterns are defined (optional). If
this parameter is not given, a default value of 300 MHz is assumed. This leads to
the element positions being expressed as multiples of the wavelength.
NoElements Number of elements in an array antenna (required for multi-element antennas).
ElementPosition Position [x,y,z] of the elements in units of [meters] relative to the phase center of the
antenna (optional). The x-axis goes from west to east; the y-axis goes from south
to north; the z-axis goes from down to up. Position vectors of multiple elements
are separated by space. To set the ElementPosition for multiple elements, you
must define NoElements first.
ElevationGrid Sampling grid in [degrees] of the antenna patterns in elevation direction. Values
range from -90 (pointing down) to 90 (pointing up). The 0 degree value points to
the horizon. This XML-element is always required.
AzimuthGrid Sampling grid in [degrees] of the antenna patterns in azimuth direction. Values
range from -180 (pointing west) to 180 (also pointing west). The 0 degree value
points east. Counting is anti-clockwise. The 90 degree value points north, the -90
degree value points south. This XML-element is always required.
CouplingAbs Absolute values of the coupling matrix (optional). Column vectors are separated by
a space sign, entries within a column vector are separated by commas. CouplingAbs
cannot be defined without defining NoElements first.
CouplingPhase Phases of the coupling matrix in [degree] (optional). Column vectors are sepa-
rated by a space sign, entries within a columns vector are separated by commas.
CouplingPhase cannot be defined without defining CouplingAbs first.

Copyright: Fraunhofer Heinrich Hertz Institute 76


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

EthetaMag Magnitude in [dB] of the electric field aligned with the ê − θ vector of the spherical
coordinate system. One line contains all azimuth values for one elevation angle.
The order is given by AzimuthGrid and ElevationGrid. If NoElements is greater
than 1, an additional attribute <EthetaMag el="[no]"> must be provided. In the
first example, the first line contains the values for the -90 degree elevation angle
(down) and the last line contains the values for the 90 degree elevation (up). If
there is no field in θ-direction, this XML-element can be omitted.
EthetaPhase Phase in [degree] of the electric field aligned with the ê − θ vector. One line con-
tains all azimuth values for one elevation angle. The order is given by AzimuthGrid
and ElevationGrid. If NoElements is greater than 1, an additional attribute
<EthetaPhase el="[no]"> must be provided. EthetaPhase cannot be defined
without defining EthetaMag first. If all phases are 0, this XML-element can be
omitted.
EphiMag Magnitude in [dB] of the electric field aligned with the ê − φ vector of the spherical
coordinate system. One line contains all azimuth values for one elevation angle.
The order is given by AzimuthGrid and ElevationGrid. If NoElements is greater
than 1, an additional attribute <EphiMag el="[no]"> must be provided. If there
is no field in φ-direction, this XML-element can be omitted.
EphiPhase Phase in [degree] of the electric field aligned with the ê−φ vector. One line contains
all azimuth values for one elevation angle. The order is given by AzimuthGrid
and ElevationGrid. If NoElements is greater than 1, an additional attribute
<EphiPhase el="[no]"> must be provided. EphiPhase cannot be defined without
defining EphiMag first. If all phases are 0, this XML-element can be omitted.

2.6.2 QuaDRiGa Layout Exchange Format (KML)

QuaDRiGa layouts can be loaded from KML files. KML (short for Keyhole Markup Language) is a file
format used to store geographic data and visualize it in an Earth browser such as Google Earth. KML is an
international standard maintained by the Open Geospatial Consortium, Inc. (OGC). In order to use KML
to exchange QuaDRIGa layouts, the file must follow some specific formatting conventions which are detailed
in this section. Each KML layout can be displayed in Google Earth and it is possible to draw QuaDRiGa
layouts in Google Earth without knowledge of MATLAB or the QuaDRiGa API.

The following example provides a parameterization of QuaDRiGa using KML. There is one transmitter
(tx HHI), one mobile receiver (rx Car) and a scenario definition for the Rx (seg LOSonly). All of these are
defined by Placemark elements which will also be shown by Google Earth. Additional model parameters,
such as the center frequency, or the which antennas to use, are defined by ExtendedData elements. Those
will be shown by Google Earth, but not processed any further.
1 <? xml version ="1.0" e n c o d i n g =" UTF -8" ? >
2 < kml xmlns = " http :// www . opengis . net / kml /2.2 " >
3 < Document >
4 < name > test . kml </ name >
5 < Folder >
6 < name > Test Layout </ name >
7 < ExtendedData >
8 < Data name = " Ce nt er F re qu en c y " > < value > 2600000000 </ value > </ Data >
9 < Data name = " UpdateRate " > < value > 0.001 </ value > </ Data >
10 </ ExtendedData >
11 < Placemark >
12 < name > tx_HHI </ name >
13 < ExtendedData >
14 < Data name = " Antenna " > < value > antenna . qdant </ value > </ Data >
15 </ ExtendedData >
16 < Point >
17 < extrude >1 </ extrude > < altitudeMode > r e l a t i v e T o G r o u n d </ altitudeMode >
18 < coordinates > 13.3249472 ,52.5163194 ,65 </ coordinates >
19 </ Point >
20 </ Placemark >
21 < Placemark >
22 < name > rx_Car </ name >

Copyright: Fraunhofer Heinrich Hertz Institute 77


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

23 < ExtendedData >


24 < Data name = " Antenna " > < value > dipole . qdant </ value > </ Data >
25 < Data name = " Time " > < value > 10 </ value > </ Data >
26 </ ExtendedData >
27 < LineString >
28 < altitudeMode > r e l a t i v e T o G r o u n d </ altitudeMode >
29 < coordinates > 13.325849458441 ,52.5163194 ,1.5
13.326058636494 ,52.516192120779 ,1.5 </ coordinates >
30 </ LineString >
31 </ Placemark >
32 < Placemark >
33 < name > seg_LOSonly </ name >
34 < Point >
35 < altitudeMode > r e l a t i v e T o G r o u n d </ altitudeMode >
36 < coordinates > 13.325849458441 ,52.5163194 ,1.5 </ coordinates >
37 </ Point >
38 </ Placemark >
39 </ Folder >
40 </ Document >
41 </ kml >

kml
Description The root element of a KML file. This element is required. It follows the XML declaration at the
beginning of the file. The <kml> element may also include the namespace for any external XML
schemas that are referenced within the file, e.g. the antenna definitions.
Attributes xmlns Namespace declaration (required). It is possible to store the antenna patterns
within the KML file. In this case, a namespace for the antennas must be defined.
The namespace can be defined by an additional xmlns attribute in (see example
below).
Elements Document Container for additional elements (required).

Document
Description A Document is a container. It may contain the layout definition, embedded antenna patterns and
shared styles. Styles are not processed by QuaDRiGa, but are used to visualize data in Google Earth.
Elements name The name of the Document, usually the fila name. (optional)
ExtendedData Embedded antenna patterns. (optional)
Folder Container or the QuaDRiGa Layout. (required)

Example using embedded antenna patterns:


1 <? xml version ="1.0" e n c o d i n g =" UTF -8" ? >
2 < kml xmlns = " http :// www . opengis . net / kml /2.2 " xmlns : qdant = " http :// www . quadriga - channel - model . de " >
3 < Document >
4 < name > test . kml </ name >
5 < ExtendedData >
6 < qdant : layout >1 ,2 </ qdant : layout >
7 < qdant : arrayant id = " 1 " >
8 <! - - Array antenna d e f i n i t i o n for object 1 in the layout -- >
9 </ qdant : arrayant >
10 < qdant : arrayant id = " 2 " >
11 <! - - Array antenna d e f i n i t i o n for object 2 in the layout -- >
12 </ qdant : arrayant >
13 </ ExtendedData >
14 < Folder >
15 <! - - Layout d e f i n i t i o n -- >
16 </ Folder >
17 </ Document >
18 </ kml >

Copyright: Fraunhofer Heinrich Hertz Institute 78


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

Folder
Description A Folder is used to arrange other features hierarchically (Folders, Placemarks, etc.). For QuaDRiGa,
the KML file may contain a single folder in which the QuaDRiGa layout is defined.
Elements name The name of the Folder (optional). This name will be used as the layout name
when loading the KML file in QuaDRiGa. If no name is specified, ”Layout” will
be used as default name name.
ExtendedData List of simulation settings. (optional, recommended)
Placemark Location information for transmitters, receivers or segments. (required)

Placemark
Description A Placemark is a Feature with associated Geometry. It can either define a point or a track (LineString),
i.e. a list of consecutive points. In Google Earth, a Placemark appears as a list item in the Places
panel. A Placemark with a Point has an icon associated with it that marks a point on the Earth in the
3D viewer. In QuaDRiGa, Placemark elements define the positions of transmitters, receivers and the
start-points of segments along a track.
Usage Transmitter If a Placemark defines a transmitter in QuaDRiGa, the Placemark name must start
with ”tx ” followed by the transmitter name (the underscore ” ” character is not
allowed in the name). When loaded by QuaDRiGa, the transmitter name will be
assigned to the list of transmitters without the ”tx ” in the name. All transmitters
in a layout must have unique names. Using the same transmitter name more than
once will lead to an error. Transmitters can be either static (using a Point element)
or mobile (using a LineString element). There must be at least one transmitter in
the layout. Transmitters are processed in the order they are defined in the KML
file.
Receiver If a Placemark defines a receiver in QuaDRiGa, the Placemark name must start
with ”rx ” followed by the receiver name. All receivers in a layout must have
unique names. Receivers can be either static (using a Point element) or mobile
(using a LineString element). There must be at least one receiver in the layout.
Receivers are processed in the order they are defined in the KML file.
Segment Segments assign propagation conditions to a radio link. Segment Placemarks are
only allowed to contain a Point element. They must be placed close to a receiver
Placemark and there must be at least one segment for each receiver in the Layout.
If the receiver contains a track (LineString), multiple segments can be defined for
a receiver. In this case, the closest position (projection) on the track is used as
segment start point. If a Placemark defines a segment, the Placemark name must
start with ”seg ” followed by a list of scenario names, one for each transmitter. The
scenario names equal the filename of configuration files in the config folder of the
QuaDRiGa installation (without the ”.conf” ending), e.g. ”seg 3GPP 3D UMa LOS”
would assign the urban-macrocell scenario to a segment. Scenarios for multiple
transmitters are separated by a ”:”, e.g. ”seg 3GPP 3D UMa LOS:Freespace”. The
order of segment Placemarks in the KML file is irrelevant, only the proximity to
actual receiver positions counts. However, the order of the transmitters in the
KML file defines in which order the scenario names must be given.
Elements name The name of the Placemark (required). In QuaDRiGa, the Placemark name defines
if the Placemark is for a transmitter, a receiver or a segment. It also defines the
subsequent name of the transmitters and receivers and it associates segments with
propagation conditions.
ExtendedData Additional attributes such as orientation and antennas. (optional)
Point A geographic location defined by longitude, latitude, and altitude.
LineString A connected set of line segments defining a track.

Copyright: Fraunhofer Heinrich Hertz Institute 79


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

Point
Description A geographic location defined by longitude, latitude, and altitude. When a Point is contained by a
Placemark, the point itself determines the position of the Placemark’s name and icon in Google Earth.
In QuaDRiGa, Points are used to define static transmitters, static receivers or segment start points.
Elements extrude Boolean value. Specifies whether to connect the point to the ground with a line in
Google Earth. This element is ignored by QuaDRiGa. (optional)
altitudeMode Specifies how altitude components in the <coordinates> element are interpreted
(optional). clampToGround ignores the altitude specification in Google Earth,
but sets the altitude of the element relative to the actual ground elevation in
QuaDRiGa. relativeToGround (default in QuaDRiGa) sets the altitude of the
element relative to the actual ground elevation of a particular location. absolute
sets the altitude of the coordinate relative to sea level, regardless of the actual
elevation of the terrain beneath the element.
coordinates A single tuple consisting of floating point values for longitude, latitude, and altitude
(in that order). (required). Longitude and latitude values are in degrees, where
longitude ≥ -180 and ≤ 180, latitude ≥ -90 and ≤ 90, and altitude values are in
meters. Do not include spaces between the three values that describe a coordinate.

LineString
Description Defines a connected set of line segments. In QuaDRiGa, LineStrings are used to define mobile trans-
mitters or receivers. A LineString must contain a minimum number of two coordinates.
Elements extrude When a LineString is extruded, the line is extended to the ground, forming a
polygon that looks somewhat like a wall or fence in Google Earth. This element
is ignore by QuaDRiGa. (optional)
altitudeMode Specifies how altitude components in the <coordinates> element are interpreted
(optional). clampToGround ignores the altitude specification in Google Earth,
but sets the altitude of the element relative to the actual ground elevation in
QuaDRiGa. relativeToGround (default in QuaDRiGa) sets the altitude of the
element relative to the actual ground elevation of a particular location. absolute
sets the altitude of the coordinate relative to sea level, regardless of the actual
elevation of the terrain beneath the element.
coordinates Two or more coordinate tuples, each consisting of floating point values for lon-
gitude, latitude, and altitude (required). Longitude and latitude values are in
degrees, where longitude ≥ -180 and ≤ 180, latitude ≥ -90 and ≤ 90, and altitude
values are in meters. Insert a space between tuples. Do not include spaces within
a tuple.

ExtendedData
Description The ExtendedData element offers techniques for adding custom data to a KML Feature (Placemark,
Document, Folder, etc.). This is used to assign configuration parameters to QuaDRiGa that are not
processed by Google Earth. This can be used in three ways:
• Embed antenna patterns
(by adding an ExtendedData element to the Document element)
• Assign QuaDRiGa simulation parameters
(by adding an ExtendedData element to the Folder element)
• Provide additional setting for transmitters, receivers and segments
(by adding an ExtendedData element to the Placemark element)
Antenna patterns are embedded by referring to QDANT elements defined in another namespaces and
by referencing the external namespace within the KML file (see example above). Simulation parameters
and additional setting for transmitters and receivers are given as untyped data/value pairs using the
Data element, e.g. ”<Data name="CenterFrequency"><value>2600000000</value></Data>”. A list of
allowed settings and their meaning is given below.
Sim. settings CenterFrequency Center frequency in units of [Hz] (floating point value). For multi-frequency sim-
ulations, multiple frequency values may be given separated by commas.

Copyright: Fraunhofer Heinrich Hertz Institute 80


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

UpdateRate The update rate of the channel coefficients in units of seconds (floating point
value). For example, a value of 0.01 means that channel coefficients are generated
every 10 milliseconds. If the parameter is given, each track (i.e. Placemark with
LineString element) must contain the Time parameter which specifies how long
the it takes for the Tx/Rx to traverse the track. If UpdateRate is not given, channel
coefficients are generated at the exact coordinates specified in the LineString or
Point elements of the KML file.
SampleDensity The sampling density describes the number of samples per half-wave length (float-
ing point value) for the highest center frequency. This parameter is only useful if
UpdateRate is given as well. Channels are generated at the given SampleDensity
and then interpolated to match the requested UpdateRate. The minimum sample
density must be 1 for static transmitters and 2 for mobile transmitters. Smaller
values may be given, but the Doppler characteristics of the channel will be incor-
rect. The default value is 2.5.
AbsoluteDelays Boolean value. By default (0), path delays are calculated such that the LOS delay
is normalized to 0 seconds. By setting AbsoluteDelays to 1, the absolute path
delays are included at the output of the model.
RandInitPhase Boolean value. By default (1), each path is initialized with a random phase (except
the LOS path and the optional ground reflection). Setting RandInitPhase to 0
disables this function. In this case, each path gets initialized with a zero-phase.
Baseline3GPP Boolean value. This enables (1) or disables (0) the 3GPP baseline model. By
default (0), the 3GPP baseline model is disabled and enhanced QuaDRiGa fea-
tures are used. This option uses spherical waves at both ends, the transmitter and
the receiver. This method uses a multi-bounce model where the departure and
arrival angles are matched such that the angular spreads stay consistent. Setting
Baseline3GPP to 1 enables the 3GPP baseline model and shortens the compu-
tation time significantly (good for testing purposes and 3GPP compliant simula-
tions). However, the large-scale parameters (departure and arrival angles, shadow
fading, delays, etc.) are not updated in this case, phases at the array antennas
are calculated by a planar wave approximation, spatial consistency is not avail-
able, multi-frequency simulations are not supported, and no polarization rotation
is calculated. This may lead to incorrect results for longer tracks.
ProgressReport Boolean value. By default (1), a progress report is generated and printed to the
command line. Setting ProgressReport to 0 will disable this function.
AutoCorrFcn String. The autocorrelation function for generating correlated model parameters.
An autocorrelation function (ACF) is a description of the correlation vs. distance.
This function is approximated by a Fourier series. The coefficients of the series
are used to generate spatially correlated random variables. There are 3 ACF types
that can be selected. The coefficients are precomputed for 150, 300, 500, and 1000
sinusoids. The default is Comb300.
• Exponential ACF (Exp150, Exp300, Exp500, Exp1000 )
• Gaussian ACF (Gauss150, Gauss300, Gauss500, Gauss1000 )
• Combined Gaussian and Exponential ACF (Comb150, Comb300, Comb500,
Comb1000)

Pairing A list of tuples describing the TX-RX links for which channels are created (unsigned
integer values, starting at 1). The first value corresponds to the transmitter and
the second value to the receiver in the order they are defined in the KML file.
Insert a space between tuples. Do not include spaces within a tuple.
SplitSegments This parameter controls the splitting of long segments into sub-segments with the
same scenario definition. Radio parameters within a segment are considered static.
Hence, when segments are too long (i.e. longer than 20 meters in typical setups),
the radio channel gets unrealistic. Segment splitting fixes this. SplitSegments is
a tuple of 4 values (floating point numbers) defining:
1. min. length of a sub-segment (e.g. 10 m)
2. max. length of the sub-segment; must be > 2·min. (e.g. 30 m)
3. average length of the sub-segment (e.g. 15 m)
4. standard-deviation of a sub-segment (e.g. 5 m)
If SplitSegments is not defined, segment splitting is disabled.

Copyright: Fraunhofer Heinrich Hertz Institute 81


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

ReferenceCoord A single tuple consisting of floating point values for longitude and latitude at which
the origin (0,0,0) of the metric Cartesian coordinate system used by QuaDRiGa
is placed. If this value not provided, the origin is placed in the middle of all
coordinate tuples given in the KML file.
Tx/Rx settings Antenna The antenna patterns to be used for the simulation (string). If the antennas are
stored in an external QDANT file, place the filename here. If there are multiple
antennas stored in the file, indicate which antenna to use by a colon followed by
the antenna number, e.g. ”antennas.qdant:2”. The number must match the
ID in the <arrayant> element. For multi-frequency simulations, each frequency
band might use a different antenna. Those need to be separated by a comma,
e.g. ”ant2GHz.qdant:1,ant10GHz.qdant:2”. If the antennas are embedded in the
KML file, simply indicate the antenna by a colon followed by the antenna ID,
e.g. ”:1,:3”. If no antenna is provided, an omni-directional antenna with vertical
polarization is used by default.
Time The time in seconds needed to traverse a track or LineString (floating point num-
ber). This value is required for each track when an UpdateRate is given in the
simulation parameters. If both Tx and Rx are mobile, the corresponding tracks
must have the same Time value. It is also possible to simulate variable speeds of
a terminal. in this case, you can provide a list of time points starting with 0,
e.g. ”0,5,10”, and the corresponding positions on the track using the Distance
parameter.
Distance List of distance values of a terminal relative to the beginning of a track in [meters]
(floating point numbers). This parameter is only used in conjunction with the Time
parameter. It needs to have the same number of elements, for example ”0,1,10”.
The largest value cannot exceed the length of the track.
Bank The ”bank angle” in [degrees], i.e., the orientation around an axis drawn through
the body of the vehicle from tail to nose in the normal direction of movement
(floating point numbers). Positive rotation is clockwise (seen from the pilot/drivers
perspective). Bank can be a single value or a list of values having the same number
of elements as there are coordinates in a LineString. If Bank is not provided, the
default value of 0 degrees is used.
Tilt The ”tilt angle” in [degrees], i.e. the vertical (tilt) angle relative to the horizontal
plane (floating point number). Positive values point upwards. Tilt can be a
single value or a list of values having the same number of elements as there are
coordinates in a LineString. If Tilt is not provided, the angle is calculated from
consecutive coordinates in the LineString. For static terminals, the default value
of 0 degrees is used.
Heading The bearing or ”heading angle”, in mathematic sense (degrees, floating point num-
ber). Heading is used to describe the direction an object is pointing. In contrast,
the course angle refers to the direction an object is actually moving. East corre-
sponds to 0 degrees, and the angles increase counter-clockwise, so north is at 90
degree degrees, south is -90 degrees, and west is at 180 degrees. Heading can be
a single value or a list of values having the same number of elements as there are
coordinates in a LineString. If Heading is not provided, the angle is calculated
from consecutive coordinates in the LineString. For static terminals, the default
value of 0 degrees (pointing east) is used.
Segment settings Track Name of the associated track (optional ), e.g., ”rx Rx0001”.
Index The snapshot index of the Rx-track to which the segment should be assigned
(optional ). Providing the snapshot index and track name disables the proximity
projection and assigns the segment directly to the Rx track.
Elements Data Untyped name/value pair. The name attribute is used to identify the data pair
within the KML file. Each <Data> element must contain a <value> element that
contains the actual data.

Copyright: Fraunhofer Heinrich Hertz Institute 82


eMail: [email protected]
QuaDRiGa v2.2.0 2 SOFTWARE STRUCTURE

description
Description User-supplied content in a KML file. Google Earth does not allow to edit <ExtendedData> elements.
An alternative method to configure QuaDRiGa simulation parameters and additional setting for trans-
mitters and receivers is to write them to the <description> field. This can be used in two ways:
• Assign QuaDRiGa simulation parameters
(by adding an description element to the Folder element)
• Provide additional setting for transmitters and receivers
(by adding an description element to the Placemark element)
Antenna patterns cannot be embedded this way and need to be provided in an external file. Simulation
parameters and additional setting for transmitters and receivers are given as data/value pairs separated
by an equal ”=” sign, e.g. ”CenterFrequency = 2600000000”. Multiple parameters must be separated
by a new line. A list of allowed settings and their meaning is in the description of the ExtendedData
element. If ExtendedData and description elements are present in the same Folder or Placemark,
values provided by description have preference.

Example using the description element to set QuaDRiGa parameters:


1 <? xml version ="1.0" e n c o d i n g =" UTF -8" ? >
2 < kml xmlns = " http :// www . opengis . net / kml /2.2 " >
3 < Document > < name > test . kml </ name >
4 < Folder >
5 < name > Test Layout </ name >
6 < description > Ce nt er F re qu e nc y = 3500000000
7 SampleDensity = 2.5 </ description >
8 < ExtendedData >
9 < Data name = " Ce nt er F re qu en c y " > < value > 2600000000 </ value > </ Data >
10 < Data name = " UpdateRate " > < value > 0.001 </ value > </ Data >
11 </ ExtendedData >
12 <! - - A d d i t i o n a l P l a c e m a r k s -- >
13 </ Folder >
14 </ Document >
15 </ kml >

This would set the center frequency to 3.5 GHz, the sample density to 2.5, and the channel update rate to 1 ms.

Copyright: Fraunhofer Heinrich Hertz Institute 83


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

3 Technical Documentation

The QuaDRiGa channel model has two main objectives:

1. Provide an open-source reference implementation of the baseline 3GPP channel models


2. Implement modeling concepts and ideas that go beyond 3GPP to support the more realistic channel
simulations

The first objective covers the baseline parts of the 3GPP-3D model [9] and the 3GPP-NR model [10], but not
the optional features. These baseline models have been calibrated and the results are presented in chapter
5 of the documentation. The specific approach to achieve the second objective is laid out in this chapter.
Some of the optional 3GPP features (such as multi-frequency simulations and spatial consistency) have been
implemented with modifications as part of this approach. Hence, 3GPP compliance cannot be guaranteed.

Geometry-based stochastic channel models (GSCMs) such as the 3GPP-SCM [22], the WINNER model [4],
the European Cooperation in Science and Technology (COST) model [23] and the 3GPP-3D channel model
[24] are important tools to validate new concepts in mobile communication systems. Early models such as the
3GPP-SCM [22], its extensions [25, 26], and the WINNER model [4] are based on a two-dimensional (2-D)
modeling approach. However, Shafi et al. [27] pointed out the importance of a three-dimensional (3-D)
extension when studying the effects of cross-polarized antennas on the MIMO capacity. This was taken up
in the WINNER+ project where the parameter tables were completed with the elevation component [6].
3-D propagation was also incorporated into other models such as the COST model [28] or mobile-to-mobile
propagation models [29]. These later models share similar ideas which are incorporated into the new model
outlined in this chapter.

A second aspect of major importance for various propagation environments is polarization. Multiple po-
larizations can be exploited to increase the number of spatial degrees of freedom especially when using
compact antennas with a limited amount of elements [30, 31]. First attempts to include polarization effects
into the SCM were made by Shafi et al. [27] who extended the simple 2-D antenna pattern of the SCM to
a dual-polarized 3-D pattern. This method was then also adopted for the WINNER model [32]. However,
Shafi et al.’s approach did not include a geometry-based method to calculate the cross-polarization effects.
Instead, the XPR was incorporated statistically where the parameters were derived from measurements.
This statistical approach leads to correct results for the cross-polarization discrimination (XPD)3 in case of
a well-balanced statistical mixture between LOS and NLOS scenarios in an indoor environment. However,
the distribution of singular values, which is a better metric for characterizing the multi-stream capabilities
of MIMO channels, was not considered. Zhou et al. [34] already indicated that it might be preferable to
model the channel XPR by a rotation matrix. Later on, Quitin et al. [35] introduced an analytical chan-
nel model that correctly takes the antenna orientation into account. However, this method is limited to
azimuthal propagation only (i.e., no elevation angles are supported) and it does not support arbitrary an-
tenna characteristics. It is discussed later in this chapter that the WINNER approach, which was adopted
by all succeeding models, has great similarities with the Jones calculus, a method for handling polarized
electromagnetic waves in the field of optics [36]. A new method to incorporate the polarization effects based
on the Jones calculus is proposed in Section 3.5.

Another prerequisite for virtual field trials is the continuous time evolution of channel traces. Xiao et al.
[25] added short-term time evolution to the SCM which was afterwards incorporated into an official SCM
extension [26]. The idea is to calculate the position of the last-bounce scatterers (LBSs) based on the arrival
angles of individual multipath components. Then, when the MT is moving, the arrival angles, delays and
phases are updated using geometrical calculations. However, the WINNER-II model did not incorporate
this technique and so did not the ITU, WINNER+, and 3GPP-3D model. Hence, all those models do
not support time evolution beyond the scope of a few milliseconds which restricts the mobility of the MTs
3
Following the definition in [33], the term cross polarization ratio (XPR) is used for the polarization effects in the channel.
Combining the XPR with imperfect antennas yields the cross-polarization discrimination (XPD).

Copyright: Fraunhofer Heinrich Hertz Institute 84


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

to a few meters. The COST model [23] incorporates time evolution by introducing groups of randomly
placed scattering clusters that fade in and out depending on the MT position. However, despite the effort
that was made to parameterize the model [37, 38], it still lacks sufficient parameters in many interesting
scenarios. Czink et al. [39] introduced a simplified method that fades the clusters in and out over time. The
cluster parameters were extracted from measurements, and the model is well suited for link-level simulations.
However, this random cluster model cannot be used for system-level scenarios because it does not include
geometry-based deployments. Nevertheless, the ideas presented by [39] led to more research on the birth
and death probability as well as the lifetime of individual scattering clusters [40]. Wang et al. [41] then
proposed a model for non-stationary channels that allows the scattering clusters to be mobile.

This chapter describes an extension of the WINNER model [4] where time evolution, geometric polarization
and 3-D propagation effects such as spherical waved are incorporated. A reference implementation in
MATLAB/Octave is available as open source [42]. The modeling approach consists of two steps: a stochastic
part generates so-called large-scale parameters (LSPs) (e.g., the delay and angular spreads) and calculates
random 3-D positions of scattering clusters. Both ends of the communication link can be mobile, i.e. moving
base stations (BSs) and mobile terminals (MTs) are supported. Scattering clusters are fixed and the time
evolution of the radio channel is deterministic. Different positions of the MT lead to different arrival angles,
delays and phases for each multipath component (MPC). Longer sequences are generated by transitions
between channel traces from consecutive initializations of the model. This allows the MTs to traverse
different scenarios, e.g., when moving from indoors to outdoors.

Figure 6 gives an overview of the modeling steps. The network layout (i.e., the positions of the BSs, antenna
configurations and downtilts), the positions and trajectories of the MTs, and the propagation scenarios need
to be given as input variables. The channel coefficients are then calculated in seven steps which are described
in detail in Sections 3.1 to 3.8 of this chapter. A quick summary of the procedure for generating the channel
coefficients is given in the following list.

Input variables: A. Calculation of B. Calculation of C. Calculation of path


- network layout correlated large scale initial delays and powers (for multiple
- terminal trajectories parameters path angles frequencies)
- propagation scenario
- antenna patterns

F. Calculation of E. Drifting of delays, D. Application of the


polarized channel angles, and phases K-factor, delay spread
coefficients over a short segment and angular spreads

G. Application of Postprocessing and


H. Transitions
path gain, shadow Analysis
between segments
fading and K-factor

Figure 6: Steps for the calculation of time-evolving channel coefficients

A. Calculation of correlated large scale parameters


The first step ensures that the LSPs are consistent. As the name implies, these parameters (delay and
angular spreads, K-factor and shadow fading) do not change rapidly. Closely spaced MTs will thus
experience similar propagation effects.

B. Calculation of initial path delays and angles


Once the LSPs are known, the spatially-correlated fast-fading channels are calculated for each MT
separately. This step takes the specific values of the delay spread and the four angular spreads from
step A and translates them into a set of multipath components, each having a specific delay and a

Copyright: Fraunhofer Heinrich Hertz Institute 85


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

departure direction at the transmitter (TX) and an arrival direction at the receiver (RX). It is assumed
here, that the propagation path always consists of multiple scatterers and there is no geometric relation
between delays and angles.

C. Calculation of the path powers


Each MPC gets assigned specific power values for one or more carrier frequencies. The delay and
angular values from step B remain unchanged during that process.

D. Application of the K-factor, delay spread and angular spreads


The initial path delays, angles and powers from steps B and C are updated to accurately reflect the
KF, DS and angular spreads (ASs). As a result, it is possible to calculate these statistical measures
of the channel from the channel coefficients.

E. Drifting of delays, angles, and phases over a short segment


This step incorporates mobility and spherical waves at both ends of the communication link. Given
the angles and delays (i.e., the output of step D), it is possible to calculate the exact position of the
first-bounce scatterer (FBS) and the last-bounce scatterer (LBS), i.e., the first and last reflection of
a MPC. Then, when the MTs move to a different location, the scatterer positions of all MPCs are
kept fixed and the delays and directions are updated. This also leads to an update of the phases of
the MPCs which reflect the correct Doppler shift when the MT is moving because the length of a
propagation path changes in a deterministic manner.

F. Calculation of polarized channel coefficients


This step takes care of the antenna and polarization effects. The antennas are described by their 3-D
far field radiation patterns in a polar-spheric representation [43]. However, those patterns are given in
an antenna-specific local coordinate system. Thus, this step includes a method to rotate the antennas
to match the MT and BS orientations defined in the global coordinate system (GCS) at the input of
the model. Then, additional changes in the polarization might occur during scattering of a MPC. The
resulting effects are handled by a method inspired by the Jones calculus [36] where successive linear
transformations are used to calculate the polarization state of a MPC.

G. Application of path gain, shadow fading and K-Factor


In this step, the remaining LSPs from step A, i.e., the distance-dependent path gain and the shadow
fading, are applied to the channel coefficients. When the MT position changes during drifting in step
E, the Ricean K-factor at the new location might be different. This is taken into account here as well.

H. Transitions between segments


Longer sequences of channel coefficients need to consider the birth and death of scattering clusters
as well as transitions between different propagation environments. This is addressed by splitting the
MTs trajectories into segments. A segment can be seen as an interval in which the LSPs do not change
considerably and where the channel maintains its wide sense stationary (WSS) properties. Channel
traces are then generated independently for each segment (i.e., steps B-G). Those individual traces
are combined into a longer sequence in the last step.

Time evolution requires a more detailed description of the mobility of the terminals compared to previous
models. This is done by assigning tracks, i.e., ordered lists of positions, to each MT. In reality, this
may include accelerations, decelerations, and MTs with different speeds, e.g., pedestrian and vehicular
users. However, to minimize the computational overhead and memory requirements, channel coefficients are
calculated at a constant sample rate that fulfills the sampling theorem

max |v|
fT ≥ 2 · B D = 4 · max |∆fD | = 4 · , (3)
λc
where BD is the width of the Doppler spectrum, ∆fD is the maximum frequency change due to the velocity
v, and λc is the carrier wavelength. Thus, the appropriate sampling rate is proportional to the maximum

Copyright: Fraunhofer Heinrich Hertz Institute 86


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

speed of the MT. Since it is sometimes useful to examine algorithms at different speeds, it is undesirable
to fix the sampling rate in advance as the speed is then fixed as well. To overcome this problem, channel
coefficients are calculated at fixed positions with a sampling rate fS measured in samples per meter. In its
normalized form, it is known as sample density (SD). A time-series for arbitrary or varying speeds is then
obtained by interpolating the coefficients in a post processing step.
fT 4
fS = ≥ (4)
max |v| λc
fS
SD = ≥2 (5)
λc /2

3.1 Spatially Consistent Channel Parameters

GSCMs consist of two main components: a stochastic part that generates a random propagation environ-
ment, and a deterministic part that lets transmitters and receivers interact with this environment. In order
to make realistic predictions of the wireless system performance, the random environment must fulfill certain
statistical properties which are determined by measurements. These properties are captured by the so-called
LSF model. A subsequent SSF model then generates individual scattering clusters for each MT. The joint
spatial correlation of the model parameters as well as the correlated positions of the scattering clusters re-
sult in similarities in the communication channels of closely spaced MTs, i.e., two co-located terminals must
observe the same channel. Since the MT positions are given in 3-D Cartesian coordinates, all stochastic
processes that determine the propagation environment need to be defined for 3-D coordinates as well. Many
existing one-dimensional (1-D) correlations models (e.g., [44], [45]), which are either a function of time or
distance, must be extended to 3-D coordinates in order to be useful for GSCMs.

LSPs are more or less constant within an area of several meters. An example for this is the shadow
fading (SF) which is caused by buildings or trees blocking a significant part of the signal. The so-called
decorrelation distance of the SF, i.e., the distance a MT must move to experience a significant change in
the SF, is in the same order of magnitude as the size of the objects causing it. Thus, if a MT travels along
a trajectory or if multiple MTs are closely spaced together, their LSPs are correlated. A common approach
to model such correlation is by filtered Gaussian-distributed random numbers [46]. However, when it comes
to spatial consistency, the positions of the scattering clusters must also be spatially correlated. The 3GPP
proposal suggests that “spatially consistent powers/delays/angles of clusters are generated” [10]. However,
this requires that all stochastic processes that determine the location of the scattering clusters are correlated.
For a moderate scenario with 12 clusters and 20 sub-paths per cluster, this results in 2288 random variables4 .
Compared to the 7 variables needed for the LSF model, the filtering approach therefore requires prohibitively
large amounts of memory and computing time.

Another problem arises when incorporating so-called vertical industries into the fifth generation (5G) infras-
tructure which is not yet covered by the 3GPP new-radio model but discussed in several ongoing research
projects and standardization activities. Such verticals could be vehicular networks, air-to-ground commu-
nications, industrial peer-to-peer (P2P) communications, or communication scenarios involving satellites in
low-earth orbit. All of these examples have in common that both ends of the link are mobile. However, the
simultaneous mobility of both communication partners is not supported by the classical cellular shadowing
models. Therefore, an alternative method for the generation of the random propagation environment is
needed [47].

A computational efficient method to generate correlated stochastic processes has been introduced by Pätzold
el. al. [48] who approximated the filtered white Gaussian noise process by a finite sum of properly weighted

4
In the 3GPP new-radio model, scattering is based on the LOS / NLOS state (1 variable); LSPs (7 variables: delay spread,
shadow fading, 4 angular spreads, K-factor); delays, powers, per-cluster angles (10 · 12 variables); random coupling of
sub-paths (4 · 12 · 20 variables); Cross polarization power ratios (12 · 20 variables); Initial random phases (4 · 12 · 20 variables)

Copyright: Fraunhofer Heinrich Hertz Institute 87


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

sinusoids. This idea was further developed into a 2-D shadowing model [11]. Wang et. al. then extended
this 2-D method into a four-dimensional (4-D) method for device-to-device (D2D) channels [49]. A common
problem for all these methods is finding the coefficients that best approximate a desired autocorrelation
function (ACF) with a limited number of sinusoids.

In this section, a new approximation method is presented that allows the efficient calculation of the sinusoid
coefficients for an arbitrary ACF in 3-D space5 . It is shown how this translates directly into a six-dimensional
stochastic process for D2D channels where both ends can be in different propagation environments, such as
in air-to-ground channels.

3.1.1 The Sum of Sinusoids Model

A spatially correlated Gaussian stochastic process generates normal distributed random numbers

k(x, y, z) ∼ N (0, 1), (6)

with zero mean and unit variance. The value k is a function of the terminal location in 3-D Cartesian
coordinates (x, y, z). From these numbers, other types of distributions can be obtained, e.g., uniform or
log-normal distribution with a different mean or variance. The 1-D spatial autocorrelation function (ACF)
describes how fast the local mean of k(x, y, z) evolves as a terminal moves. The ACF is usually modeled as
an exponential decay function  
d
ρ(d) = exp − , (7)

with d as the distance between two positions and dλ as the so-called decorrelation distance, i.e., the distance
at which the correlation between two samples falls below e−1 ≈ 0.37 [44]. However, other types of decay
functions may be desirable. The sum-of-sinusoids (SOS) method outlined in [48] approximates an 1-D
Gaussian stochastic process k(x) as a function of the position x on an 1-D linear trajectory as
N
X
k̂(x) = an cos {2πfn x + ψn } (8)
n=1

with N sinusoids. The variables an , fn , and ψn denote the amplitude, the frequency, and the phase of
a sinusoid, respectively. The amplitudes an and the frequencies fn are determined in a way that k̂(x)
has similar statistical properties as k(x), i.e., k̂(x) has the same approximate ACF and the cumulative
distribution function (CDF) is close to Gaussian density if N is sufficiently large. According to [48], 6 to
30 sinusoids are sufficient for an 1-D approximation. The phases ψn are randomly initialized in the range
from −π to π. Hence, exchanging the ψn while keeping an and fn fixed creates a new spatially correlated
stochastic process at minimal computational cost. A straight-forward expansion to a 3-D Gaussian stochastic
process follows from [49] as
N
X
k̂(x, y, z) = an cos {2π (fx,n x + fy,n y + fz,n z) + ψn } . (9)
n=1

Under the assumption that the fluctuations of k(x, y, z) are wide sense stationary, the ACF only depends
on the distance between two terminal positions. Hence, the 3-D spatial ACF of k̂(x, y, z) can be expressed
as [49]
N
X a2n
ρ̂(∆x, ∆y, ∆z) = cos {2π (fx,n ∆x + fy,n ∆y + fz,n ∆z)} . (10)
2
n=1

When a MT moves from one location to another, the correlation ρ(∆x, ∆y, ∆z) between the generated
values k(x, y, z) depends not only on the distance, but also on the direction of movement. In 3-D space,
5
An extended version including a performance analysis was published in [12]

Copyright: Fraunhofer Heinrich Hertz Institute 88


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

the traveling direction can be expressed by pitch and yaw. The pitch angle θ describes the vertical (tilt)
angle relative to the horizontal plane. Positive rotation is up. The bearing or yaw angle φ describes the
orientation on the ground. Here, it is defined in mathematic sense, i.e., seen from above, a value of 0 points
to the east and the angles increase counter-clockwise. In order to extend the existing 1-D approximations
methods (e.g., the Lp -norm method used in [45]) to 3 dimensions, we propose to assign a random direction
(θn , φn ) to each of the N sinusoids. There is no direct relationship between the direction (θ, φ) in which
the MT moves and the directions (θn , φn ) of the sinusoids. However, the sinusoid directions have to be
chosen such that all possible movement directions of the MT are sufficiently covered, e.g., by generating
equidistributed points on the surface of a sphere as described in [50]. The resulting 3-D approximation of
the Gaussian stochastic process (9) is then independent of the MT movement direction.

The directivity of the sinusoid frequencies is expressed as


fx,n ∆x = fn · d · cos φn · cos θn , (11)
fy,n ∆y = fn · d · sin φn · cos θn , (12)
fz,n ∆z = fn · d · sin θn , (13)
where fn is the n-th root-frequency and d is the distance. Pätzold et. al. [48] proposed four methods to
determine the amplitudes an and frequencies fn in a SOS model. All of them show different performance
in terms of average squared error (ASE) vs. the number of sinusoids, and computational complexity. They
have in common that the approximated ACF is an exponential decay function (7). However, this is not
always desirable since other types of decay functions might be needed. Hence, in the next section, a numeric
approximation method is presented that calculates the sinusoid coefficients for arbitrary ACFs.

3.1.2 3-D Approximation of Arbitrary ACFs

The approximation method is derived from the Monte Carlo method [48, 51]. The sinusoid frequencies fn
are generated by an iterative optimization method that minimizes the error between the desired ACF and
the approximate ACF for a given number of sinusoids. This method requires that the ACF is discretely
sampled at s = 1 . . . S sampling distances. This is done by defining a vector d that contains the sampling
distances in increasing order.
T
d = d1 d2 . . . dS (14)
Then, the sampled ACF ρ(d) is obtained. The first distance value d1 must be 0 and the first correlation
value ρ1 must be 1, i.e., at zero-distance the generated values k̂(x, y, z) are identical. The N root-frequencies
are randomly initialized to
1
fn ∼ · U(−π, π), (15)
dS
where U(−π, π) describes an uniform distribution with values between −π and π, and dS the maximum
distance for which the ACF is defined. The directional components fx,n , fy,n , and fz,n are calculated
according to (11), (12), and (13) with d = ∆x = ∆y = ∆z = 1, respectively.

The iterative optimization is done by updating the n-th root frequency while keeping all other N − 1
frequencies fixed. Then, the ASE is calculated for the overall 3-D space. Cai and Giannakis [11] introduced
the ASE as a performance measure of the approximation. It is defined as the average squared error between
the desired ACF ρ(d) and the approximate ACF ρ̂(∆x, ∆y, ∆z). Here it is calculated as
T S
( N  )2
1 XX 1 X 2π
ASE = ρ(ds ) − cos ft,n ds . (16)
ST N dS
t=1 s=1 n=1
Since the approximate ACF depends on the direction, the ASE calculation must take the directivity into
account. Hence, the evaluation is done for t = 1 . . . T randomly chosen test directions (θt , φt ). The corre-
sponding test frequencies ft,n are
ft,n = (fx,n cos φt + fy,n sin φt ) cos θt + fz,n sin θt . (17)

Copyright: Fraunhofer Heinrich Hertz Institute 89


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

The ASE is used as a cost function for the iterative refinement of the sinusoid frequencies. If the ASE
improves for a newly estimated root-frequency, the three sinusoid frequencies are replaced by the newly
estimated ones, otherwise the new values are discarded. The iteration stops when no further improvement
can be achieved for any of the N sinusoid components.

A new root-frequency is obtained by solving


S   2
1 X 1 2π
fn = arg min ρ(ds ) − ρ̂(ds ) − cos f ds , (18)
dS f N dS
s=1

where ρ(ds ) is the desired ACF and ρ̂(ds ) is the approximate ACF constructed from all N − 1 components
from the previous iteration. The amplitudes of all sinusoids are set to a2n = N2 and standard numerical
methods can be applied to find the values f . However, (18) can only be used to approximate an 1-D
stochastic process such as (8). For a 3-D stochastic process (9) it is necessary to obtain the three sinusoid
components fx,n , fy,n , and fz,n . This can be done by performing the estimation along one of the three axes
of the coordinate system. The estimation direction (i.e., the coordinate system axis) is chosen according to

 ρ̂(∆x), for ∆x ≥ ∆y and ∆x ≥ ∆z;
ρ̂(ds ) = ρ̂(∆y), for ∆y > ∆x and ∆y ≥ ∆z; (19)
ρ̂(∆z), for ∆z > ∆x and ∆z > ∆y,

where ∆x, ∆y, and ∆z are calculated according to (11), (12), and (13) with d = 1, respectively. Then, one
of the following calculation options is used:

Estimation in x-direction is performed by combining (11) and (10) while setting ∆y = ∆z = 0. This leads
to a directional ACFs in x-direction
N
1 X
ρ̂(∆x) = cos(2π · ∆x · fn cos φn cos θn ). (20)
N | {z }
n=1 =fx,n

This function is sampled at the sampling distances (14) and used instead of ρ̂(ds ) in (18) to get an update
of the n-th root frequency fn . Due to the linear dependency, fx,n , fy,n , and fz,n are calculated from (11),
(12), and (13).

Estimation in y-direction is performed by combining (12) and (10) while setting ∆x = ∆z = 0. This leads
to a directional ACFs in y-direction
N
1 X
ρ̂(∆y) = cos(2π · ∆y · fn sin φn cos θn ). (21)
N | {z }
n=1 =fy,n

The n-th root frequency fn is obtained and the directional components are calculated from (11)-(13).

Estimation in z-direction is performed by combining (13) and (10) while setting ∆x = ∆y = 0. This leads
to a directional ACFs in z-direction
N
1 X
ρ̂(∆z) = cos(2π · ∆z · fn sin θn ). (22)
N | {z }
n=1 =fz,n

The n-th root frequency fn is obtained and the directional components are calculated from (11)-(13).

Copyright: Fraunhofer Heinrich Hertz Institute 90


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

The behavior of the approximated ACF is controlled in the overall 3-D space by calculating the ASE (16)
for a large number of test directions and updating the directional sinusoid frequencies only if there is an
overall improvement. The output of the approximation method are the sinusoid frequencies that can be used
in (9) to generate spatially correlated normal-distributed random numbers with an arbitrary ACF and for
arbitrary movements of the MT. It is possible to adjust the decorrelation distance dλ and the distribution
function of the stochastic process without having to recalculate the sinusoid frequencies. Doubling the
distances in (14) is equal to halving the frequencies in (9). For example, if the approximation was done for
dλ = 10 m, but a stochastic process is needed for 20 m decorrelation distance, then simply dividing the
frequencies by 2 creates the correct results. Uniform distribution can be achieved by a transformation from
normal to uniform samples6 . In the next section, it is shown how the SOS method can be used to generate
correlated stochastic processes for P2P links where both ends of the communication channel are mobile.

3.1.3 Device-to-Device Extension

It was found in [49] that the MT movement at each end of the P2P link has an independent and equal
effect on the correlation coefficient and that the joint correlation function (JCF) can be decomposed into
two independent ACFs

ρ(∆xt , ∆yt , ∆zt , ∆xr , ∆yr , ∆zr ) = ρ(∆xt , ∆yt , ∆zt ) · ρ(∆xr , ∆yr , ∆zr ). (23)

The locations of the transmitting and receiving terminal are given in 3-D Cartesian coordinates as (xt , yt , zt )
and (xr , yr , zr ), respectively. [49] proposes to approximate a combined ACF. However, with six dimensions
this results in a prohibitively large number of sinusoid coefficients and computing time. A simpler approach
is to combine two independent Gaussian stochastic processes, one for the transmitter and one for the receiver
into
kt (xt , yt , zt ) + kr (xr , yr , zr )
k(xt , yt , zt , xr , yr , zr ) = √ . (24)
2
The approximated six-dimensional Gaussian process is
2N
a n o
√n cos 2π · fnT · [xt yt zt xr yr zr ]T + ψn ,
X
k̂(xt , yt , zt , xr , yr , zr ) = (25)
n=1
2

where the sinusoid frequencies are obtained independently for the transmitting and receiving side.
(  T
fxt ,n fyt ,n fzt ,n 0 0 0 , for n ≤ N ;
fn =  T (26)
0 0 0 fxr ,n fyr ,n fzr ,n , for n > N .

The scaling by 2 in (24) accounts for doubling the number of SOS components in (25).

3.2 Large-Scale Fading Model

LSPs are relatively constant for several meters. An example is the SF which is caused by buildings or trees
blocking a significant part of the signal. The so-called decorrelation distance of the SF, i.e., the distance a
MT must move to experience a significant change in the SF, is in the same order of magnitude as the size
of the objects causing it. Thus, if a MT travels along a trajectory or if multiple MTs are closely spaced
together, their LSPs are correlated. The positions and the reflective properties of the scattering clusters are
based on eight LSPs:

1. RMS delay spread (DS)


6
Given a standard Gaussian stochastic process k ∼ N (0, 1), then
√ remapping the probability density to u ∼ U(0, 1) is done
using the complementary error function as u = 0.5 · erfc(−k/ 2).

Copyright: Fraunhofer Heinrich Hertz Institute 91


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

2. Ricean K-factor (KF)


3. Shadow fading (SF)
4. Azimuth spread of departure (ASD)
5. Azimuth spread of arrival (ASA)
6. Elevation spread of departure (ESD)
7. Elevation spread of arrival (ESA)
8. Cross-polarization ratio (XPR)

Their distribution properties are directly obtained from measurement data (e.g., [4, 6–8, 52]). The granu-
larity of each LSP can be described on three levels: the propagation scenario level, the link level, and the
path level.

• Propagation scenario level


The magnitude, variance and the correlation of a LSP in a specific scenario, e.g., urban-macrocell,
indoor hotspot, or urban satellite, are usually calculated from measurement data. Normally, LSPs
are assumed to be log-normal distributed [53]. For example, the median log-normal delay spread DSµ
in an urban cellular scenario is −6.89 log10 (s) which corresponds to a DS of στ = 128 ns7 . With
a standard deviation of DSσ = 0.5, typical values may vary in between 40 and 407 ns. The same
principle applies for the other six LSPs. The decorrelation distance (e.g., DSλ = 40 m) describes the
distance-dependent correlation of the LSP. If e.g., two mobile terminals in the above example are 40 m
apart from each other, their DS is correlated with a correlation coefficient of e−1 = 0.37. Additionally,
all LSPs are cross correlated. A typical example is the dependence of the AS, e.g., the azimuth spread
of arrival on the KF. With a large KF (e.g., 10 dB), a significant amount of energy comes from a single
direction. Thus, the AS gets smaller which leads to a negative correlation between the AS and the
KF.

• Link level
A MT at a specific position (black dot on the map in Figure 7) is assigned to a propagation scenario.
Depending on the position and the scenario, it experiences a radio channel which is determined by the
specific values of the seven LSPs. Due to the autocorrelation properties, small distances between users
in the same scenario also lead to high correlations in the channel statistics, e.g., a second terminal
right next to the current user will experience a similar DS. The second granularity level thus contains
the specific values of the LSPs for each user position. Generating those values can be seen as going
from the scenario-wide distribution µ, σ of a LSP to virtual “measurement”-values for each MT.

• Path Level
Finally, the individual components of the CIR are calculated. This procedure takes the values of the
LSPs into account and calculates the path-powers and the path-delays of the MPCs. The detailed
procedure for this is described in the following sections.

The communication scenario consists of multiple transmitters (TXs) and multiple receivers (RXs) operating
at one ore more carrier frequencies simultaneously. Their locations are given in 3-D metric Cartesian
coordinates as (xt , yt , zt ) and (xr , yr , zr ), respectively. The formulation of the LSF model is done for the
dual-mobility case, where both ends of the link can be mobile. For any two channel realizations, the TX can
be in a different position with dt describing the distance between the two positions. Likewise, the RX can
be displaced by a distance dr . Single-mobility is a special case where either dt or dr is zero. The generation
of properly correlated LSPs is then done in tree steps:

1. Generation of spatially correlated random variables in the logarithmic domain


2. Application of the inter-parameter correlations in the logarithmic domain
3. Transformation to the linear domain

7
The model parameters are given in logarithmic units. To clearly indicate this, the units are defined in logarithmic scale as
well. log10 (s) is the logarithm of seconds and log10 (°) is the logarithm of degrees.

Copyright: Fraunhofer Heinrich Hertz Institute 92


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

Correlated paramters

...
Linear transformation to impose
White Gaussian
inter-parameter correlation
noise generator

BDS c11 ... c17 ADS


... =

...
...

...

...
...
BESD c71 ... c77 AESD
Sum-of sinusoids
autocorrelation
shaping

Local values for an


individual MT position

Initial delays and cluster powers


.6
Norm. power

.4
.2
0
0 200 400 600
Delay [ns]

Figure 7: Principle of the generation of channel coefficients based on correlated LSPs

Spatial Correlation LSF Model The LSPs depends on up to four variables:

• The carrier frequency in GHz (fGHz )


• The 2-D distance between TX and RX on the ground in meters (d2D )
• The height of the TX above the ground in meters (hBS )
• The elevation angle (seen from the RX) between the TX and the ground in radians (αBS )

Based on these four variables, there are in between 3 and 12 parameters specified in the parameter tables.
These 12 parameters are defined as follows:

1. The (mandatory) reference value µ (mu) at a carrier frequency of fGHz = 1 GHz, a 2-D distance of
d2D = 1 m, a TX height of hBS = 1 m and a TX elevation of α = 1 rad or 57.3°
2. The (mandatory) reference standard deviation (STD) σ (sigma) at a carrier frequency of fGHz =
1 GHz, a 2-D distance of d2D = 1 m, a TX height of hBS = 1 m and a TX elevation of α = 1 rad or
57.3°
3. The (mandatory) decorrelation distance λ (lambda) in meters
4. The (optional) reference frequency offset ω (omega) in GHz
5. The (optional) frequency-dependence γ (gamma) of the reference value scaling with log10 (fGHz )
6. The (optional) distance-dependence  (epsilon) of the reference value scaling with log10 (d2D )
7. The (optional) height-dependence ζ (zeta) of the reference value scaling with log10 (hBS )
8. The (optional) elevation-dependence α (alpha) of the reference value scaling with log10 (αBS )
9. The (optional) frequency-dependence δ (delta) of the reference STD scaling with log10 (fGHz )
10. The (optional) distance-dependence κ (kappa) of the reference STD scaling with log10 (d2D )
11. The (optional) height-dependence τ (tau) of the reference STD scaling with log10 (hBS )
12. The (optional) elevation-dependence β (beta) of the reference STD scaling with log10 (αBS )

Copyright: Fraunhofer Heinrich Hertz Institute 93


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

The first three parameters, i.e., the reference value µ, the reference STD σ and the decorrelation distance λ
must be specified for each LSP with exception of the SF, where the reference value µ is given by the path
gain (PG). Parameters that are not specified are set to zero. Given the positions of the TX and the RX as
p = (xt , yt , zt , xr , yr , zr ), the initial value of the delay spread follows from
DSf (p) = DSµ + DSγ log10 (ω + fGHz ) + DS log10 (d2D ) + DSζ log10 (hBS ) + DSα log10 (αBS ) + (27)
DS
X (p) {DSσ + DSδ · log10 (ω + fGHz ) + DSκ log10 (d2D ) + DSτ log10 (hBS ) + DSβ log10 (αBS )} .
The variables d2D , hBS and αBS are derived from the position vector p and are thus included in the resulting
delay spread value. However, the carrier frequency fGHz is independent of the positions. Hence, for a given
set of carrier frequencies, there is an equal amount of DS values for each position. This is indicated by the
index f . The random values X DS ∼ N (0, 1) is a spatially correlated Normal distributed random variables
having zero-mean, unit variance and an ACF which is a combination of a Gaussian and an exponential ACF
  
 exp − d22 , for d < dλ ;
ρ(d) =  dλ  (28)
 exp − d , for d ≥ dλ ,

where dλ is the decorrelation distance defined by DSλ in the parameter table. The variable d is the distance
between two MTs positions. From observations in measurements it is known that, provided that TX and
RX are in the same propagation environment, the DS is identical if TX and RX are swapped (this is known
as channel reciprocity). Hence, the random variable X DS is generated according to
X̃ DS (xt , yt , zt ) + X̃ DS (xr , yr , zr )
X̄ DS (xt , yt , zt , xr , yr , zr ) = p . (29)
2 · ρτ (dtr ) + 1
where X̃ DS ∼ N (0, 1) is also a spatially correlated normal distributed random variable having zero mean
and unit variance.
p However, X̃ depends only on three variables, i.e. the positions of the RX or TX. The
scaling with ρ(dtr ) + 1 ensures that the variance of the random process does not change for small TX-RX
distances.

The same procedure applies to the KF and the XPR. The azimuth spread of departure (ASD), the azimuth
spread of arrival (ASA), the ESD, the ESA use the same procedure for the generation of the reference values.
However, a different approach is needed for the autocorrelation model since when TX and RX change places,
the departure AS at the TX becomes the arrival AS at the RX and vice-versa. This effect can be captured by
generating two independent 3-D spatially correlated random variables X̃ ASd ∼ N (0, 1) and X̃ ASa ∼ N (0, 1)
and combining them to
X̃ ASd (xt , yt , zt ) + X̃ ASa (xr , yr , zr )
X̄ ASD (xt , yt , zt , xr , yr , zr ) = , (30)
2
X̃ ASa (xt , yt , zt ) + X̃ ASd (xr , yr , zr )
X̄ ASA (xt , yt , zt , xr , yr , zr ) = . (31)
2
The same procedure is repeated for the initial elevation angular spreads X ESD and X ESA . The reference
value for the SF is the PG and hence, the SF does not require the values µ, γ, , ζ, and α.

Inter-Parameter Correlation Model In order to account for the inter-LSP correlation, a 8 × 8 matrix R
is assembled containing all cross-correlation values ρ between each two LSPs.
 
1 ρDS,KF ρDS,SF ρDS,ASD ρDS,ASA ρDS,ESD ρDS,ESA ρDS,XPR
 ρKF,DS 1 ρ KF,SF ρKF,ASD ρ KF,ASA ρ KF,ESD ρ KF,ESA ρ KF,XPR 
 
 ρSF,DS ρSF,KF 1 ρ SF,ASD ρSF,ASA ρ SF,ESD ρ SF,ESA ρ SF,XPR 
 
 ρASD,DS ρASD,KF ρASD,SF 1 ρASD,ASA ρ ASD,ESD ρ ASD,ESA ρ ASD,XPR

R=  ρASA,DS ρASA,KF ρASA,SF ρASA,ASD
 (32)
 1 ρASA,ESD ρASA,ESA ρASA,XPR 

 ρESD,DS ρESD,KF ρESD,SF ρESD,ASD ρESD,ASA 1 ρESD,ESA ρESD,XPR 
 
 ρESA,DS ρESA,KF ρESA,SF ρESA,ASD ρESA,ASA ρESA,ESD 1 ρESA,XPR 
ρXPR,DS ρXPR,KF ρXPR,SF ρXPR,ASD ρXPR,ASA ρXPR,ESD ρXPR,ESA 1

Copyright: Fraunhofer Heinrich Hertz Institute 94


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

Then, the square-root matrix R1/2 is calculated such that R1/2 · R1/2 = R [54]. In order to calculate the
matrix-square-root, R must be positive definite to get a unique, real-valued solution. The matrix R1/2 is
multiplied with the eight normal distributed random variables

X DS (p) X̄ DS (p)
   
 X KF (p)   X̄ KF (p) 
SF  X̄ SF (p) 
   
 X (p) 
 ASD   ASD 
 X (p) 
 = R1/2 ·  X̄ (p) 

 X̄ ASA (p)  , (33)
 
 X ASA (p) 
   
 X ESD (p)   X̄ ESD (p) 
   
 X ESA (p)   X̄ ESA (p) 
X XPR (p) X̄ XPR (p)

where the variables X̄ are uncorrelated and the variables X are cross-correlated. These cross-correlated
variables are used in (27). In order to generate the correct statistical properties of the LSPs the parameters
are generated in the following order:

1. Generate 3-D spatially correlated normal distributed random variables X̃ DS , X̃ SF , X̃ KF , X̃ ASd , X̃ ASa ,
X̃ ESd , X̃ ESa , and X̃ XPR independently for each parameter by using the sum-of-sinusoids (SOS) model
from section 3.1.1
2. Combine the 3-D variables X̃ to 6-D variables X̄ by taking the TX and RX positions as well as channel
reciprocity into account using (29) for the DS, SF, KF, and XPR; (30) for ASD and ESD; and (31)
for ASA and ESA
3. Apply the inter-parameter correlation model (33) to obtain the 8 variables X
4. Calculate the variables d2D , hBS and αBS from the TX and RX positions
5. Calculate the 8 initial LSPs using (27) for each TX-RX pair and for each carrier frequency

3.3 Multi-Frequency Small-Scale Fading Model

This section describes the small-scale-fading (SSF) model, i.e. the generation of individual multipath com-
ponents for each MT. The 3GPP new-radio channel model introduced two additional features that, when
implemented together, require some changes in the way the path parameters (delay, power, departure and
arrival angles) are generated.

Firstly, 3GPP introduced spatial consistency, which solves one major drawback of previous GSCMs, namely
the lack of realistic correlation in the SSF. Without spatial consistency, the positions of individual scattering
clusters were generated randomly. With spatial consistency, the positions of the scattering clusters must
be spatially correlated. One way to do this is by generating spatially consistent powers, delays and angles
of the clusters which means that all random variables must be spatially correlated. An efficient way to do
this is by utilizing the SOS method outlined in section 3.1. However, in order to be truly consistent, any
function that modifies these random numbers must be continuous. For example, the delay generation in
[10] requires to sort the delays ([10], eq. 7.5-2). Sorting is not a continuous function since it changes the
order of the clusters depending on their delay. As a result, the channel coefficients show sudden “jumps”
when plotting the phase over time on a continuous trajectory. The same happens for the scaling with the
maximum path power when generating the arrival angles and departure angles ([10], eqs. 7.5-9 and 7.5-14),
the positive or negative sign in the angles (eq. 7.5-16), and the random coupling of rays within a cluster. All
these operations break the spatial consistency. The proposed SSF model will solve this issue by removing
all non-continuous operations from the calculations.

The second new feature introduced by 3GPP are multi-frequency simulations. For this, an alternative
channel generation method has been introduced as an optional modeling component. The idea is to generate
random delays and angles from the given and delay and angular spreads at an anchor frequency. These

Copyright: Fraunhofer Heinrich Hertz Institute 95


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

delay and angles are the same for all frequencies. The cluster-powers are then generated independently
for each frequency in the multi-frequency set by using scaling coefficients that take the different spreads at
other frequencies into account. However, when the delay and angular spreads are calculated from the actual
delays, powers and angles, they do not match the given spreads from the LSF model, which is generally not
the case for the family of 3GPP models.

A third new feature, which is not yet part of the 3GPP new-radio model, is the support for P2P com-
munications, such as in vehicular networks, air-to-ground communications, industrial communications, or
communication scenarios involving satellites in low-earth orbit. All of these examples require that both
ends of the link are mobile. Dual-mobility has already been incorporated into the LSF model by taking
the positions of both the TX and the RX into account. The same approach can be used for the spatially
consistent delays and angles. However, some additional modifications are needed for the case when TX and
RX are close together.

In this section, we propose a modified version of the 3GPP alternative channel generation method that
works in three steps: First, spatially consistent delays and angles are generated without taking the spreads
from the LSF model into account. Second, the multi-frequency scaling is done for the powers in a similar
way as suggested by 3GPP. Finally, the delay and angles are adjusted to match the given spreads. This
ensures that the output of the SSF model is consistent with the LSF model.

3.3.1 Communication Model

The communication model consists of multiple transmitters (TXs) and multiple receivers (RXs). Their loca-
tions are given in 3-D metric Cartesian coordinates as (xt , yt , zt ) and (xr , yr , zr ), respectively. A transmitted
signal is reflected and scattered by objects in the environment such that multiple copies of that signal are
received by the RX. Each path that a signal takes consists of a departure direction at the TX, a first-bounce
scatterer (FBS), a LBS, and an arrival direction at the RX. Departure and arrival directions are given in
geographic coordinates consisting of an azimuth angle φ and an elevation angle θ8 . The formulation of the
path generation procedure is done for the dual-mobility case, where both ends of the link can be mobile. For
any two channel realizations, the TX can be in a different position with dt describing the distance between
the two positions. Likewise, the RX can be displaced by a distance dr . Single-mobility is a special case
where either dt or dr is zero. All random variables that determine the positions of the NLOS scatterers are
spatially correlated, i.e. they depend on the positions of the TX and the RX [12].

NLOS path
dt FBS LBS dr
(ϕd,θd) a a
(ϕ ,θ )
TX RX
LOS path
d d a a
(ϕ ,θ ) (ϕ ,θ )
(xt,yt,zt) (xr,yr,zr)
RX-RX distance dtr

Figure 8: Illustration of the communication model

3.3.2 Initial Delays and Angles

Initial delays for the NLOS paths are drawn randomly from a single-sided exponential distribution with unit
mean and unit STD as
τ̃l = − ln {Xlτ (xt , yt , zt , xr , yr , zr )} , (34)

8
φ is defined in mathematic sense, i.e., seen from above, a value of 0 points to the east and the angles increase counter-clockwise.
θ describes the rotation relative to the horizontal plane. Positive rotation is up.

Copyright: Fraunhofer Heinrich Hertz Institute 96


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

where the index l denotes the path number and Xlτ ∼ U(0, 1) is a spatially correlated uniformly distributed
random variable having values between 0 and 1. The LOS delay, i.e. the delay of the first path, is set to 0.
The initial delays are not scaled by the DS nor are the angles scaled by the AS. The actual spread values
will be applied later. This approach is different compared to the new radio (NR) model [10] which includes
the spreads already in the initial values. The autocorrelation function (ACF) of Xlτ is a combination of a
Gaussian and an exponential ACF
  
 exp − d22 , for d < dλ ;
ρτ (d) =  dλ  (35)
 exp − d , for d ≥ dλ ,

where d is the distance between two MTs positions and dλ is the decorrelation distance, i.e. the distance
at which the correlation falls below e−1 ≈ 0.37 [44]. The combined ACF produces a higher correlation
between delays of closely spaced MTs. It was found that this is more realistic than an exponential ACF,
where the delays may vary significantly even when MTs move only a few centimeters. From observations in
measurements it is known that the path delays are identical if TX and RX are swapped (this is known as
channel reciprocity). Hence, the random variable Xlτ is generated according to
!
τ 1 X̃lτ (xt , yt , zt ) + X̃lτ (xr , yr , zr )
Xl (xt , yt , zt , xr , yr , zr ) = erfc − p , (36)
2 2 · ρτ (dtr ) + 1

where X̃lτ ∼ N (0, 1) is a spatially correlated normal distributed random variable


p having zero mean and unit
variance, and erfc is the complementary error function. The scaling with ρτ (dtr ) + 1 ensures that the
variance of the random process does not change for small TX-RX distances.

Next, initial values for the four angles are generated for each path. As for the DS, they are generated
spatially consistent having the same ACF and decorrelation distance. The NR model [10] proposes to obtain
the azimuth angles from a wrapped Gaussian distribution, the elevation angles from a wrapped Laplacian
distribution, and the path power from a single slope exponential power delay profile (PDP). However, this
leads to large angle offsets when the powers are small and the AS is large. Due to the wrapping operation,
the achievable AS is limited. In order to have a larger range of possible angular spreads, we propose to draw
the initial NLOS angles from a uniform distribution as
 π π
φ̃l = Xlφ (xt , yt , zt , xr , yr , zr ) ∼ U − , . (37)
2 2
As for the DS, the actual AS is later applied by a scaling operation. If TX and RX change places, the
departure angles at the TX become the arrival angles at the RX and vice-versa. This effect can be captured
by generating two independent 3-D spatially correlated random variables X̃lφd ∼ N (0, 1) and X̃lφa ∼ N (0, 1)
and combining them to
!
φd φa
π X̃ (x , y
t t t , z ) + X̃ (x , y
r r r , z ) π
φ̃dl (xt , yt , zt , xr , yr , zr ) = erfc − l l
− , (38)
2 2 2
!
π X̃ φa (xt , yt , zt ) + X̃lφd (xr , yr , zr ) π
φ̃al (xt , yt , zt , xr , yr , zr ) = erfc − l − . (39)
2 2 2

The same procedure is repeated for the initial elevation angles θ̃ld and θ̃la . The initial angles for the LOS
path are set to 0.

3.3.3 Initial Path Powers

The initial delays τ̃l and the four initial angles φ̃dl , φ̃al , θ̃ld , and θ̃la are assumed to be frequency-independent,
i.e. a MT sees the same scattering clusters at different frequencies and therefore, the same angles and

Copyright: Fraunhofer Heinrich Hertz Institute 97


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

delays are used. However, DS and AS are generally frequency-dependant. For example, the DS at a carrier
frequency of 10 GHz is generally shorter than at 2 GHz. The NR model [10] proposes an alternative channel
generation method which can adjust the path powers such that different delay and angular spreads can be
achieved. The powers are calculated as
  2  2 
DS d ASD a ASA d ESD a ESA
P̃l,f = exp −τ̃l · gf − φ̃l · gf − φ̃l · gf − θ̃l · gf − θ̃l · gf , (40)

where the index f refers to the f = 1 . . . F carrier frequencies. The scaling coefficients gfDS , gfASD , gfASA ,
gfESD , and gfESA need to be calculated such that the frequency-dependent differences in the spreads are
reflected in the powers. Given that the initial delays (34) are drawn from a single-sided exponential dis-
tribution with unit mean and unit STD, the maximum DS can be 1 if all paths have the same power. By
choosing the path powers as P̃l = exp {−9 · τ̃l }, a DS of is 0.1 is obtained. This can be seen as a lower bound.
In other words, the smallest DS in a multi-frequency simulation must be at least 10% of the largest value9 .
The achievable DS values as a function of the scaling coefficient g are listed in Table 34. For single-frequency
simulations, the NR model [10] uses the delay distribution proportionality factor rτ to shape the PDP. rτ
typically has values in between 1.7 and 3.8 and it follows from ([10], eq. 7.5-5) that g DS = rτ − 1. However,
for the multi-frequency simulations, there might be a different DS for each frequency. In this case, gfDS is a
function of the frequency and so is rτ . Hence, it is not possible to fix rτ to a given value. Instead, the DS
gets mapped to gfDS by

DSf
gfDS = −1.5 · ln 1.2 · DSf − 0.15 , with

DSf = , 0.15 < DSf < 0.85. (41)
max(DSf ) + min(DSf )

The parameters of this mapping function were numerically obtained by fitting the values from Table 34
to an exponential function. If there is no frequency dependency of the DS, then gfDS will have a value of
1.2 which corresponds to rτ = 2.2. A similar mapping is done for the AS. The initial angles are uniformly
distributed having values in between −π/2 and π/2. For the azimuth angles, the path powers are mapped
to a Gaussian PAS. As for the DS, the scaling coefficients gfASD and gfASA must be obtained. The achievable
AS for different scaling coefficients are listed in Table 34 and the mapping is done by

ASD/A  ASf
gf = −2.2 · ln 1.5 · ASf − 0.35 , with ASf = 0.75 · , ASf > 0.25. (42)
max(ASf )
ASD/A
If there is no frequency dependency of the azimuth AS, then gf will have a value of 0.56 which
corresponds to an initial spread of 42°. This can be scaled down to 14° by adjusting the path powers. Lastly,
the scaling coefficients gfESD and gfESA for the elevation angles are obtained. The path powers are mapped
to a Laplacian PAS by

ESD/A  ESf
gf = −3.4 · ln 1.2 · ESf − 0.1 , with ESf = 0.75 · , ESf > 0.25. (43)
max(ESf )
ESD/A
If there is no frequency dependency of the elevation AS, then gf will have a value of 0.76 which
corresponds to an initial elevation spread of 44° which can be scaled down to 14° at a different frequency.

Table 34: Achievable delay and angular spread values


Scaling coeff. g 0.0 0.5 1.0 2.0 3.0 5.0 9.0
DS [s] 1.00 0.67 0.50 0.33 0.25 0.17 0.10
ASD/A [deg] 51.6 43.6 37.0 28.1 23.1 17.9 13.2
ESD/A [deg] 51.6 46.4 41.3 31.9 24.6 15.7 8.6

9
The actual values are later applied by adjusting the path delays. Here, only the relative difference between maximum and
minimum DS is of interest.

Copyright: Fraunhofer Heinrich Hertz Institute 98


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

3.3.4 Applying K-Factor, Delay Spread and Angle Spreads

The initial delays τ̃l and cluster powers P̃l,f are chosen such that the DS has values around 0.5 seconds.
The cluster angles φ̃dl , φ̃al , θ̃ld , θ̃la are initialized such that the initial ASs have values around 40°. Now, the
actual values of the KF, the DS and the four ASs are applied. In multi-frequency simulations, the cluster
delays and angles are independent of the carrier frequency, i.e. the same clusters are seen independent of the
frequency. However, the cluster powers are frequency-dependent and reflect relative differences in the delay
and angular spreads. For example, the DS might decrease if the carrier frequency increases from 2 GHz to
10 GHz. The scaling of the initial cluster powers in (40) already takes this relative difference into account
by assigning less power to the clusters with a longer delay at 10 GHz.

Applying the K-Factor The KF is defined as the ratio of the power of the direct path divided by the
sum-power of all other paths. As for the DS and the ASs, the KF is generally frequency-dependent. It is
applied by setting the power of the first path to
L
X
P̃1,f = KFf · P̃l,f . (44)
l=2

Then, the path powers are normalized such that their sum power is one Watt. This is done independently
for each frequency.
L
X
Pl,f = P̃l,f / P̃l,f (45)
l=1

Applying the Delay Spread The DS measures how the multipath power is spread out over time. Given
the cluster-powers Pl,f from (45) and the initial delays τ̃l from (34), the initial DS is calculated as
v !2
L L
u
u 1 X 1 X
DS
ff = t · Pl,f · (τ̃l )2 − · Pl,f · τ̃l , (46)
Pf Pf
l=1 l=1

where Pf is the sum-power of all clusters at frequency f . The values of DS


f f are frequency-dependent due to
the scaling of the path-powers in (40), but do not contain the correct DS values from the LSF model. Hence,
the delays need to be scaled such that the correct DS can be calculated from the generated path-delay and
path-powers. This is done by
F
1 X DSf
τl = τ̃l · · . (47)
F DS
ff
f =1

The last step is different from other models. The WINNER [4] and 3GPP-3D model [24] scale the delays
with an empiric formula that corrects the delays to reduce the effect of a high KF. However, due to the
random variables in (34) the resulting DS is always different from the value in the LSF model. The proposed
method ensures that scattering clusters are distributed in a way that the DS calculated from the MPCs
is exactly the same as the DS from the LSF model. In the following section, the departure and arrival
directions of each MPC are generated. Those are the combined with the delays in order to calculate the
3-D positions of the scattering clusters.

Applying the Angular Spreads The AS measures how the multipath power is spread out in the spatial
domain. The AS is ambiguous since the angles are distributed on a sphere and the resulting value depends
on the reference angle, i.e., the definition of where 0° is. A linear shift of the angles φl + ∆φ leads to the AS

Copyright: Fraunhofer Heinrich Hertz Institute 99


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

being a function of ∆φ . In the 3GPP SCM [55], this was solved by an exhaustive search over ∆φ ∈ [−π, π[
to find the minimum AS
σφ = min σφ (∆φ ). (48)
∆φ

In a similar approach the angles are normalized such that the combined power-angular spectrum (PAS) of
all paths and sub-paths points to θ = φ = 0. The normalization of the angle φ̃l is done by
L
!
X n o
∆φf = arg exp j φ̃l · Pl,f , (49)
l=1
n  o
φ̂l,f = arg exp j φ̃l − ∆φf . (50)

Then, the AS is calculated by


v !2
L L
u
u 1 X  2 1 X
ASf =
f t · Pl,f · φ̂l,f − · Pl,f · φ̂l,f . (51)
Pf Pf
l=1 l=1

With ASf being the initial AS from the LSF model, the initial angles φ̃l are scaled to
F 
  1 X ASf 3.0, for azimuth angles;
φl = arg exp j · φ̃l · s , s= · , s< (52)
F 1.5, for elevation angles.
f =1 ASf
f

The arg exp function wraps the angles around the unit circle. The scaling coefficient s is limited to a
maximum value of 3 for the scaling of the azimuth angles and 1.5 for the elevation angles. This is motivated
by the distribution of the initial angles in (37). More power is assigned to the angles having values close
to 0 than to those having values close to ± π2 . For this reason, s = 3 achieves the maximum azimuth AS
of around 85° and s = 1.5 achieves the maximum elevation AS of around 48°. Larger values of s tend to
decrease the AS again due to the wrapping around the unit circle.

LOS angles The last step is to apply the direction of the LOS path. The initial values of the LOS angles
φ̃d1 , φ̃a1 , θ̃1d , and θ̃1a were set to 0. However, the correct angles need to take the positions of the TX and the
RX into account. The LOS angles are

φd1 = arctan2 {yr − yt , xr − xt } , (53)


φa1 = φd1 +π (54)
θ1d = arctan2 {zr − zt , d2d } , (55)
θ1a = −θ1d , (56)
p
d2d = (xr − xt )2 + (yr − yt )2 (57)

where arctan2 is the multi-valued inverse tangent. Those angles are applied by two 3-D rotations in Cartesian
coordinates, one for the TX and one for the RX. The operations are identical. The NLOS departure and
arrival angles from the precious calculation are converted to Cartesian coordinates by
 
cos θl · cos φl
cl =  cos θl · sin φl  . (58)
sin θl

Then, a rotation matrix is constructed from the LOS angles. This matrix is a combined rotation around
the y-axis followed by a rotation around the z-axis in Cartesian coordinates. It is applied by
 
cos θ1 · cos φ1 − sin φ1 − sin θ1 · cos φ1
ĉl =  cos θ1 · sin φ1 cos φ1 − sin θ1 · sin φ1  · cl . (59)
sin θ1 0 cos θ1

Copyright: Fraunhofer Heinrich Hertz Institute 100


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

The final angles are then obtained by converting ĉl back to spherical coordinates.

φl = arctan2 {ĉl,x , ĉl,y } (60)


n q o
θl = arctan2 ĉl,z , ĉ2l,x + ĉ2l,y (61)

3.3.5 Subpaths

At bandwidths below 100 MHz, closely clustered paths that originate from the same scattering cluster
cannot be resolved in the delay domain. However, those unresolvable paths can still arrive from slightly
different directions. When the band-limited CIR is observed over time, the power of the resolved paths
appears to fluctuate as a result of the constructive and destructive interference caused by the superposition
of the unresolvable paths. This phenomenon was modeled in the 3GPP-SCM [22] by splitting NLOS paths
into 20 sub-paths that arrive from slightly different directions. The LOS path has no sub-paths. The same
approach is used in the new model. The azimuth and elevation angles of each sub-paths are calculated as

π · cφ · φ̂m
φl,m = φl + , for l > 1; (62)
180°
π · cθ · φ̂m
θl,m = θl + , for l > 1. (63)
180°
Here, m is the sub-path index, cφ is the scenario-dependent cluster-wise RMS AS and φ̂ is the offset angle
of the mth sub-path from Table 35. cφ and φ̂ are given in degrees here. Furthermore, each of the 20 angle
pairs (θd l,m , φd l,m ) at the TX gets coupled with a random angle pair (θa l,m , φa l,m ) at the RX (see [4]).

Table 35: Offset Angle of the mth Sub-Path from [4]


Sub-path Offset angle Sub-path Offset angle
m φ̂m (degrees) m φ̂m (degrees)
1,2 ± 0.0447 11,12 ± 0.6797
3,4 ± 0.1413 13,14 ± 0.8844
5,6 ± 0.2492 15,16 ± 1.1481
7,8 ± 0.3715 17,18 ± 1.5195
9,10 ± 0.5129 19,20 ± 2.1551

At this point, each (sub-)path is described by its delay, power, departure direction, and arrival direction.
The next step is to use these values to calculate the exact position of the scatterers. This is needed in
order to incorporate mobility at the MT. When the MT moves to a different location, the delays and arrival
directions are updated in a deterministic way. One method for doing this was proposed by Baum et al. [26]
who introduced the term drifting.

3.4 Drifting

After the path-delays, powers, and angles are known for the initial positions of the TX and RX, their
values are updated when the MTs move to a different location. This is an essential step to ensure spatial
consistency for moving terminals. Without tracking of the delays and directions of a path, the behavior
of the channel coefficients at the output of the model does not agree well with the reality. State-of-the-art
GSCMs such as the 3GPP-3D [9] and the new radio model [10] use a simplified approach for the temporal
evolution of the CIR. In this approach, each MPC gets assigned a Doppler shift based on the initial arrival
angles. However, the angles and and path delays remain unchanged. In these models, there is no way to
explicitly describe the movements of a terminal, e.g., pedestrians using mobile phones, people in trains, cars,
or other means of transport. This often leads to simplified simulation assumptions such as all MTs having

Copyright: Fraunhofer Heinrich Hertz Institute 101


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

ideal antennas and antenna orientations, moving at a constant speed and in a fixed direction. Conclusions
drawn from such simulations might be very different from the achievable performance in real deployments.

In the dual-mobility model, both TX and RX move along trajectories. The channel coefficients are calculated
at so-called snapshot positions, i.e. at an ordered list of positions defining the trajectory. The dual-mobility
model requires that the TX and RX trajectories have the same number of snapshot positions but do not
need to have the same length. Hence, both sides of the communication link can move at different speeds
such as in air-to-ground channels. Single-mobility is obtained when the TX trajectory has zero-length, i.e.
the TX remains stationary while the RX is moving. Due to channel reciprocity, forward and return channels
are identical and, therefore, this also covers the case when the TX is mobile and the RX is stationary. The
RX trajectory is divided into segments. Each segment is several meters long and it is assumed that the
channel maintains its wide sense stationary (WSS) properties for the time it takes a MT to traverse the
segment, i.e., the LSPs don’t change significantly. The TX trajectory does not contain segments but it
“inherits” the segments from the RX. For example, if a segment start at snapshot number 500 of the RX
trajectory, it would also start at at snapshot number 500 of the TX trajectory.

Changes in the orientation of a terminals are treated in Section 3.5 when the antenna characteristics are
included. The birth and death of MPCs is treated at the edge of a segment when a new segment starts (see
Section 3.8). Here, a method to update the path-parameters (delay, angles, and phase) for each MT position
along a segment is presented. Drifting for 2-D propagation was already introduced in an extension of the
SCM [26]. However, it was not incorporated into the WINNER and 3GPP-3D models and no evaluation
was reported. Here, the idea from [26] is extended towards 3-D propagation to incorporate time evolution
into the new model.

The following paragraphs outline the calculations needed to implement drifting in 3-D coordinates which
are not part of any of the previous GSCMs. For this, the individual delays and angles for each MPC from
the previous sections are needed. In order to obtain correct results for large array antennas, e.g., for massive
MIMO, the calculations must be done for each individual element of an array antenna. Thus, the new model
inherently supports spherical waves. If the BS array size is small compared to the BS-MT distance, it is
sufficient to consider only a single scatterer (the LBS) for the NLOS paths. In this case, all calculations
at the BS assume planar waves and the delays, angles and phases are updated for different MT positions
with respect to the LBS. This is done in the so-called single-bounce model. However, many massive MIMO
deployments are done indoors or in so-called micro-cell scenarios where BS and MT are relatively close to
each other. At the same time, scattering clusters might be very close to the transmitter which is not the
case in macro-cell scenarios when the BS antennas are deployed above the rooftop. For such micro-cell
deployments it is essential to calculate the correct phase for each BS antenna element. Thus, in addition to
the LBS, it is also necessary to take the position of the FBS into account. This is done in the multi-bounce
model. Since the single-bounce model is a special case of the multi-bounce model (FBS and LBS are the
same), both approaches are used. In the following, the single-bounce model is described first and then
extended towards the multi-bounce model. The special LOS case is described last.

Besides the initial delays, path-powers, and angles, drifting requires the exact position of each antenna
element. At the MTs, element positions need to be updated for each snapshot with respect to the MT
orientation. The following calculations are then done element-wise. The indices denote the RX antenna
element (r) and the TX antenna element (t), the path number (l), the sub-path number (m), and the
snapshot number (s) within the current segment, respectively. The scatterer positions are kept fixed for the
time it takes a MT to move through a segment.

NLOS drifting (single-bounce model) The position of the LBS is calculated based on the initial arrival
angles and the path delays. Then, the angles and path lengths between the LBS and the terminals are
updated for each snapshot on the trajectories. This is done for each antenna element separately. Figure 9
illustrates the angles and their relations. Since only the arrival angles are used for this calculation, initial
departure angles are omitted. Since the initial delay of the LOS path is normalized to zero, the total length

Copyright: Fraunhofer Heinrich Hertz Institute 102


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

of the lth path follows from


dl = τ l · c + |r| , (64)
where |r| is the distance between the initial TX and the initial RX location and c is the speed of light. All
sub-paths have the same delay and thus the same path length. However, each sub-path has different arrival
a , φa ). Those angles are transformed into Cartesian coordinates to obtain
angles (θl,m l,m

cos φal,m · cos θl,m


a
 

âl,m =  sin φal,m · cos θl,m


a  = al,m . (65)
a |al,m |
sin θl,m

This vector has unit length and points from the initial RX position towards the scatterer. Next, the length
of the vector al,m is obtained. Since the drifting at the MT is modeled by a single reflection, TX, RX, and
LBS form a triangle. The values of dl , r, and âl,m are known. Thus, the cosine theorem can be used to
calculate the length |al,m | between the RX and LBS.

|bl,m |2 = |r|2 + |al,m |2 − 2 |r| |al,m | cos αl,m (66)


2 2 2 T
(dl − |al,m |) = |r| + |al,m | + 2 |al,m | r âl,m (67)
2
d2l − |r|
|al,m | = (68)
2 · (dl + rT âl,m )

In (67) the term cos αl,m is substituted with −rT âl,m /|r| since the angle between al,m and −r is needed.
Now, the vector ar,l,m,s is calculated for the RX antenna element r at snapshot s. The element position
includes the orientation of the array antenna with respect to the moving direction of the RX. Hence, the
vector er,s points from the initial RX location to the rth antenna element at snapshot s.

ar,l,m,s = al,m − er,s (69)

An update of the arrival angles is obtained by transforming ar,l,m,s back to spherical coordinates.

φar,l,m,s = arctan2 {ar,l,m,s,y , ar,l,m,s,x } (70)


 
a ar,l,m,s,z
θr,l,m,s = arcsin (71)
|ar,l,m,s |

In the single-bounce model, the departure angles φd and θd depend on the TX and the LBS position. The
initial departure angles are omitted and no longer used. Hence, when using only the single-bounce model,
the departure ASs obtained from the channel coefficients will not match with the vales from the LSF model.

last-bounce scatterer
ck
TX

tra

αl,m
al,m
RX
tra
ck

bl,m
r initial RX location
initial TX location ar,l,m,s er,s
et,s bt,l,m,s
rr,t,s
RX location at snapshot s

TX location at snapshot s

Figure 9: Illustration of the calculation of the scatterer positions and updates of the arrival angles in the
single-bounce model

Copyright: Fraunhofer Heinrich Hertz Institute 103


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

The angles are calculated by


bt,l,m,s = r + al,m − et,s (72)
φdt,l,m,s = arctan2 {bt,l,m,s,y , bt,l,m,s,x } (73)
 
d bt,l,m,s,z
θt,l,m,s = arcsin (74)
|bt,l,m,s |
The phases ψ and path delays τ depend on the total path length dr,t,l,m,s . They are calculated as
dr,t,l,m,s = |bt,l,m,s | + |ar,l,m,s | (75)

ψ r,t,l,m,s = · (dr,t,l,m,s mod λ) , (76)
λ
20
1 X
τ r,t,l,s = · dr,t,l,m,s . (77)
20 · c
m=1

The phase always changes with respect to the total path length. Hence, when the MT moves away from
the LBS the phase will increase and when the MT moves towards the LBS the phase will decrease. This
inherently captures the Doppler shift of single paths and creates a realistic Doppler spread in the channel
coefficients at the output of the model.

In the next paragraph, the single-bounce model is extended to include the FBS in order to realistically
model the effects caused by large array antennas at the TX. This is important in scenarios where there is
scattering close to the BS, e.g., indoors or in micro-cell deployments with low BS heights.

first-bounce scatterer last-bounce scatterer


cl,m
TX

ck
tra
al,m
tra

dl,m

RX
ck

bl,m
initial TX location r
initial RX location
et,s bt,l,m,s ar,l,m,s er,s
rr,t,s
RX location at snapshot s
TX location at snapshot s

Figure 10: Illustration of the calculation of the scatterer positions and updates of the departure and arrival
angles in the multi-bounce model

NLOS drifting (multi-bounce model) In the multi-bounce model, the NLOS propagation path consists
of three parts as illustrated in Figure 10. In the first part, the vector bt,l,m,s points from the position of a
TX-antenna element t at snapshot s to the FBS. In the second part, the vector cl,m points from the FBS to
the LBS, and in the third part, the vector ar,l,m,s points from the RX-location to the LBS. The path delay
dl given by the SSF model for the initial locations of TX and RX by (64). Hence, the total path lengths is
dl = |bl,m | + |cl,m | + |al,m | , (78)
where the vector bl,m points from the TX-array center to the FBS. The departure and arrival angles are
known from the calculations in Section 3.3. Thus, the unit-length vector b̂l,m can be calculated by converting
the departure angles of a path to Cartesian coordinates.
cos φdl,m · cos θl,m
d
 

b̂l,m =  sin φdl,m · cos θl,m


d  = bl,m (79)
d |bl,m |
sin θl,m

Copyright: Fraunhofer Heinrich Hertz Institute 104


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

In order to explicitly calculate the positions of the FBS and the LBS, the lengths of the vectors al,m and bl,m
are needed. However, (78) is ambiguous. One way to fix the additional degree of freedom is to minimize the
length of cl,m . Ideally, |cl,m | becomes zero and the multi-bounce model collapses to a single-bounce model.
In order to obtain realistic results, an additional minimum distance dmin between the phase center of the
array antennas and the nearest scatterer is introduced. Then, the lengths |al,m | and |bl,m | can be calculated
by solving the following optimization problem

minimize |cl,m | = dl − |bl,m | − |al,m |


|al,m |,|bl,m |
subject to r = b̂l,m · |bl,m | + ĉl,m · |cl,m | − âl,m · |al,m | ,
|bl,m | ≥ dmin ,
|al,m | ≥ dmin .

The minimum distance dmin might be fixed according to the scenario and center frequency, e.g., 1 m for
outdoor propagation and 0.1 m for indoor propagation. To solve the optimization problem |al,m | is set to
dmin and cl,m and |bl,m | are calculated using the cosine theorem. This is possible since the TX, the FBS
and the LBS form a triangle as indicated in Figure 10 by the gray shaded area.

d+
l = τl · c + |r| − |al,m | (80)
dl,m = r + âl,m · |al,m | (81)
2
d+
l − |dl,m |2
|bl,m | =   (82)
2 · d+ l − d T b̂
l,m l,m

There can be three possible results from this first iteration step that need to be treated separately.

1. The value obtained for |bl,m | might be smaller than dmin or even smaller than 0. The latter would
imply that the departure direction of the path has changed to the other side of the TX. However,
this is not allowed since the departure angles are fixed. In this case, the optimization problem has no
solution. This often happens when the propagation delay of a path is very short, i.e., when the path
is only a little longer than the LOS path.

This case is treated by setting |cl,m | = 0 and calculating new departure angles using the single-bounce
model. This changes the departure angular spread. However, in most cases there will be many paths where
the optimization problem has a solution. This is especially true for paths with a longer propagation delay.
Hence, it is possible to mitigate the changed departure angular spread by adjusting the departure angles of
the multi-bounce paths. The rationale behind this is that many measurements [6, 8] show a rather small
departure angular spread of just a few degrees but a large arrival angular spread. This leaves more “room”
to adjust the departure angles before they are wrapped around the unit circle. Also, paths with a short
propagation delay have more power due to the exponential PDP used in (40). From a physical point of
view, those paths are more likely to be scattered only once. Later paths have significantly less power and
can be the result of multiple scattering events.

2. The value for |bl,m | is larger than dmin and the optimization problem has a solution. In this case, there
will also be an optimal solution, i.e., a minimal distance |cl,m |. This minimum must be in between
the start point where |al,m | = dmin and the end point where |bl,m | = dmin . For each value |al,m |
there follows a value for |bl,m | and a value for |cl,m | which both can be calculated using the cosine
theorem. Hence, it is possible to apply standard numeric methods such as bisection to obtain the
optimal solution.

3. The optimization problem has a solution but the solution lies on one of the end points, either at
|al,m | = dmin or at |bl,m | = dmin . In this case, the LBS or the FBS are very close to either the TX or
the RX antenna. In this case, the problem is relaxed such that |cl,m | is allowed to double in order to
increase the space between scatterer and array antenna.

Copyright: Fraunhofer Heinrich Hertz Institute 105


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

Once the positions of the FBS and the LBS are known, the departure and arrival angles are updated for each
antenna element of the TX array. The arrival angles are updated using (69), (70) and (71). The depature
angles are updated using (72), (73) and (74). The phases and delays are calculated using (76) and (77)
where the new path length at snapshot s is

dr,t,l,m,s = |bt,l,m | + |cl,m | + |ar,l,m,s | (83)

LOS drifting The angles are calculated for each combination of TX-RX antenna elements based on the
position of the element in 3-D coordinates.

rr,t,s = r − et,s + er,s (84)


φdt,1,s = arctan2 {rr,t,s,y , rr,t,s,x } (85)
 
d rr,t,s,z
θt,1,s = arcsin (86)
|rr,t,s |
φar,1,s = arctan2 {−rr,t,s,y , −rr,t,s,x } (87)
 
a −rr,t,s,z
θr,1,s = arcsin (88)
|rr,t,s |

The vector rr,t,s points from the location of the TX element t to the location of the RX element r at snapshot
s. The phases and delays are determined by the length of this vector and are calculated using (76) and (77)
where dr,l,m,s is replaced by |rr,t,s |.

At this point there is a complete description of the propagation path of each MPC, i.e., the departure
direction at the TX, the positions of the scatterers, the arrival direction at the RX, the phase, as well as the
variation of these variables when the MT is moving. In the next Section, the antenna effects are included.
This covers the orientation of the antennas at the BS and the MT, as well as the polarization effects which
are closely related to the antennas.

3.5 Antennas and Polarization

One major advantage of geometry-based stochastic channel models (GSCMs) is that they allow the separa-
tions of propagation and antenna effects. Therefore, it is essential to have a description of the antenna that
captures all relevant effects that are needed to accurately calculate the channel coefficients in the model.
Antennas do not radiate equally in all directions. Hence, the radiated power is a function of the angle.
The antenna is then defined by its directional response also known as radiation pattern. When the antenna
is rotated around a fixed point, an additional variation in the amount of received power can be observed.
This variation is due to the polarization of the antenna. There are various so-called polarization bases that
can be used to describe this effect. Those different bases arise from the custom to define cross-polarization
as “the polarization orthogonal to a reference polarization” [43]. Unfortunately, this leaves the reference
polarization undefined and thus is ambiguous.

Of all the different ways to describe polarization (see [43, 56]), the polar spherical polarization basis is the
most practical for GSCMs. In the polar spherical basis, the antenna coordinate system has two angles
and two poles. The elevation angle θ is measured relative to the pole axis. A complete circle will go
through each of the two poles, similar to the longitude coordinate in the WGS. The azimuth angle φ moves
around the pole, similar to the latitude in WGS. Thus, the antenna is defined in geographic coordinates,
the same coordinate system that is used in the channel model. Hence, deriving the antenna response from
the previously calculated departure and arrival angles is straightforward. The electric field is resolved onto
three vectors which are aligned to each of the three spherical unit vectors êθ , êφ and êr of the coordinate
system. In this representation, êr is aligned with the propagation direction of a path. In the far-field of an

Copyright: Fraunhofer Heinrich Hertz Institute 106


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

antenna, there is no field in this direction. Thus, the radiation pattern consists of two components, one is
aligned with êθ and another is aligned with êφ . It is usually described by a 2-element vector

F [θ] (θ, φ)
 
F(θ, φ) = . (89)
F [φ] (θ, φ)

The complex-valued amplitude g of a path between a transmit antenna and a receive antenna is
√ 2π
g = P · Fr (φa , θa )T · M · Ft (φd , θd ) · e−j λ ·d , (90)

where Fr and Ft describe the polarimetric antenna response at the receiver and the transmitter, respectively.
P is the power of the path, λ is the wavelength, d is the length of the path, (φa , θa ) are the arrival and
(φd , θd ) the departure angles that were calculated in the previous steps. M is the 2 × 2 polarization coupling
matrix. This matrix describes how the polarization changes on the way from the transmitter to the receiver.
Many references (e.g. [27, 33, 57–59]) use an approximation of the polarization effects based on the XPR.
The XPR quantifies the separation between two polarized channels due to different polarization orientations.
M is then often modeled by using random coefficients (Zθθ , Zθφ , Zφθ , Zφφ ) as
 p 
Zθθ 1/XPR · Zθφ
M= p , (91)
1/XPR · Zφθ Zφφ

where Z ∼ exp {j · U(−π, π)} introduces a random phase. However, this does not account for all effects
contributing to the polarization state of a radio link. For example, this model does not cover elliptical or
circular polarization which depends on the phase difference between the two polarimetric components. With
the above model, the phase difference is always random. Hence, the state-of-the-art GSCMs are not well
suited for scenarios that rely on circular polarization such as land-mobile satellite scenarios.

A new approach on how to treat polarization in GSCMs is presented in this section. It is shown that
the existing framework, i.e., using radiation patterns in a polar spherical basis together with a 2 × 2
polarization coupling matrix, has great similarities with the Jones calculus, a method for handling polarized
electromagnetic waves in the field of optics [36]. In the Jones calculus, the changes of the polarization of a
electromagnetic wave are described by successive linear transformations. The same approach is used for the
new channel model.

3.5.1 Relation between the Polarization Model and the Jones Calculus

R. C. Jones invented a simple method to calculate polarization effects in optics [36]. In his work, he described
the polarization state of a ray of light by the so-called Jones vector. Any object that changes the polarization
of the light is represented by a 2 × 2 Jones matrix. It was found that the product of the Jones matrix of the
optical element and the Jones vector of the incident light accurately describes the polarization state of the
resulting ray. Generally, this calculus can be used for any electromagnetic wave. It is especially interesting
for the GSCMs such as the SCM and WINNER models where the paths are handled similarly like optical
rays.

In the Jones calculus, the Jones vector contains the x and y-polarized components of the amplitude and
phase of the electric field traveling along the z-direction.

Ax ejx
     [θ] 
Ex (t) jωt J
=e · j = =J (92)
Ey (t) Ay e y
J [φ]
| {z }
Jones vector

The same expression is found in the antenna pattern (89) where the complex value Ay ejy from the Jones
vector can be identified with the (generally also complex-valued) component F [θ] (θ, φ) of the antenna pattern.

Copyright: Fraunhofer Heinrich Hertz Institute 107


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

Likewise, Ax ejx can be identified with F [φ] (θ, φ). This implies that the polarization coupling matrix M in
(140) is a Jones matrix and that the Jones calculus could be easily integrated into the new channel model.

In general, M can be seen as a transformation operation that maps the incoming signal on the polarization
plane to an outgoing signal. If the coefficients are real-valued, then linear transformations, such as rota-
tion, scaling, shearing, reflection, and orthogonal projection as well as combinations of those operations, are
possible. If the coefficients are complex-valued, then the matrix shows characteristics of a Möbius transfor-
mation. Such transformations can map straight lines to straight lines or circles and vice versa. Since the
Jones calculus allows the use of complex-valued coefficients, it can transform linear polarized signals into cir-
cular or elliptical polarized signals and elliptical polarized signals into linear polarized signals. This implies
that using (91) with complex-valued coefficients results in a completely random polarization behavior when
the XPR is small, i.e., when the off-diagonal elements are large. When XPR is large (and the off-diagonal
elements are close to zero), then (91) describes a scaling operation.

In the next section, M will be calculated explicitly for the LOS and NLOS components also taking the
orientation of the antennas into account. For the NLOS components, additional operations are used to
convert the XPR value from the parameter tables into Jones matrices for the linear and elliptical polarization
component.

3.5.2 Changing the Orientation of Antennas

The antennas are defined in their local coordinate system which is fixed when the radiation patterns are
generated either by measurements or by designing the antennas using special software tools. In the channel
model, orientation changes of the antennas are desirable in many cases, e.g., when tilting BS arrays or
changing the orientation of mobile terminals. However, such orientation changes lead to a different radiation
pattern. An example is depicted in Figure 11. The left side of the figure shows an ideal dipole radiation
pattern that has only an F [θ] component. When the dipole gets rotated around the x-axis in Cartesian
coordinates, the resulting radiation pattern will also have an F [φ] component and the F [θ] component is
deformed. This is illustrated on the right side of the figure where the dipole is tilted by 20°. The following
method shows how an existing antenna pattern can be manipulated in order to change the orientation of
the antenna. Such manipulations need to take the polarization into account. It is shown that it is possible
to describe this process by a 2 × 2 linear transformation, i.e., a Jones matrix. Hence, the following method
is used in the new channel model to adjust the orientation of the antennas either at the BS or at the MT
by using the matrix M in (140). This makes the new model more flexible. For example, it is possible to
use realistic radiation patterns at the MT, e.g., the measured patterns from a smartphone. Then, typical
orientations of the phone can be incorporated during the runtime of the channel model, e.g., a user holding
the phone close to the ear at a 45° angle.

When the orientation of an antenna changes, the radiation pattern has to be read at different angles (Θ,
Φ) that include the effect of the orientation change. Rotations in 3-D are easier described in Cartesian
coordinates. Therefore, the original angle pair (θ, φ) is transformed into a vector c that describes the arrival
or departure angles in Cartesian coordinates. The three vector elements represent the x,y and z-component.
 
cos θ · cos φ
c =  cos θ · sin φ  (93)
sin θ

A 3×3 matrix R can now be used to describe the orientation change in 3-D space. The example in Figure 11
was tilted by 20° around the x-axis of the coordinate system. The corresponding matrix is
 
1 0 0
Rx (20◦ ) =  0 cos(20◦ ) − sin(20◦ )  . (94)

0 sin(20 ) cos(20 ) ◦

Copyright: Fraunhofer Heinrich Hertz Institute 108


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

Dipole antenna, 0° tilt Dipole antenna, 20° tilt


vertical pattern

z z

x y x y

horizontal pattern

z z

x y x y

-20 -15 -10 -5 0


Attenuation [dB]

Figure 11: Example patterns for a dipole antenna

The orientation change is included in the vector c+ by multiplying R with (93).

c+ = RT · c (95)

The transformed pattern F̃ is needed in spherical coordinates. Thus, c+ is transformed back to spherical
coordinates. This results in the new angles

Θ = arcsin c+
 
, (96)
z + + 
Φ = arctan2 cy , cx . (97)

c+ + + +
x , cy and cz are the x, y and z component of c , respectively. The coefficients of the rotated pattern are
now obtained by reading the original pattern F at the transformed angles.
 [θ]   [θ] 
F̂ F (Θ, Φ)
F̂ = = (98)
F̂ [φ] F [φ] (Θ, Φ)

Since the patterns are usually sampled at a fixed angular grid, e.g., at one degree resolution, interpolation
is needed here since the transformed angles (Θ, Φ) will usually not be aligned with the angular grid. Linear
interpolation can be used as a standard computationally inexpensive procedure.

The second step takes the polarization into account. The antenna patterns are defined in a polar-spherical
polarization basis. However, the rotation is defined in Cartesian coordinates. Thus, the polarization rotation
needs to be done in the Cartesian polarization basis as well. The transformation from the polar-spherical
polarization basis to the Cartesian polarization basis is given by [43]

F̂ [x]
   
sin Θ cos Φ − sin Φ  [θ] 
 F̂ [y]  =  sin Θ sin Φ cos Φ  · F (Θ, Φ) . (99)
F [φ] (Θ, Φ)
F̂ [z] − cos Θ 0 | {z }
| {z }
=F̂
=T(Θ,Φ)

Copyright: Fraunhofer Heinrich Hertz Institute 109


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

The transformation matrix T(Θ, Φ) is both orthogonal and normalized to unity. Hence, the inverse trans-
formation matrix is equal to the matrix transpose. The rotated pattern F̃ is obtained by using the pattern F̂
and transforming it to a Cartesian polarization basis. Then, this pattern is rotated using the rotation matrix
R and the resulting pattern is transformed back to the polar-spherical basis. The inverse transformation
needs to be done at the original angles (θ, φ) because the rotated antenna pattern F̃ is aligned with the GCS
used in the channel model.
F̃ = T(θ, φ)T · R · T(Θ, Φ) ·F̂ (100)
| {z }
=M̃

The entire process can be described by a 2 × 2 polarization rotation matrix M̃. The radiated energy in both
polarization components remains constant. Hence, this matrix is a rotation matrix having the form
 
cos ϑ − sin ϑ
M̃(ϑ) = , (101)
sin ϑ cos ϑ

where the polarization rotation angle ϑ follows from


 T  
sin θ cos φ sin Θ cos Φ
cos ϑ =  sin θ sin φ  · R ·  sin Θ sin Φ  , (102)
− cos θ − cos Θ
 T  
− sin φ sin Θ cos Φ
sin ϑ =  cos φ  · R ·  sin Θ sin Φ  , (103)
0 − cos Θ
ϑ = arctan2 [sin ϑ, cos ϑ] . (104)

This method provides a straightforward way to change the orientation of the antennas by

1. reading the antenna patterns at different angles (Θ, Φ) that include the orientation change,
2. calculating the polarization rotation matrix M̃, and
3. using both to calculate the channel coefficient g in (140).

3.5.3 Constructing the Polarization Transfer Matrix

In this section, the orientation changes for the BS and MT side are combined. For the NLOS components,
additional changes of the polarization are caused by scattering. The Jones calculus allows each of these
effects to be modeled independently. In the end, the combined Jones matrices are used to calculate the
channel coefficients.

Polarization of direct (LOS) path In the LOS polarization model, both the transmitter and the receiver
can have different orientations, e.g., due to a downtilt at the BS and a given movement direction at the MT.
In addition, a reflection operation is needed to transform the outgoing direction at the transmitter into an
incoming direction at the receiver. Thus, a combination of three linear transformations, two rotations and
one reflection, is sufficient to construct the polarization transfer matrix of the LOS path.10
h  iT  1 0   
[LOS] [LOS] [LOS]
Mr,t,s = M̃ ϑr,s · · M̃ ϑt,s
0 −1
! !
[LOS] [LOS] [LOS] [LOS]
cos ϑr,s − sin ϑr,s cos ϑt,s − sin ϑt,s
= [LOS] [LOS] · [LOS] [LOS] (105)
− sin ϑr,s − cos ϑr,s sin ϑt,s cos ϑt,s

10
The indices denote the RX antenna element (r) and the TX antenna element (t), the path number (l), the sub-path number
(m), and the snapshot number (s).

Copyright: Fraunhofer Heinrich Hertz Institute 110


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

Model for the indirect (NLOS) paths For the NLOS components, the transmitted signal undergoes some
diffraction, reflection or scattering before reaching the receiver. Following the common Fresnel formula in
electrodynamics, the polarization direction can be changed at the boundary surface between two dielectric
media. T. Svantesson [60] provided a method for modeling the polarization of a reflected wave where the
polarization coupling is a function of several geometric parameters such as the orientation of the scatterers.
However, these parameters are not generally available in the SCM. In addition to that, only metallic reflec-
tions keep the polarization unchanged. Reflections at dielectric media can cause changes of the polarization
being a function of the complex-valued dielectric constant of the media and of the angle of incidence. Hence,
not only the polarization angle might change, but also the polarization type. In order to address this issue,
studies of the polarizations effects in individual scattering clusters in several outdoor- and indoor scenarios
were done [37, 61, 62]. The published results indicate that scattering preserves the polarization in many
cases. However, since only the powers of the elements in the polarization coupling matrix were analyzed, no
conclusions can be drawn on how elliptic the polarization of the scattered wave will be.

It is possible to use the existing values for the XPR from the parameter tables of state-of-the-art GSCMs
and derive additional Jones matrices in order to include the already known effects in the new channel model.
The cross polarization ratio (XPR) is calculated from measurement data. A log-normal distribution is fitted
to the measurement results having the average XPRµ and the STD XPR2σ . When those parameters are
calculated from measured data, they are usually averaged over different propagations paths. Thus, the
XPR value from the parameter tables is a LSP with a scenario-dependent distribution, i.e., it depends on
[dB]
the positions of the MT. However, here, the values XPRl,m for individual MPCs are needed. Those are
[LSP]
calculated in two steps. First, a value XPRµ is drawn from

XPR[LSP] = N XPRµ , XPR2σ .



µ (106)

This value represents the average XPR over all MPCs at the receiver positions. Then, in a second step,
[LSP]
the XPR for the individual MPCs is drawn using XPRµ instead of XPRµ . This maintains the original
spread XPRσ in the generated channel coefficients.
 
[dB]
XPRl,m = N XPR[LSP]µ , XPR 2
σ (107)

Following the idea that the polarization coupling matrix M can be described by a combination of linear
transformations, the model for the NLOS polarization maps the XPR to two Jones matrices, one for the
linear polarization and one for the elliptic polarization. Additional deterministic components take the
antenna orientations into account.

1. Deterministic part
The deterministic component is the same as for the LOS polarization, i.e., the different orientations
of the antennas at the transmitter and the receiver are modeled by a rotation matrix as described in
Section 3.5.2. A reflection operation is used to change the direction of the path.

2. Linear component
During scattering, the linear polarization of a MPC might change. For example, a transmit antenna
sends a vertically polarized wave which only oscillates in the êθ direction. Then, a receiver might
detect a wave that oscillates in both the êθ direction and êφ direction because scattering changed the
polarization angle while the phases of the êθ and êφ components remain unchanged. In other words,
a linear polarized wave stays linear polarized. In order to model this polarization change, the XPR of
a path (107) is mapped to a rotation matrix. This was also suggested by [34].
   
[linear] mθθ mθφ cos γ l,m − sin γ l,m
Ml,m = = (108)
mφθ mφφ sin γ l,m cos γ l,m

Copyright: Fraunhofer Heinrich Hertz Institute 111


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

Following the notations in [33], the rotation angle γ is calculated as


|mθθ |2 |mφφ |2 (cos γ l,m )2
XPRl,m = = = = (cot γ l,m )2 , (109)
|mφθ |2 |mθφ |2 (sin γ l,m )2
p 
γ l,m = arccot XPRl,m . (110)

3. Elliptical component
When channel measurements are done with circular polarized antennas such as in land-mobile satel-
lite scenarios [19], there is a very clear indication that scattering alters the phase between the two
polarization components. In other words, a purely left hand circular polarized (LHCP) signal can be
received with a right hand circular polarized (RHCP) antenna after scattering. There might also be
a transformation from linear to elliptic polarization and vice versa. This is not covered well by the
existing GSCMs. The commonly used approach in (91) creates a random phase difference between the
polarization components. As a result, all paths have a (random) elliptic polarization and there is no
way to adjust the XPR for circular polarized antennas. This is addressed in the new model by adding
elliptic polarization using an additional Jones matrix. The phase difference between the êθ and êφ
component is obtained by a scaling matrix
 
[elliptic] exp(jκl,m ) 0
Ml,m = . (111)
0 exp(−jκl,m )
The phase shift κ is calculated using the XPR from (106) and an additional random component for
each cluster.
 
[dB]
XPRl = N XPR[LSP]
µ , XPR2σ (112)
p 
κl = arccot XPRl (113)
Hence, the per-cluster circular XPR is different from the per-cluster linear XPR, but all subpaths get
an identical circular XPR, whereas the linear XPR differs from subpath to subpath. In this way, the
same XPR can be calculated from the channel coefficients at the output of the model when using
circular polarized antennas.

The polarization for the NLOS paths is a combination of five linear transformations. First, any change in the
transmitter orientation is included by a rotation matrix M̃ (ϑt,l,m,s ). Then, the influence of the scattering
cluster is modeled by a combination of three operations: a scaling operation that introduces a phase shift
between the vertical and horizontal component to obtain an elliptic XPR, a reflection operation, and a
rotation operation to obtain the desired linear XPR. Last, the change in the receiver orientation is included
by a second rotation matrix M̃ (ϑr,l,m,s ). The complete polarization transfer matrix is
iT  
[NLOS]
h
[linear] 1 0 [elliptic]
Mr,t,l,m,s = M̃ (ϑr,l,m,s ) · Ml,m · · Ml,m · M̃ (ϑt,l,m,s ) (114)
0 −1
The equation can be simplified by combining the first three operations into one.
+
γl,m = ϑr,l,m,s − γl,m (115)
!
+ +
− sin γl,m
 
[NLOS] cos γl,m exp(jκl,m ) 0 cos ϑt,s − sin ϑt,s
Mr,t,l,m,s = + +
− sin γl,m − cos γl,m 0 exp(−jκl,m ) sin ϑt,s cos ϑt,s
In the channel model, the polarization effects and the antenna patterns are combined into a single channel
coefficient
[1]
g r,t,l,m,s = Fr (Θar,l,m,s , Φar,l,m,s )T · Mr,t,l,m,s · Ft (Θdt,l,m,s , Φdt,l,m,s ), (116)
where the angle pairs (Θd , Φd ) and (Θa , Φa ) include the orientation of the transmit antenna element t and
receive antenna element r, respectively. Contrary to (140), the phase ψ (which results from the path length)
and the path power P are not included yet. They are handled separately in the next section when the
sub-paths were combined into paths.

Copyright: Fraunhofer Heinrich Hertz Institute 112


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

3.6 Combining Sub-Paths into Paths

Sub-paths were introduced in Section 3.3 in order to emulate fading for the NLOS MPCs over time. Each
path is split into (typically 20) sub-paths. The basic assumption is that sub-paths cannot be resolved in
the delay domain but have a small angular spread. Each of the sub-paths gets initialized with a random
phase ψ 0 . In addition, a deterministic phase component ψ r,l,m,s is obtained from the total length of the
propagation path using (76). Both components are combined to

ψ+ 0

r,t,l,m,s = exp −jψ l,m − jψ r,t,l,m,s . (117)

The initial channel coefficients for each sub-path, including the polarization and antenna effects, were cal-
culated in the previous section. Here, the sub-paths are combined again to obtain the channel coefficients
for the paths. However, due to the random initial phases, a simple sum will result in a random path power
since it is impossible to predict if the phase components add up constructively or destructively. This issue
is left open in WINNER and 3GPP-3D channel model. Here, it is solved by defining an average power
around which the path power is allowed to fluctuate. This average value is the initial path power Pl that
was calculated in Section 3.3.

In the first step, the phase (117) is combined with the initial coefficients (116) to
[2] [1]
gr,t,l,m,s = gr,t,l,m,s · ψ +
r,t,l,m,s . (118)

Then, the resulting average power is calculated for each path and each segment. Segments were introduced
in Section 3.4 as part of the user trajectory along which the LSPs don’t change much and where the scatterer
positions remain fixed. In the above equation, the channel coefficients g are given for s = 1 . . . S positions
of a segment. Next, the coefficients of the 20 sub-paths are summed up and the average path powers (40)
are applied.
20
[3] [2]
X
gr,t,l,s = gr,t,l,m,s (119)
m=1
v
S P20
u 2
u P [2]
g
u
[4]
u Pl s=1 m=1 r,t,l,m,s

[3]
gr,t,l,s u 20 ·
= u S
P [3] 2
· gr,t,l,s (120)
gr,t,l,s
t
s=1

If the resulting paths are observed over time, a characteristic fluctuation of the path power can be observed,
similar to measurements with limited bandwidth. If there is only one snapshot in a segment, the scaling
operation (120) ensures that each path gets assigned the power value from (40). The new method ensures
that the input variables given to the SSF model, i.e., the delay and angular spreads, are correctly mapped to
the channel coefficients generated by the model. This is different from the WINNER and 3GPP-3D channel
models where the sum over the subpaths produces random path powers. Hence, the new model can also
be used to create channels having specific properties, e.g., a predefined DS, to benchmark algorithms. For
example, it is possible to evaluate the throughput of a MIMO-orthogonal frequency division multiplexing
(OFDM) scheme as a function of the DS. In the next section, the remaining LSPs, i.e., the PG, the SF, and
the KF are applied to the channel coefficients.

3.7 Path Gain, Shadow Fading and K-Factor

Hata [63] presented a simple model for macro-cellular settings where the PG scales with the logarithm of
the distance d (in units of meters) between BS and terminal

PG[dB] = −A · log10 d[km] − B − C · log10 f[GHz] + X, (121)

Copyright: Fraunhofer Heinrich Hertz Institute 113


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

where A, B and C are scenario-specific coefficients that are typically determined by measurements. The
path gain exponent A often varies between values of 20 and 40, depending on the propagation conditions,
the BS height, and other factors. The shadow fading (SF) is modeled by a random variable X. However,
this variable is correlated with the distance between two points, i.e., two closely spaced MTs will experience
the same SF. A 3-D correlation model for this effect was introduced in Section 3.1 where the SF, among
other parameters, is described by a map. Combining the PG and SF results in the effective path gain
q  
[dB] [dB]
0.1 PGs +SFs
PG[eff]
s = 10 . (122)

The movement of the MT is described by a trajectory where the index s denotes a specific position on this
trajectory. Hence, the effective PG is a vector of s = 1 . . . S elements. The S values of the SF in (122) come
from the 3-D correlation model.

The Ricean K-factor (KF) describes the power difference between the LOS and NLOS components. In
the previous section, the channel coefficients were scaled by the power values Pl that were calculated in
Section 3.3.3. These power values already include the KF. However, like the SF, the KF is also spatially
correlated and depends on the positions of the transmitter and receiver. The initial power values from
Section 3.3.3 only consider the KF at the beginning of the trajectory. When the MT moves to a different
position, its KF changes and so do the power values of the MPCs. Hence, an additional scaling factor for
the path powers is needed.
s   ( qK
[scale] Ks K0 for l = 1;
s
KFl,s = 1 + P1 −1 · (123)
K0 1 otherwise.

The index l = 1 . . . L is the path number, P1 is the power of the first path that was calculated by (44), K0 is
the KF at the beginning of the trajectory, and Ks is the KF at the sth position of the user trajectory. The
values for Ks come from the KF map from Section 3.1. The channel coefficients from the previous section
(120) are then scaled to
[scale] [4]
gr,t,l,s = PG[eff]
s · KFl,s · gr,t,l,s (124)
This is the last step in the small-scale-fading (SSF) model. At this point, the complex-valued amplitude g
for each of the L MPCs of the CIR is described for all antenna pairs r, t at S positions of the user trajectory.
In addition, there is an equal amount of values for the path delays τ that were calculated in Section 3.4. In
the next section, adjacent parts of the user trajectory (i.e., the segments) get merged into an even longer
sequence of channel coefficients. With this, channels can be observed over long periods of time which includes
transitions between propagation scenarios, e.g., when a MT moves from outdoors to indoors.

3.8 Transitions between Segments

The small-scale-fading (SSF) model, which is laid out in the previous Sections 3.3 is only defined for a short
part of a MT trajectory. If the MT traverses larger distances, the LSPs will change when the terminal sees
different scattering clusters. Hence, in order to include long terminal trajectories in the model, there needs
to be a model for the “birth and death of scattering clusters”. One idea on how to include such a process
in GSCMs comes from the WINNER II model [4] where paths fade in and out over time. However, [4] does
not provide a method to keep the LSPs consistent. For example, if one cluster disappears and a new on
appears in its place, the delay and angular spread of the channel changes. However, those values are fixed
by LSF model.

For the single-mobility case (i.e., only the RX is allowed to move, but the TX is fixed), long terminal
trajectories are split into shorter segments where the LSPs are reasonably constant. Then, for each segment
the small-scale-fading (SSF) model creates independent scattering clusters, channel coefficients, and path
delays. Two adjacent segments are overlapping as depicted in Figure 12. The lifetime of scattering clusters

Copyright: Fraunhofer Heinrich Hertz Institute 114


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

2
nt
me
seg
overlapping part
1
ent
segm merging area initial Rx pos.
(variable length) segment 2
Rx track

initial Rx pos.
segment 1

Figure 12: Illustration of the overlapping area used for calculating the transitions between segments

is confined within the combined length of two adjacent segments. In the overlapping part, the power of
paths from the old segment is ramped down and the power of new paths is ramped up. Hence, this process
describes the birth and death of scattering clusters along the trajectory. All paths of the segment are
active outside the overlapping region. The overlapping region is further split into sub-intervals to keep the
computational and memory overhead of the model low. During each sub-interval, one old path ramps down
and one new path ramps up. The power ramps are modeled by a squared sine function
π 
w[sin] = sin2 · w[lin] . (125)
2
Here, w[lin] is the linear ramp ranging from 0 to 1, and w[sin] is the corresponding sine-shaped ramp with a
constant slope at the beginning and the end. This prevents inconsistencies at the edges of the sub-intervals.
If both segments have a different number of paths, the ramp is stretched over the whole overlapping area for
paths without a partner. For the LOS path, which is present in both segments, only power and phase are
adjusted. Paths are carefully matched to minimize the impact of the transition on the instantaneous values
of the LSPs. For example, the DS increases if a path with a small delay ramps down and a similarly strong
path with a large delay ramps up. Hence, the DS can fluctuate randomly within the overlapping region. To
balance this out, paths from both segments are paired in a way that minimizes these fluctuations. This is
done by determining the values of the DS before and after the transition. Then, a target DS is calculated
for each sub-interval. For example, if the old segment yields a DS of 200 ns and the new segment has
400 ns, then the target DS will be 220 ns for the first sub-interval, 240 ns for the second and so on. Then,
a combination of paths is searched that best matches the target DS for each sub-interval.

For the dual-mobility case, there are two trajectories describing both ends of the communication link, one
for the RX and one for the TX. Both tracks must have the same number of snapshots and each snapshot
on the RX track is paired with a snapshot on the TX track. This is illustrated in Figure 13. As for the
single-mobility case, there is a birth-death process for the scattering clusters which requires the definition
of segments and overlapping parts of a trajectory. However, this needs to be consistent for both sides of
the communication link. For example, it is not possible that the TX is in LOS and the RX is in NLOS
conditions. They either see each other, or not. For this reason, segments are only defined for the RX
track. The TX track then “inherits” the segmentation. For example, when the RX track defines a new LOS
segment at snapshot 22 as illustrated in Figure 13, then the TX would also start a new segment at snapshot
22 of its own track and it would also inherit the scenario definition, i.e., the new TX segment would also be
a LOS segment.

3.9 Ground Reflection

As the name implies, the ground reflection (GR) is a deterministic MPC that can be received by a MT which
is in direct LOS to the BS. The electromagnetic properties of the ground and the small angle of incidence
usually lead to a significant part of the energy being reflected. The two paths interfere with each other,

Copyright: Fraunhofer Heinrich Hertz Institute 115


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

inherited initial Tx pos. of segment 2


2
nt
me
seg

1
Tx track
e nt
m overlapping part initial Rx pos.
seg segment 2
Rx track initial Rx pos. segment 1

Figure 13: Illustration of the snapshot coupling in dual-mobility simulations

causing a deterministic fading pattern. At frequencies below 6 GHz, this fading occurs only close to the BS
and the distance between successive “fades” can be up to several dozen meters. Hence, GR fading was often
identified as SF in past measurements and models. However, at mm-wave frequencies this effect is critical.
The distance between fades can fall below 1 m and the signal strength might suddenly drop by up to 20 dB.
Communication systems operating at these frequencies will also likely use narrow beams directed towards
the user, but the delay and angle differences between the two components are too small to be resolved.
Hence, the fades effect several GHz of bandwidth and they cannot be suppressed by beamforming. This has
been confirmed by measurements at 60 GHz, where severe GR fading occurred in all measured scenarios
[64, 65].

The current approach is to model this effect by a dual-slope PL model [24, 66]. At close distances between
the TX and the RX, the PL is similar to the free-space loss and GR fading is approximated by additional
SF. However, after a certain distance, the GR interferes destructively with the direct path which leads to an
increased PL. The transition point between the two slopes, the so-called break point (BP), depends on the
TX and RX heights and on the carrier frequency. The higher the carrier frequency is, the further away is
the BP. At mm-wave frequencies, the BP distance is several hundred meters from the TX which means that
UMi deployments with typical cell sizes below 200 m will have to cope with the fast fading effects caused
by the GR.

It is possible to add a single ground reflection (GR) that dominates the multipath effect [67] to the model
[13]. If the height of the RX is small compared to the distance between TX and RX, it will be difficult to
resolve the GR in the delay domain. For example, in a typical UMi scenario with a TX height of 10 m, a
RX height of 1.5 m and a TX-RX distance of 30 m, there are only 3.2 ns between the direct path and the
reflected path. It would require more than 300 MHz of bandwidth to resolve both paths. It’s power, delay,
departure and arrival angles, and polarization can be explicitly calculated as described in the remainder of
this section.

3.9.1 Path-Powers and Path-Delays

In order to incorporate the ground reflection, an additional path, having the delay τGR and power PGR , is
added to the already defined paths with delays (47) and path powers (45). It is common to use relative
instead of absolute delays. Hence, the delay of the GR is calculated by
q q
(hTX + hRX )2 + d22D − (hTX − hRX )2 + d22D
τGR = , (126)
c
where c is the speed of light. The power of the reflected path depends on the reflection coefficient Rf which
varies depending on the carrier frequency, the polarization of the incident wave and the electromagnetic
properties of the ground. Hence, the reflected power is a function of the carrier frequency.
Rf2
PGR,f = · P1,f (127)
2

Copyright: Fraunhofer Heinrich Hertz Institute 116


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

A detailed discussion of the reflection coefficient is given in Section 3.9.4. In order to obtain the correct
angle and delay spreads, the power of the LOS component must be adjusted to keep the normalization (45)
of the path powers. !
Rf2
PLOS,f = 1 − · P1,f (128)
2
Since the reflected path has a later delay compared to the LOS path, the DS is altered. This can be corrected
by multiplying the NLOS delays with a scaling coefficient Sτ . This coefficient is calculated from
L L
!2
X 2
X
2 2 2
στ = PGR,f · τGR + Sτ · Pl,f · (τl ) − PGR,f · τGR + Sτ · Pl,f · τl (129)
l=2 l=2

by using the initial DS στ that was also used to calculate the delays in (47). Then, the final path-delays
and path-powers are
 
τl = 0 τGR Sτ τ2 . . . Sτ τL , (130)
 
Pl = PLOS PGR P2 . . . PL . (131)
In the next step, the departure and arrival angles are updated in a similar way to account for the GR path.

3.9.2 Departure and Arrival Elevation Angles

In the second step, the departure and arrival angles of the ground reflection are incorporated. Four such
angles are typically defined in GSCMs: the azimuth angle of departure (AoD), the azimuth angle of arrival
(AoA), the elevation angle of departure (EoD), and the elevation angle of arrival (EoA). Since the azimuth
angles of the GR path are identical with the LOS path and the sum-power of the LOS and GR path does
not change due to (127) and (128), only elevation angles need to be considered here.
d2D
BS θ LOS
d

θ GR
d

r
θ LOS
a
hBS

MT
rGR θ a
GR
hMT

θr θr
hMT

Figure 14: Illustration of the angles and vectors used for the calculations

As can be seen in Fig. 14, the elevation angle difference between the direct and the reflected path might
be more significant than the delay difference. As for the path-powers and the path-delays, the angles of
the NLOS paths are calculated in the channel models by (52) to achieve a predefined AS σθ measured in
radians. The positions of the TX and RX are deterministic and so are the angles of the LOS component.
The values of the angles need to be corrected to incorporate this position.
 
d hTX − hRX
θLOS = − arctan (132)
d2D
 
a d hTX − hRX
θLOS = −θLOS = arctan (133)
d2D

Copyright: Fraunhofer Heinrich Hertz Institute 117


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

d/a
θLOS is the departure / arrival angle of the LOS component. The elevation angles for the GR path are
deterministic as well.  
d a hTX + hRX
θGR = θGR = − arctan (134)
d2D
As for the DS, the additional GR path changes the elevation angular spread, both at the TX and the RX.
Hence, the angles of the other NLOS paths need to be corrected as well in order to achieve the given AS
values σθd and σθa .

The AS σθ is defined similar to the DS where the angles get weighted by the path power [68]. However, this
measure of the AS is ambiguous since the angles are distributed on a circle and the resulting value depends
on the reference angle, i.e., the definition of where 0° is. A linear shift θl + ∆θ then leads to the AS being a
function of ∆θ . In the 3GPP SCM [55], this was solved by an exhaustive search over ∆θ ∈ [−π, π[ to find
the minimum AS
σθ = min σθ (∆θ ). (135)
∆θ

Another, more efficient, approach is to normalize the angles such that the combined power-angular spectrum
(PAS) of all paths points to θ = 0. This normalization is done by

θ̃l = (θl − ∆θ + π mod 2π) − π, (136)


L
!
X
∆θ = arg Pl · exp (jθl ) , (137)
l=1

where θ̃l are the normalized angles and Pl are the power values from (131). Then, the AS can be obtained
by v
u L L
!2
uX  2 X
σθ = t Pl · θ̃l − Pl · θ̃l . (138)
l=1 l=1

Unfortunately, due to the normalization and the modulo operation, there is no closed form expression that
can be used to calculate a scaling coefficient that corrects the angles of the NLOS paths. Hence, numerical
methods must be used to determine Sθ . The updated angles then are
h i
θl = θLOS θGR Sθ θ2[2] + θLOS . . . Sθ θL [2]
+ θLOS . (139)

In the next step, the polarization state of the GR path is determined. This takes the dependence of the
reflection coefficient on the polarization of the incident wave into account.

3.9.3 Polarization

The complex-valued amplitude g of a path between a transmit antenna and a receive antenna is
√ 2π
g = P · Fr (θa , φa )T · M · Ft (θd , φd ) · e−j λ ·d , (140)

where Fr and Ft describe the polarimetric antenna responses at the receiver and the transmitter, respectively
(see Section 3.5). P is the path power from (131), λ is the wavelength, d is the length of the path, (θa , φa )
are the arrival and (θd , φd ) the departure angles from the previous step. M is the 2 × 2 polarization coupling
matrix. The LOS polarization is given by
− 12
R2
  
1 0
MLOS = 1− · exp (jψLOS ) · . (141)
2 0 −1

Copyright: Fraunhofer Heinrich Hertz Institute 118


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

In this equation, the normalization (128) is removed. The 2 × 2 matrix can be interpreted as a reflection
operation that transforms the outgoing direction of a path at the transmitter into an incoming direction at
the receiver. The phase of the LOS path is

q
ψLOS = (hTX − hRX )2 + d22D , (142)
λ
with λ being the carrier frequency wavelength. For the reflected path, the generally complex-valued, reflec-
tion coefficients Rk and R⊥ are applied to the channel coefficients.
√  
2 Rk 0
MGR = · exp (jψGR ) · . (143)
R 0 −R⊥

The factor R2 reverses the power scaling of the reflected path in (127) as well. Hence, the power of the GR
path is effectively added to the CIR. However, at close BS-MT distances, the GR causes rapidly alternating
constructive and destructive interference around the average signal power which leads to incorrect results if
the normalization is maintained. The phase of the GR path is

q
ψGR = (hTX + hRX )2 + d22D (144)
λ
Note that for dielectric materials (i.e., common ground materials), the reflection coefficients generally have
negative values. Hence, there is a 180° shift between the phases the direct path and the GR path in most
of the cases. In the next section, the values of the reflection coefficient are discussed.

3.9.4 Reflection Coefficient

The reflection coefficient is a function of the electromagnetic properties of a material. The complex-valued
relative permittivity is given by
σ 17.98 · σ
 = r − j ≈ r − j [GHz] , (145)
2π · fc · 0 fc
where r is the relative permittivity and σ is the conductivity of the material. The reflection coefficients for
the two polarizations are then calculated to [67, 69]
 · sin θr − Z sin θr − Z
Rk = R ⊥ = (146)
 · sin θr + Z sin θr + Z
p
Z =  − cos2 θr (147)
q 2
R = 0.5 · Rk + 0.5 · |R⊥ |2 (148)
 
r d hTX + hRX
θ = −θGR = arctan . (149)
d2D
θr is the angle between the ground and the reflected path (see Fig. 14). An illustration of the magnitude of
the reflection coefficient for a value of  = 5 is illustrated in Fig. 15. The average coefficient R2 is shown as
a thick black line. This value was used in (127), (128) to correct the influence of the GR path on the delay
and angular spreads. The figure also shows that there is a point where only horizontally polarized waves
are reflected. In optics, this corresponds to Brewster’s law.

In a typical radio-propagation scenario, the values of the relative permittivity and the conductivity are
frequency-dependent. A general guideline on how to model this dependency has been provided by [69],
where  B  D
r = A · fc[GHz] σ = C · fc[GHz] . (150)
[5] published curves for different ground materials. These curves have been fitted to the above model for
the range from 6 to 100 GHz (see Table 36). We propose to randomly choose one of the three ground types
(very dry, medium dry and wet) to determine the value of the reflection coefficient.

Copyright: Fraunhofer Heinrich Hertz Institute 119


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

1
0.9

2
Power of Reflected Path R
0.8
0.7
0.6
0.5
0.4
0.3 V-Pol. (R||2)
0.2 H-Pol (R⊥2)
0.1 Average (R2)
0
0 1 2 3 4
10 10 10 10 10
Distance d2Din [m]

Figure 15: Values of the reflection coefficients for  = 5

Table 36: Electrical Properties of the Environment, 6-100 GHz [5]


Rel. permittivity Conductivity
Material A B C D
Very dry ground 3 0 0.003 1.34
Medium dry ground 30.4 -0.47 0.18 1.05
Wet ground 31.3 -0.48 0.63 0.77

3.10 Summary

A new channel model has been derived from existing GSCMs such as the WINNER and 3GPP-3D model.
The LSF and SSF parts of the model have been extended in several ways in order to overcome some
drawbacks and limitations of the state-of-the-art approaches. The main problems that were addressed by
these modifications are:

• Spatial consistency of LSPs


3GPP does not specify a method to generate spatially consist random variables, neither for the LSF
nor SSF model. In QuaDRiGa, a sum-of-sinusoids approach is used to correlate all random variables
with the distance between two points.

• Consistency between LSF and SSF model


The WINNER and 3GPP models do not map large-scale parameters to channel coefficients. They are
only correct in a statistical sense. This is changed QuaDRiGa by additional scaling operations for the
delays, angles, and powers after combining the sub-paths. As a result, the correct delay and angular
spreads can be calculated from the generated channel coefficients of the model.

• Mobility of MTs
The WINNER and 3GPP models do not allow MTs to move more than a few meters because there
is no method to track the delays and directions of a path. Only the Doppler shifts of the MPCs are
modeled. The mobility extensions made in QuaDRiGa are two-fold: First, a concept known as drifting
[26] was added to the SSF model. Second, a model for the appearing and disappearing of scattering
clusters was added. This is done by splitting a user trajectory in short overlapping segments. When
the terminal moves from one segment to the next, the scattering clusters from the old segment are
smoothly replaced with clusters from the new segment while keeping the LSPs consistent.

• Polarization
The WINNER and 3GPP models do not correctly model elliptical and circular polarization. Therefore,
a new model for the polarization was derived from the Jones calculus [36]. In this approach, changes

Copyright: Fraunhofer Heinrich Hertz Institute 120


eMail: [email protected]
QuaDRiGa v2.2.0 3 TECHNICAL DOCUMENTATION

of the polarization during scattering are modeled by successive linear transformations, allowing linear
and elliptic polarization to be adjusted independently.

With these updates, it is possible to generate channel coefficients with the same spatial and temporal
resolution as measured data. Thus, the output of the channel model can be directly compared to the output
of a measurement campaign.

Copyright: Fraunhofer Heinrich Hertz Institute 121


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

4 Tutorials

This section provides a set of tutorials on how to use the channel model for different channel simulation
purposes. For each of the following examples, the source code can be found in the ”tutorials” folder.

4.1 The Most Common Mistake: Handles

This tutorial illustrates the most common mistake that new users of the QuaDRiGa channel model of-
ten make. QuaDRiGa is implemented in MATLAB / Octave using the object-oriented framework. All
QuaDRiGa objects are ”handles”. That means that a variable created from a QuaDRiGa class can be re-
garded as a ”pointer” to the associated data in the computer memory. This enables a very memory-efficient
implementation, for example, if all mobile terminals use the same antenna. In this case, the antenna pattern
only needs to be stored once in the memory and each MT only needs to store the ”pointer” to the antenna
and not a copy of the data. However, working with ”handles” is something that many MATLAB users are
unfamiliar with.

In the following simple example, a layout with two base stations is created. Each BS is equipped with a
high-gain antenna which is tilted by 12 degrees. The antenna of the second BS is rotated by 180 degrees so
that the antennas point towards each other. WARNING: The following code will not create the intended
result. Try to find the mistake!
1 clear all
2
3 a = qd_arrayant ( ’ multi ’ , 8 , 0.5 , 12 ) ; % G e n e r a t e High - Gain Antenna
4
5 l = qd_layout ; % New layout
6 l . no_tx = 2; % Two BSs
7 l . tx_position (: ,1) = [ -200 ; 0 ; 25 ]; % P o s i t i o n of BS 1
8 l . tx_position (: ,2) = [ 200 ; 0 ; 25 ]; % P o s i t i o n of BS 2
9
10 l . tx_array (1 ,1) = a ; % Assign antenna to BS1
11 l . tx_array (1 ,2) = a ; % Assign antenna to BS2
12 l . tx_array (1 ,2) . r otate_p attern ( 180 , ’z ’ ) ; % Rotate BS2 antenna by 180 degree

Here we create a plot of the layout including the sum-power that would be received by a MT at each position
of the layout. You will see that the antenna of the first BS points in the wrong direction. It should point
towards the east (right), but it points to the west (left).
1 close all
2
3 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
4 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
6 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
8 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
9 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Default Paper Size
10
11 [ map , x_coords , y_coords ] = l . power_map ( ’3 GPP_38 .901 _UMa_LOS ’ , ’ quick ’ ,5 , -500 ,500 , -500 ,500 ,1.5 ) ;
12 P = 10* log10 ( sum ( abs ( cat (3 , map {:}) ) .^2 ,3) ) ; % Total r e c e i v e d power
13
14 l . visualize ([] ,[] ,0) ; % Show BS and MT p o s i t i o n s on the map
15 hold on
16 imagesc ( x_coords , y_coords , P ) ; % Plot the r e c e i v e d power
17 hold off
18 axis ([ -500 500 -500 500]) % Plot size
19 caxis ( max ( P (:) ) + [ -20 0] ) % Color range
20 colmap = colormap ;
21 colormap ( colmap *0.5 + 0.5 ) ; % Adjust colors to be " lighter "
22 set ( gca , ’ layer ’ , ’ top ’) % Show grid on top of the map
23 title ( ’ Incorrect antenna orientation ’) ; % Set plot title

Copyright: Fraunhofer Heinrich Hertz Institute 122


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Incorrect antenna orientation


500
Tx-Position
Tx-Antenna
400 Tx-Track
Rx-Position
300 Rx-Antenna
Rx-Track
200
y-coord in [m]

100

-100

-200

-300

-400

-500
-500 0 500
x-coord in [m]

The problem is the assignment of the antenna pattern. ”a”, ”l.tx array(1,1)” and ”l.tx array(1,2)” point to
the same object. When the rotation operation ”l.tx array(1,2).rotate pattern” is called, the data in memory
is changed. However, ”a” and ”l.tx array(1,1)” point to the same object and, therefore, their properties are
now changed too. The following example shows the correct way to do it. In stead of assigning a ”pointer”,
the ”copy” command creates a new object with the same data. The rotation operation only effects the
antenna of BS2.
1 a = qd_arrayant ( ’ multi ’ , 8 , 0.5 , 12 ) ; % G e n e r a t e High - Gain Antenna
2
3 l . tx_array (1 ,1) = copy ( a ) ; % Assign copy of the antenna to BS1
4 l . tx_array (1 ,2) = copy ( a ) ; % Assign copy of the antenna to BS2
5 l . tx_array (1 ,2) . r otate_p attern ( 180 , ’z ’ ) ; % Rotate BS2 antenna by 180 degree

The following plot shows the intended result.


1 [ map , x_coords , y_coords ] = l . power_map ( ’3 GPP_38 .901 _UMa_LOS ’ , ’ quick ’ ,5 , -500 ,500 , -500 ,500 ,1.5 ) ;
2 P = 10* log10 ( sum ( abs ( cat (3 , map {:}) ) .^2 ,3) ) ; % Total r e c e i v e d power
3
4 l . visualize ([] ,[] ,0) ; % Show BS and MT p o s i t i o n s on the map
5 hold on
6 imagesc ( x_coords , y_coords , P ) ; % Plot the r e c e i v e d power
7 hold off
8 axis ([ -500 500 -500 500]) % Plot size
9 caxis ( max ( P (:) ) + [ -20 0] ) % Color range
10 colmap = colormap ;
11 colormap ( colmap *0.5 + 0.5 ) ; % Adjust colors to be " lighter "
12 set ( gca , ’ layer ’ , ’ top ’) % Show grid on top of the map
13 title ( ’ Correct antenna orientation ’) ; % Set plot title

Copyright: Fraunhofer Heinrich Hertz Institute 123


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Correct antenna orientation


500
Tx-Position
Tx-Antenna
400 Tx-Track
Rx-Position
300 Rx-Antenna
Rx-Track
200
y-coord in [m]

100

-100

-200

-300

-400

-500
-500 0 500
x-coord in [m]

4.2 Typical driving course

This tutorial is a step-by-step walk through of the example given in section 1.6 of the documentation. A 800
m long drive course is covered by a S-band satellite. A car moves along the trajectory where it experiences
different reception conditions. The tutorial coverers:

• Setting up the trajectory


• Assigning propagation environments to different sections of the track
• Modeling stops at traffic lights
• Setting up antennas for the satellite and the car
• Generating channel coefficients
• Analyzing the received power and the cross-polarization ratio

A figure showing illustrating the scenario can be found in the documentation in Section 1.6. There are 12
significant points along the track that describe an event.

1. Start environment: Urban, LOS reception of satellite signal


2. LOS to NLOS transition
3. NLOS to LOS change
4. Turning off without change in reception condition (LOS)
5. Stopping at traffic light (LOS)
6. Turning off with change of reception condition (LOS to NLOS)
7. Crossing side street (NLOS to short LOS to NLOS)
8. Structural change in the environment without a change in the environment type (higher density of
buildings but still the environment remains urban)
9. Stopping at traffic lights (NLOS)
10. Houses have the same characteristics as before but are further away from the street (urban environment
with different reception characteristics)
11. Change of environment (Urban to Forest)
12. Turning off without change of environment (NLOS)

Copyright: Fraunhofer Heinrich Hertz Institute 124


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Setting up the trajectory The trajectory consists of 4 straight segments of 200 m, 100 m, 400 m, and 53 m
length. These segments are connected by 90 degree turns. We models these turns by arc segments having a
radius of 10 m, leading to 15.7 m length. Hence, the total track length is roughly 800 meters. The following
code example shows how the track can be created. In the last step, the track is plotted.
1 clear all
2 close all
3
4 t = qd_track ( ’ linear ’ ,200 , pi /4) ; % P1 - P4 : 200 m segment , d i r e c t i o n NE
5 t . name = ’ Terminal ’; % Set track name
6 t . i ni t i a l _ p o s i t i o n (3 ,1) = 2; % Set the Rx height to 2 meters
7
8 c = 10* exp (1 j *(135: -1:45) * pi /180) ; % P4 : Turn NE to SE , 10 m curve radius
9 c = c (2: end ) -c (1) ; % Start r e l a t i v e to [x , y ] = [0 ,0]
10 t . positions = [ t . positions ,... % Append curve to e x i s t i n g track
11 [ t . positions (1 , end ) + real ( c ) ; t . positions (2 , end ) + imag ( c ) ; zeros ( 1 , numel ( c ) ) ]];
12
13 c = 100* exp ( -1 j * pi /4 ) ; % P4 - P6 : 200 m segment , d i r e c t i o n SE
14 t . positions = [ t . positions ,... % Append segment to e x i s t i n g track
15 [ t . positions (1 , end ) + real ( c ) ; t . positions (2 , end ) + imag ( c ) ; zeros ( 1 , numel ( c ) ) ]];
16
17 c = 10* exp (1 j *( -135: -45) * pi /180) ; % P6 : Turn SE to NE , 10 m curve radius
18 c = c (2: end ) -c (1) ; % Start r e l a t i v e to [x , y ] = [0 ,0]
19 t . positions = [ t . positions ,... % Append curve to e x i s t i n g track
20 [ t . positions (1 , end ) + real ( c ) ; t . positions (2 , end ) + imag ( c ) ; zeros ( 1 , numel ( c ) ) ]];
21
22 c = 400* exp ( 1 j * pi /4 ) ; % P6 - P12 : 400 m segment , d i r e c t i o n NE
23 t . positions = [ t . positions ,... % Append segment to e x i s t i n g track
24 [ t . positions (1 , end ) + real ( c ) ; t . positions (2 , end ) + imag ( c ) ; zeros ( 1 , numel ( c ) ) ]];
25
26 c = 10* exp (1 j *(135: -1:45) * pi /180) ; % P12 : Turn NE to SE , 10 m curve radius
27 c = c (2: end ) -c (1) ; % Start r e l a t i v e to [x , y ] = [0 ,0]
28 t . positions = [ t . positions ,... % Append curve to e x i s t i n g track
29 [ t . positions (1 , end ) + real ( c ) ; t . positions (2 , end ) + imag ( c ) ; zeros ( 1 , numel ( c ) ) ]];
30
31 c = 53* exp ( -1 j * pi /4 ) ; % P12 - end : 53 m segment , d i r e c t i o n SE
32 t . positions = [ t . positions ,... % Append curve to track
33 [ t . positions (1 , end ) + real ( c ) ; t . positions (2 , end ) + imag ( c ) ; zeros ( 1 , numel ( c ) ) ]];
34
35 t . c al c _ o r i e n t a t i o n ; % C a l c u l a t e the r e c e i v e r o r i e n t a t i o n
36
37 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
38 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
39 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
40 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
41 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
42 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
43 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Default Paper Size
44
45 l = qd_layout ; % New layout
46 [~ , l . rx_track ] = interpolate ( t . copy , ’ distance ’ ,0.1 ) ; % I n t e r p o l a t e and assign track to layout
47 l . visualize ([] ,[] ,0) ; % Plot
48 axis equal
49 title ( ’ Track layout ’) ; % Set plot title

Copyright: Fraunhofer Heinrich Hertz Institute 125


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Track layout
Tx-Position
500 Tx-Antenna
Tx-Track
Rx-Position
Rx-Antenna
400 Rx-Track

300
y-coord in [m]

200

100

-100
0 100 200 300 400 500 600
x-coord in [m]

Assigning propagation environments We now assign propagation environments to the track. The easiest
way to do this is by using the ”add segment” method. This method requires 3D-coordinates of a point near
the track as well as a scenario description. The easiest way to obtain these coordinates is to use the data
cursor in the plot and read the coordinates from the pop-up window. Scenario descriptions for satellite
scenarios are provided by 3GPP TR 38.811. The propagation parameters are stored in configuration files in
the QuaDRiGa source folder. Here, we only need the scenario name.
1 t . scenario {1} = ’3 GPP_38 .881 _Urban_LOS ’; % P1 : Start s c e n a r i o : Urban LOS
2 t . add_segment ([64;64;2] , ’3 GPP_38 .881 _Urban_NLOS ’ ,2) ; % P2 : LOS to NLOS change
3 t . add_segment ([84;84;2] , ’3 GPP_38 .881 _Urban_LOS ’ ,2) ; % P3 : NLOS to LOS change
4 t . add_segment ([233;68;2] , ’3 GPP_38 .881 _Urban_NLOS ’ ,2) ; % P6 : LOS to NLOS change
5 t . add_segment ([272;103;2] , ’3 GPP_38 .881 _Urban_LOS ’ ,2) ; % P7 : NLOS to LOS change
6 t . add_segment ([283;114;2] , ’3 GPP_38 .881 _Urban_NLOS ’ ,2) ; % P7 : LOS to NLOS change
7 t . add_segment ([324;153;2] , ’3 GPP_38 .881 _ De n s e U r b a n _ N L O S ’ ,2) ; % P8 : Higher density of b u i l d i n g s
8 t . add_segment ([420;250;2] , ’3 GPP_38 .881 _Urban_NLOS ’ ,2) ; % P10 : Lower density of b u i l d i n g s
9 t . add_segment ([490;320;2] , ’3 GPP_38 .881 _Rural_NLOS ’ ,2) ; % P11 : Urban to Rural

Modeling stops at traffic lights This section provides a simple way to model the movement of the car
along the track. A movement profile describes the movement along the track by associating a time points
(in seconds) with a traveled distance (in meters). This is assigned to the track object. The initial speed
of the car is set to 10 m/s for the first 20 seconds. Then it slows down and stops after 30 seconds at the
first traffic light. The stopping duration is 10 seconds. Another 6.5 second stop happens after 66.5 seconds
or at 530 meters relative to the start. The total simulation time is 100 seconds. Note that accelerations
are modeled. Speed changes happen suddenly as can be seen in the plot at the end of the section. For a
smoother movement, it is advisable to sample the movement profile more often.
1 t . m ov e m e n t _ p r o f i l e = [ 0 , 20 , 30 , 40 , 66.5 , 73 , 100;... % Time points in seconds vs .
2 0 , 200 , 265 , 265 , 530 , 530 , 800 ]; % d i s t a n c e in meters
3
4 dist = t . interpolate ( ’ time ’ ,0.1) ; % C a l c u l a t e t r a v e l l e d d i s t a n c e vs . time
5 time = ( 0: numel ( dist ) - 2 ) *0.1; % C a l c u l a t e time sample points
6 speed = diff ( dist ) * 10; % C a l c u l a t e the speed
7
8 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change Plot Size
9 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
10
11 plot ( time , speed , ’ Linewidth ’ ,2 ) ; % Plot speed vs . time
12 xlabel ( ’ Simulation Time ( s ) ’) ; ylabel ( ’ Speed ( m / s ) ’) ; grid on ; % Annotations
13 axis ([0 ,100 ,0 ,11]) ;

Copyright: Fraunhofer Heinrich Hertz Institute 126


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

10

Speed (m/s)
6

0
0 20 40 60 80 100
Simulation Time (s)

Simulation layout and antenna setup This section shows how create a simulation layout, set up the center
frequency and set up antennas. The system operates in S-band at a 2.2 GHz carrier frequency. The satellite
uses a parabolic dish antenna of 3 m diameter, a gain of 44 dBi, and LHCP polarization. The terminal uses
a dual-polarized patch antenna (LHCP/RHCP) which is pointing upwards to the sky. To verify the correct
configuration, we plot the beam footprint at the end of this section. A TX power of 100 W is assumed for
the satellite. This would lead to an equivalent isotropically radiated power (EIRP) of 64 dBW for the space
segment. The beam footprint takes the antenna gains as well as the antenna orientation at the satellite into
account. The curvature of the Earth is ignored here.
1 l = qd_layout ; % Create new layout
2 l . simpar . c e n t e r _ f re q u e n c y = 2.2 e9 ; % Set center f r e q u e n c y to 2.2 GHz
3
4 l . rx_track = t ; % Assign t e r m i n a l track for the r e c e i v e r
5 l . rx_track . split_segment (10 ,50 ,30 ,12) ; % Create more s e g m e n t s
6 l . rx_track . co r re ct _o v er la p ; % Fix the segment start p o s i t i o n s
7
8 l . s e t _ s a t e l l i t e _ p o s ( 52.3 , 29.7 , 172.7 ) ; % Set GEO s a t e l l i t e p o s i t i o n
9 l . tx_array = qd_arrayant ( ’ parabolic ’ , 3 , l . simpar . center_frequency , [] , 3) ; % Sat . antenna
10 l . tx_track . orientation = [ 0 ; -29.7 ; 97.3 ]* pi /180; % Set the o r i e n t a t i o n of tx antenna
11 l . tx_name {1} = ’ Sat ’; % Set TX name
12
13 l . rx_array = qd_arrayant ( ’ patch ’) ; % Patch antenna for the t e r m i n a l
14 l . rx_array . c e n t e r _ f r e q u e n c y = l . simpar . c e n t e r _ f r eq u e n c y ; % Set antenna f r e q u e n c y
15 l . rx_array . copy_element (1 ,2) ; % Two i d e n t i c a l e l e m e n t s
16 l . rx_array . r otate_pa ttern (90 , ’x ’ ,2) ; % Rotate second element by 90 degrees
17 l . rx_array . coupling = 1/ sqrt (2) * [1 1 ; 1 j -1 j ]; % Set LHCP / RHCP p o l a r i z a t i o n
18 l . rx_array . co m bi ne _p a tt er n ; % Merge p o l a r i z e d p a t t e r n s
19 l . rx_array . r otate_pa ttern ( -90 , ’y ’) ; % Point s k y w a r d s
20
21 % C a l c u l a t e the beam f o o t p r i n t
22 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Adjust paper size for plot
23 [ map , x_coords , y_coords ]= l . power_map ( ’3 GPP_38 .881 _Urban_LOS ’ , ’ quick ’ ,2 e4 , -6 e6 ,6 e6 , -5 e6 ,5 e6 ) ;
24 P = 10* log10 ( map {:}(: ,: ,1) ) + 50; % RX copolar power @ 50 dBm TX power
25 l . visualize ([] ,[] ,0) ; % Plot layout
26 axis ([ -5 e6 ,5 e6 , -5 e6 ,5 e6 ]) ; % Axis
27 hold on
28 imagesc ( x_coords , y_coords , P ) ; % Plot the r e c e i v e d power
29 hold off
30
31 colorbar ( ’ South ’) % Show a c o l o r b a r
32 colmap = colormap ;
33 colormap ( colmap *0.5 + 0.5 ) ; % Adjust colors to be " lighter "
34 axis equal
35 set ( gca , ’ XTick ’ ,( -5:5) *1 e6 ) ;
36 set ( gca , ’ YTick ’ ,( -5:5) *1 e6 ) ;
37 caxis ([ -150 , -90])
38 set ( gca , ’ layer ’ , ’ top ’) % Show grid on top of the map
39 title ( ’ Beam footprint in dBm ’) ; % Set plot title

Copyright: Fraunhofer Heinrich Hertz Institute 127


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

106 Beam footprint in dBm


5
Tx-Position
Tx-Antenna
4 Tx-Track
Rx-Position
3 Rx-Antenna
Rx-Track

y-coord in [m] 2

-1

-2

-3

-4 -150 -140 -130 -120 -110 -100 -90

-5
-5 -4 -3 -2 -1 0 1 2 3 4 5
x-coord in [m] 106

Generating and analyzing channel coefficients Now we generate the channel coefficients and plot the
power in both polarizations over time. The plot is annotated to show the events that happen during the
simulation.
1 c = l . get_channels (0.01) ; % Generate channels
2
3 pow = 10* log10 ( reshape ( sum ( abs ( c . coeff (: ,: ,: ,:) ) .^2 ,3) ,2 ,[] ) ) ; % C a l c u l a t e the power
4 time = (0: c . no_snap -1) *0.01; % Vector with time samples
5
6 ar = zeros (1 , c . no_snap ) ; % Shading of events
7 ar (900:1200) = -200; % NLOS from P2 to P3
8 ar (3000:4000) = -200; % Stop at P5
9 ar (4650:5050) = -200; % NLOS from P6 to P7
10 ar (5300:5800) = -200; % NLOS from P6 to P7
11 ar (6650:7300) = -200; % Stop at P9
12 ar (7800:8900) = -200; % Stop at P9
13
14 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change Plot Size
15 figure ( ’ Position ’ ,[ 100 , 100 , 1200 , 400]) ; % New figure
16 a = area ( time , ar , ’ FaceColor ’ ,[0.7 0.9 0.7] , ’ LineStyle ’ , ’ none ’) ; % Area shading
17 hold on ; plot ( time , pow ’+50) ; hold off ;
18 xlabel ( ’ Simulation Time ( s ) ’) ; ylabel ( ’ RX power ( dBm ) ’) ; grid on ; axis ([0 ,100 ,[ -150 , -80]]) ;
19 legend ( ’ Event ’ , ’ RX LHCP ’ , ’ RX RHCP ’) ; set ( gca , ’ layer ’ , ’ top ’)
20
21 text ( 7 , -85 , ’ P2 ’ ) ; text ( 11 , -85 , ’ P3 ’ ) ; text ( 8 , -145 , ’ NLOS ’ ) ;
22 text ( 20 , -85 , ’ P4 ’ ) ; text ( 33 , -85 , ’ P5 ’ ) ; text ( 32 , -145 , ’ Stop ’ ) ;
23 text ( 45.5 , -85 , ’ P6 ’ ) ; text ( 50.5 , -85 , ’ P7 ’ ) ; text ( 44 , -145 , ’ NLOS ’ ) ;
24 text ( 57 , -85 , ’ P8 ’ ) ; text ( 53 , -145 , ’ NLOS ’ ) ;
25 text ( 69 , -85 , ’ P9 ’ ) ; text ( 68 , -145 , ’ Stop ’ ) ;
26 text ( 77 , -85 , ’ P10 ’ ) ; text ( 80 , -145 , ’ Urban ’ ) ; text ( 92 , -145 , ’ Rural ’ ) ;

1 Starting channel generation using QuaDRiGa v2 .2.0 -0


2 1 receiver , 1 transmitter , 1 frequency (2.2 GHz )
3 Interpolating tracks ( v = 10 m /s , SR = 100 samples /s , update factor = 1.000)
4 Warning : Sample density in tracks does not fulfill the sampling theoreme .
5 Generating channel builder objects - 4 builders , 27 channel segments
6 Initializing random generators
7 Generating parameters
8 SSF Corr . [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 1 seconds
9 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 60 seconds
10 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 9 seconds
11 Formatting output channels - 1 channel object
12 Total runtime : 71 seconds

Copyright: Fraunhofer Heinrich Hertz Institute 128


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

-80
P2 P3 P4 P5 P6 P7 P8 P9 P10 Event
-90 RX LHCP

RX power (dBm)
-100 RX RHCP

-110
-120
-130
-140
NLOS Stop NLOS NLOS Stop Urban Rural
-150
0 10 20 30 40 50 60 70 80 90 100
Simulation Time (s)

4.3 Effects of the Antenna-Orientation

This tutorial shows how to evaluate antenna effects. It creates a simple setup with a transmit and a receive
antenna facing each other in pure LOS conditions. Then, the transmitter is rotated around its x-axis and
the effect on the received power is studied.

One feature of the model is that it allows to freely orient the antennas at the transmitter and receiver. In
the following, two cross-polarized patch antennas are aligned on the optical axis facing each other. The
surface normal vectors of the transmit and the receive patch are aligned with the LOS. The transmitter is
rotated from -90° to 90° around the optical axis. The real and imaginary parts of the channel coefficients
are then calculated for each angle. Each real and imaginary part is normalized by its maximum and the
results are plotted. The calculation is done for both, linearly and crossed polarized elements.

Model and Antenna Setup Here, we parametrize the simulation. We place the receiver 10 m away from
the transmitter and chose the scenario ”LOSonly”. Thus, no NLOS components are present. The receiver
is set up as a multi-element array antenna using both, circular and linear polarization.
1 clear all
2 close all
3
4 a = qd_arrayant ( ’ lhcp - rhcp - dipole ’) ; % Create c i r c u l a r p o l a r i z e d antenna
5
6 a2 = qd_arrayant ( ’ custom ’ ,90 ,90 ,0) ; % Create linear p o l a r i z e d patch antenna
7 a2 . copy_element (1 ,2) ; % Copy the antenna element
8 a2 . rota te_patte rn (90 , ’x ’ ,2) ; % Rotate second element by 90 degree
9
10 a . append_array ( a2 ) ; % Append the second antenna to the first
11
12 l = qd_layout ;
13 l . simpar . s h o w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bar i n d i c a t o r
14
15 l . rx_track = qd_track ( ’ linear ’ ,0 , pi ) ; % Create new track ( pi turns the rx by 180 degree )
16 l . rx_position = [11;0;0]; % Set the r e c e i v e r p o s i t i o n
17 l . tx_position = [0;0;0];
18
19 l . set_scenario ( ’ LOSonly ’ ) ; % Set the s c e n a r i o to LOS only
20 l . tx_array = a ; % Use same antenna at both sides
21 l . rx_array = a ;

Iteration over all angles Next, we rotate the receive antenna in 10 degree steps around its x-axis and
calculate the channel response for each angle.
1 rot = -120:10:120; % R o t a t i o n angle
2 h = zeros (4 ,4 , numel ( rot ) ) ;
3 for n = 1 : numel ( rot )
4 cc = copy ( a ) ; % Create copy of the Tx antenna ( !!! )

Copyright: Fraunhofer Heinrich Hertz Institute 129


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

5 cc . rota te_patte rn ( rot ( n ) , ’x ’) ; % Assign r o t a t i o n angle


6
7 l . tx_array = cc ; % Set Tx antenna
8 c = l . get_channels ; % Update channel c o e f f i c i e n t s
9 h (: ,: , n ) = c . coeff (: ,: ,1 ,1) ;
10 end

Linear Polarization results Now we plot the results for the linear polarization. There are two linearly
polarized antennas at the transmitter and two at the receiver. Their orientation can either be vertical
(denoted as V) or horizontal (denoted as H). The channel matrix thus has 8 coefficients, VV, VH, HV and
HH. Each coefficient is complex-valued. Thus, figure shows 8 curves, 4 for the real parts and 4 for the
imaginary parts.
1 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
2 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
3 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
4 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
5 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
6 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
7 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Default Paper Size
8
9 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ;
10 g = h ([3 ,4] ,[3 ,4] ,:) ;
11
12 plot ( rot , squeeze ( real ( g (1 ,1 ,:) ) ) , ’ - sk ’ , ’ Linewidth ’ ,0.5 , ’ Ma rk e rf ac eC o lo r ’ , ’k ’ , ’ Markersize ’ ,12)
13 hold on
14 plot ( rot , squeeze ( real ( g (2 ,2 ,:) ) ) , ’ - db ’ , ’ Linewidth ’ ,0.5 , ’ Ma rk e rf ac eC o lo r ’ , ’b ’ , ’ Markersize ’ ,8)
15 plot ( rot , squeeze ( real ( g (2 ,1 ,:) ) ) , ’ - or ’ , ’ Linewidth ’ ,0.5 , ’ Ma rk e rf ac eC o lo r ’ , ’r ’ , ’ Markersize ’ ,8)
16 plot ( rot , squeeze ( real ( g (1 ,2 ,:) ) ) , ’ -^ g ’ , ’ Linewidth ’ ,0.5 , ’ Ma rk e rf ac eC o lo r ’ , ’g ’ , ’ Markersize ’ ,8)
17
18 plot ( rot , squeeze ( imag ( g (1 ,1 ,:) ) ) , ’ -- sk ’ , ’ Linewidth ’ ,0.5 , ’ Markersize ’ ,12)
19 plot ( rot , squeeze ( imag ( g (2 ,2 ,:) ) ) , ’ -- db ’ , ’ Linewidth ’ ,0.5 , ’ Markersize ’ ,8)
20 plot ( rot , squeeze ( imag ( g (2 ,1 ,:) ) ) , ’ -- or ’ , ’ Linewidth ’ ,0.5 , ’ Markersize ’ ,12)
21 plot ( rot , squeeze ( imag ( g (1 ,2 ,:) ) ) , ’ - -^ g ’ , ’ Linewidth ’ ,0.5 , ’ Markersize ’ ,12)
22 hold off
23
24 xlabel ( ’ Rotation Angle ’)
25 ylabel ( ’ Normalized Amplitude ’)
26 legend ( ’ real V - V ’ , ’ real H - H ’ , ’ real H - V ’ , ’ real V - H ’ ,...
27 ’ imag V - V ’ , ’ imag H - H ’ , ’ imag H - V ’ , ’ imag V - H ’ , ’ location ’ , ’ EastOutside ’)

5
Normalized Amplitude

real V-V
real H-H
real H-V
real V-H
0 imag V-V
imag H-H
imag H-V
imag V-H

-5
-150 -100 -50 0 50 100 150
Rotation Angle

Circular Polarization results The second plot shows the same for circular polarization. The first element is
LHCP (denoted as L) and the second is RHCP (denoted as R). As expected, all cross-polarization coefficients
(RL and LR) are zero.
1 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ;
2 g = h ([1 ,2] ,[1 ,2] ,:) ;
3
4 plot ( rot , squeeze ( real ( g (1 ,1 ,:) ) ) , ’ - sk ’ , ’ Linewidth ’ ,0.5 , ’ Ma rk e rf ac eC o lo r ’ , ’k ’ , ’ Markersize ’ ,12)
5 hold on

Copyright: Fraunhofer Heinrich Hertz Institute 130


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

6 plot ( rot , squeeze ( real ( g (2 ,2 ,:) ) ) , ’ - db ’ , ’ Linewidth ’ ,0.5 , ’ Ma rk e rf ac eC o lo r ’ , ’b ’ , ’ Markersize ’ ,8)


7 plot ( rot , squeeze ( real ( g (2 ,1 ,:) ) ) , ’ - or ’ , ’ Linewidth ’ ,0.5 , ’ Ma rk e rf ac eC o lo r ’ , ’r ’ , ’ Markersize ’ ,8)
8 plot ( rot , squeeze ( real ( g (1 ,2 ,:) ) ) , ’ -^ g ’ , ’ Linewidth ’ ,0.5 , ’ Ma rk e rf ac eC o lo r ’ , ’g ’ , ’ Markersize ’ ,8)
9
10 plot ( rot , squeeze ( imag ( g (1 ,1 ,:) ) ) , ’ -- sk ’ , ’ Linewidth ’ ,0.5 , ’ Markersize ’ ,12)
11 plot ( rot , squeeze ( imag ( g (2 ,2 ,:) ) ) , ’ -- db ’ , ’ Linewidth ’ ,0.5 , ’ Markersize ’ ,8)
12 plot ( rot , squeeze ( imag ( g (2 ,1 ,:) ) ) , ’ -- or ’ , ’ Linewidth ’ ,0.5 , ’ Markersize ’ ,12)
13 plot ( rot , squeeze ( imag ( g (1 ,2 ,:) ) ) , ’ - -^ g ’ , ’ Linewidth ’ ,0.5 , ’ Markersize ’ ,12)
14 hold off
15
16 xlabel ( ’ Rotation Angle ’)
17 ylabel ( ’ Normalized Amplitude ’)
18 legend ( ’ real L - L ’ , ’ real R - R ’ , ’ real R - L ’ , ’ real L - R ’ ,...
19 ’ imag L - L ’ , ’ imag R - R ’ , ’ imag R - L ’ , ’ imag L - R ’ , ’ location ’ , ’ EastOutside ’)

1.5
Normalized Amplitude

1
real L-L
0.5 real R-R
real R-L
real L-R
0 imag L-L
imag R-R
-0.5 imag R-L
imag L-R
-1

-1.5
-150 -100 -50 0 50 100 150
Rotation Angle

4.4 Drifting Phases and Delays

Drifting is the method used for obtaining time evolution within one segment. This tutorial demonstrates
the effect of “drifting” on the channel coefficients. It shows how drifting can be enabled and disabled as well
as how the resulting data can be analyzed.

Drifting is an essential feature of the channel model. Drifting enables a continuous time evolution of the
path delays, the path phases, the departure- and arrival angles and the LSPs. It is thus the enabling feature
for time continuous channel simulations. Although drifting was already available in the SCME branch of
the WINNER channel model, it did not make it into the main branch. Thus, drifting is not available in the
WIM1, WIM2 or WIM+ model. It is also not a feature of the 3GPP model family. Here the functionality is
implemented again. This script focuses on the delay and the phase component of the drifting functionality.

Channel model set-up and coefficient generation First, we parametrize the channel model. We start
with the basic simulation parameters. For the desired output, we need two additional options: we want to
evaluate absolute delays and we need to get all 20 sub-paths. Normally, the sub-paths are added already in
the channel builder.
1 clear all
2 close all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Default Paper Size
11
12 s = qd_simulation_parameters ; % New s i m u l a t i o n p a r a m e t e r s
13 s . c en t e r _ f r e q u e n c y = 2.53 e9 ; % 2.53 GHz carrier f r e q u e n c y

Copyright: Fraunhofer Heinrich Hertz Institute 131


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

14 s . s ample_d ensity = 4; % 4 samples per half - w a v e l e n g t h


15 s . u s e _ a b s o l u t e _ d e l a y s = 1; % Include delay of the LOS path
16 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bars

Second, we define a user track. Here we choose a linear track with a length of 30 m. The track start 20 m
east of the transmitter and runs in east direction, thus linearly increasing the distance from the receiver.
1 l = qd_layout ( s ) ; % New Q u a D R i G a layout
2 l . tx_position (3 ,1) = 25; % 25 m BE height
3 l . rx_track = qd_track ( ’ linear ’ ,30 ,0) ; % 30 m long track facing east
4 l . rx_track . i n i t i a l _ p o s i t i o n = [20;0;0]; % Start p o s i t i o n
5 l . set_scenario ( ’ W I N N E R _ U M a _ C 2 _ L O S ’) ; % Set p r o p a g a t i o n s c e n a r i o
6 interpolate ( l . rx_track , ’ distance ’ , 1/ s . samples_per_meter , [] ,[] ,1 ) ; % Set s a m p l i n g i n t e r v a l s
7 l . visualize ; % Plot the layout

Tx-Position
25
Tx-Antenna
Tx-Track
20 Rx-Position
Rx-Antenna
15 Rx-Track

10
y-coord in [m]

Tx0001
0 WINNER_UMa_C2_LOS

-5

-10

-15

-20

-25

0 10 20 30 40 50
x-coord in [m]

Now, we generate the LSPs. We set the shadow fading and K-factor to 1 and disable the path loss model.
1 cb = l . init_builder ; % Create new builder object
2 cb . scenpar . SF_sigma = 0; % 0 dB shadow fading
3 cb . scenpar . KF_mu = 0; % 0 dB K - Factor
4 cb . scenpar . KF_sigma = 0; % No KF v a r i a t i o n
5 cb . plpar = []; % Disable path loss model
6 cb . gen_ paramete rs ; % G e n e r a t e large - and small - scale fading

Now, we generate the channel coefficients. The first run uses the drifting module, the second run disables it.
Note that drifting needs significantly more computing resources. In some scenarios it might thus be useful
to disable the feature to get quicker simulation results.
1 cb . simpar . u s e _ 3 G P P _ b a s e l i n e = 0; % Enable d r i f t i n g (= s p h e r i c a l waves )
2 c = cb . get_channels ; % G e n e r a t e channel c o e f f i c i e n t s
3 c . i n d i v i d u a l _ d e l a y s = 0; % Remove per - antenna delays
4
5 cb . simpar . u s e _ 3 G P P _ b a s e l i n e = 1; % Disable d r i f t i n g
6 d = cb . get_channels ; % G e n e r a t e channel c o e f f i c i e n t s

Results and discussion The following plots represent the results of the test. The first plot shows the delay
of the LOS tap (blue) and the delay of the first NLOS tap (red) vs. distance. The solid lines are from the
channel with drifting, the dashed lines are from the channel without. The LOS delay is always increasing
since the Rx is moving away from the Tx. However, the increase is not linear due to the 25 m height of the
Tx. Without drifting, the delays are not updated and stay constant during the segment. The position of
the first scatterer is in close distance to the Rx (only some m away). When moving, the Rx first approaches
the scatterer (delay gets a bit smaller) and then the distance increases again.

Copyright: Fraunhofer Heinrich Hertz Institute 132


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change Paper Size


2 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
3
4 distance = c . rx_position (1 ,:) ; % 2 D d i s t a n c e between Tx and Rx
5 plot ( distance , c . delay (1 ,:) *1 e9 , ’ -b ’ ) % Plot LOS delay with d r i f t i n g
6 hold on
7 plot ( distance , d . delay (1 ,:) *1 e9 , ’ -. b ’ ) % Plot LOS delay without d r i f t i n g
8 plot ( distance , c . delay (2 ,:) *1 e9 , ’ -r ’ ) % Plot 1 st NLOS path with d r i f t i n g
9 plot ( distance , d . delay (2 ,:) *1 e9 , ’ -. r ’ ) % Plot 1 st NLOS path without d r i f t i n g
10 hold off
11 xlabel ( ’ Distance from track start point ’)
12 ylabel ( ’ Delay [ ns ] ’)
13 title ( ’ Path delays ’)
14 legend ( ’ LOS with drifting ’ , ’ LOS without drifting ’ , ’ NLOS with drifting ’ , ’ NLOS without drifting ’)

Path delays
220
LOS with drifting
200 LOS without drifting
NLOS with drifting
180
Delay [ns]

NLOS without drifting

160

140

120

100
20 25 30 35 40 45 50
Distance from track start point

This plot shows the power of the first NLOS tap along the track. The fading is significantly higher in the
beginning and becomes much less strong towards the end.
1 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
2 pow = abs ( squeeze ( sum ( c . coeff (1 ,1 ,2 ,: ,:) , 5 ) ) ) .^2; % C a l c u l a t e power of first NLOS path
3 plot ( distance ,10* log10 ( pow ) , ’ -r ’ ) % Plot power of first NLOS path
4 xlabel ( ’ Distance from track start point ’)
5 ylabel ( ’ Tap power ( dB ) ’)
6 title ( ’ NLOS power with drifting ’)

NLOS power with drifting


0

-10
Tap power (dB)

-20

-30

-40

-50
20 25 30 35 40 45 50
Distance from track start point

Without drifting, the phases of the subpaths are approximated by assuming that the angles to the LBSs do
not change. However, this only holds when the distance to the LBS is large. Here, the initial distance is
small (ca. 5 m). When the initial angles are kept fixed along the track, the error is significant. Here, the
phase ramp is negative, indicating a movement direction towards the scatterer and thus a higher Doppler
frequency. However, when the scatterer is passed, the Rx moves away from the scatterer and the Doppler
frequency becomes lower. This is not reflected when drifting is turned off.

Copyright: Fraunhofer Heinrich Hertz Institute 133


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Note here, that with shorter delay spreads (as e.g. in satellite channels), the scatterers are placed closer
to the Rxs initial position. This will amplify this effect. Hence, for correct time evolution results, drifting
needs to be turned on.
1 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
2 pow = abs ( squeeze ( sum ( d . coeff (1 ,1 ,2 ,: ,:) , 5 ) ) ) .^2; % C a l c u l a t e power of first NLOS path
3 plot ( distance ,10* log10 ( pow ) , ’ -r ’ ) % Plot power of first NLOS path
4 xlabel ( ’ Distance from track start point ’)
5 ylabel ( ’ Tap power ( dB ) ’)
6 title ( ’ NLOS power without drifting ’)

NLOS power without drifting


10

0
Tap power (dB)

-10

-20

-30

-40

-50
20 25 30 35 40 45 50
Distance from track start point

4.5 Geometric Polarization

This tutorial shows how to study polarization effects with QuaDRiGa. Different linearly polarized antennas
are defined at the transmitter and the receiver, the channel between them is calculated and the polarization
effects are evaluated.

We demonstrate the polarization rotation model that calculates the path power for polarized array antennas.
We do this by setting up the simulation with different H/V polarized antennas at the transmitter and at
the receiver. Then we define a circular track around the receiver. When the receiver moves around the
transmitter, it changes its antenna orientation according to the movement direction. In this way, all possible
departure and elevation angles are sampled. Depending on the antenna orientation, the polarizations are
either aligned (e.g. the Tx is V-polarized and the Rx is V-polarized), they are crossed (e.g. the Tx is V-
polarized and the Rx is H-polarized), or the polarization orientation is in between those two. The generated
channel coefficients should reflect this behavior.

Setting up the simulation environment First, we have to set up the simulator with some default settings.
Here, we choose a center frequency of 2.1 GHz. We also want to use drifting in order to get the correct
angles for the LOS component and we set the number of transmitters and receivers to one.
1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10
11 s = qd_simulation_parameters ; % Set the s i m u l a t i o n p a r a m e t e r s
12 s . c en t e r _ f r e q u e n c y = 2.1 e9 ; % Center - f r e q u e n c y : 2.1 GHz
13 s . s a m p l e s _ p e r _ m e t e r = 360/(40* pi ) ; % One sample per degree
14 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bars

Copyright: Fraunhofer Heinrich Hertz Institute 134


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Setting up the array antennas In the second step, we set up our array antennas. We use the synthetic
dipole antennas for this case. Those antennas show perfect polarization characteristics. First, we generate a
single dipole with V-polarization. Then, we create multiple copies of this antenna element and rotate them
by 45 and 90 degrees, respectively. We then use the same array antenna for the receiver.
1 l = qd_layout ( s ) ; % Create a new Layout
2 l . tx_array = qd_arrayant ( ’ dipole ’) ; % create V - p o l a r i z e d dipole
3 l . tx_array . set_grid ( ( -180:10:180) * pi /180 , ( -90:10:90) * pi /180 ) ;
4 l . tx_array . Fa = l . tx_array . Fa ./ max ( l . tx_array . Fa (:) ) ;
5
6 l . tx_array . copy_element (1 ,2:3) ; % D u p l i c a t e the e l e m e n t s
7 l . tx_array . r otate_pa ttern (45 , ’y ’ ,2) ; % 45 degree p o l a r i z a t i o n
8 l . tx_array . r otate_pa ttern (90 , ’y ’ ,3) ; % 90 degree p o l a r i z a t i o n
9 l . rx_array = l . tx_array ; % Use the same array for the Rx
10
11 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 5.3]) % Adjust paper size for plot
12 l . tx_array . visualize (1) ; pause (1) ; % Plot the first antenna element
13 l . tx_array . visualize (2) ; pause (1) ; % Plot the second antenna element
14 l . tx_array . visualize (3) ; pause (1) ; % Plot the third antenna element

Array Antenna Element 1 1


D[ ]( , ) D[ ]( , )
-2

Partial Directivity in dBi


-5
0.5 0.5

0 0 -8
z

-0.5 -0.5 -11

-14
-0.5 0.5 -0.5 0.5
0 0 0 0 -17
0.5 -0.5 0.5 -0.5
x y x y -20

Array Antenna Element 2 1


D[ ]( , ) D[ ]( , )
-2 Partial Directivity in dBi

-5
0.5 0.5

0 0 -8
z

-0.5 -0.5 -11

-14
-0.5 0.5 -0.5 0.5
0 0 0 0 -17
0.5 -0.5 0.5 -0.5
x y x y -20

Copyright: Fraunhofer Heinrich Hertz Institute 135


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Array Antenna Element 3 1


D[ ]( , ) D[ ]( , )
-2

Partial Directivity in dBi


-5
0.5 0.5

0 0 -8
z

z
-0.5 -0.5 -11

-14
-0.5 0.5 -0.5 0.5
0 0 0 0 -17
0.5 -0.5 0.5 -0.5
x y x y -20

Defining a track The third step defines the track. Here, we use a circle with 40 m diameter starting in
the east, traveling north. We also choose a LOS scenario since we want to study the LOS polarization. The
transmitter is located 12 m north of the center of the circle at an elevation of 6 m.
1 l . rx_track = qd_track ( ’ circular ’ ,40* pi ,0) ; % C i r c u l a r track , radius 20 m
2 i n t e r p o l a t e _ p o s i t i o n s ( l . rx_track , s . s a m p l e s _ p e r _ m e t e r ) ; % I n t e r p o l a t e p o s i t i o n s
3 l . tx_position = [ 0 ; 12 ; 6 ]; % Tx p o s i t i o n
4 l . rx_position = [ 20 ; 0 ; 0 ]; % Start p o s i t i o n for the Rx track
5 l . set_scenario ( ’ B ERLIN_U Ma_LOS ’) ;
6
7 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Adjust paper size for plot
8 l . visualize ; % Plot the layout

Tx-Position
20
BERLIN_UMa_LOS Tx-Antenna
Tx-Track
15 Rx-Position
Rx-Antenna
Tx0001 Rx-Track
10
y-coord in [m]

-5

-10

-15

-20
-20 -15 -10 -5 0 5 10 15 20
x-coord in [m]

Generating channel coefficients Now, we have finished the parametrization of the simulation and we can
generate the channel coefficients. We thus create a new set of correlated LSPs and the fix the shadow fading
and the K-factor to some default values. This disables the drifting for those parameters. We need to do
that since otherwise, drifting and polarization would interfere with each other.
1 cb = l . init_builder ; % Create p a r a m e t e r sets
2 cb . scenpar . KF_mu = 3; % Fix KF to 3 dB

Copyright: Fraunhofer Heinrich Hertz Institute 136


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

3 cb . scenpar . KF_sigma = 0;
4 cb . scenpar . SF_sigma = 0; % Fix SF to 0 dB
5 cb . plpar = []; % Disable path loss model
6
7 cb . gen_ paramete rs ; % G e n e r a t e small - scale - fading
8 c = cb . get_channels ; % Get the channel c o e f f i c i e n t s

Results and Evaluation We now check the results and confirm, if they are plausible or not. We start with
the two vertically polarized dipoles at the Tx and at the Rx side. The model creates 15 taps, which is the
default for the ”BERLIN UMa LOS” scenario. Without path-loss and shadow fading (SF=1), the power is
normalized such that the sum over all taps is 1 W and with a K-Factor of 3 dB, we get a received power of
0.67W for the LOS component. The remaining 0.33 W are in the NLOS components. The results can be
seen in the following figure.
1 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change Paper Size
2 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
3
4 plot ( abs ( squeeze ( c . coeff (1 ,1 ,: ,:) ) ’) .^2) ; % Plot the graph
5 axis ([0 360 -0.1 1]) ; % Set the axis
6 xlabel ( ’ Position [ degrees ] ’) ; % Add d e s c r i p t i o n
7 ylabel ( ’ LOS Power , linear scale ’) ;
8 title ( ’ Tx : Vertical , Rx : Vertical ’) ; % Add title
9
10 disp ([ ’ LOS power : ’ , num2str ( mean ( abs ( c . coeff (1 ,1 ,1 ,:) ) .^2 , 4) ) ])
11 disp ([ ’ NLOS power : ’ , num2str ( mean ( sum ( abs ( c . coeff (1 ,1 ,2: end ,:) ) .^2 ,3) , 4) ) ])

1 LOS power : 0.52832


2 NLOS power : 0.18903

Tx: Vertical , Rx: Vertical


1
LOS Power, linear scale

0.8

0.6

0.4

0.2

0 50 100 150 200 250 300 350


Position [degrees]

The LOS power is almost constant when the Rx is south of the Tx. However, in close proximity (at 90
degree), the power is lowered significantly. This comes from the 6 m elevation of the Tx. When the Rx is
almost under the Tx, the radiated power of the Dipole is much smaller compared to the broadside direction.
The average power of the LOS is thus also lowered to 0.56 W. The average sum-power if the 7 NLOS
components is 0.26 W. This mainly come from the XPR which leakes some power from the vertical- into
the horizontal polarization and thus reduces the received power on the vertically polarized Dipole. Next,
we study two cases. Either the Tx is vertical polarized and the Rx is at 45 degree or vise versa.
1 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
2 plot ( abs ( squeeze ( c . coeff (2 ,1 ,1 ,:) ) ) .^2) ; % Tx vertical , Rx 45 degree
3 hold on
4 plot ( abs ( squeeze ( c . coeff (1 ,2 ,1 ,:) ) ) .^2 , ’ --r ’) ; % Tx 45 degree , Rx v e r t i c a l
5 hold off
6 axis ([0 360 -0.1 1]) ;
7 legend ( ’ Tx vertical , Rx 45 deg ’ , ’ Tx 45 deg , Rx vertical ’)
8 xlabel ( ’ Position [ degrees ] ’) ;
9 ylabel ( ’ LOS Power , linear scale ’) ;
10 title ( ’ Tx : Vertical , Rx : 45 deg ’) ;

Copyright: Fraunhofer Heinrich Hertz Institute 137


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Tx: Vertical , Rx: 45 deg


1
Tx vertical, Rx 45 deg

LOS Power, linear scale


0.8 Tx 45 deg, Rx vertical

0.6

0.4

0.2

0 50 100 150 200 250 300 350


Position [degrees]

The receiver changes its direction in a way that it always has the same orientation towards the Tx. However,
due to the displacement of the Tx, the radiated power towards the Tx becomes minimal at around 90 degree.
This minimum is visible in both curves (blue and red). However, the pole of the 45 degree slanted dipole
now points to a different direction which explains the difference in the two lines. When the Rx is at 45
degeee and the Tx is vertical, the pole is in the right half if the circle - resulting in a lower received power.
When the Rx is Vertical and the Tx is 45 degree, the minimum power is achieved in the left half of the
circle.

Next, we evaluate the two dipoles which are rotated by 45 degree. When moving around the circle, the
Tx stays fixed and the Rx rotates. Subsequently, at one position, we will have both dipoles aligned and at
another position, both will be crossed. When they are crossed, the received power will be 0 and when they
are aligned, the power will match the first plot (two vertical dipoles). This can be seen in the following
figure.
1 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
2 plot ( abs ( squeeze ( c . coeff (2 ,2 ,1 ,:) ) ) .^2 , ’ Linewidth ’ ,1) ;
3 axis ([0 360 -0.1 1]) ;
4 set ( gca , ’ XTick ’ ,0:45:360)
5 xlabel ( ’ Position on circle [ degrees ] ’) ;
6 ylabel ( ’ LOS Power , linear scale ’) ;
7 title ( ’ Tx : 45 deg , Rx : 45 deg ’) ;

Tx: 45 deg , Rx: 45 deg


1
LOS Power, linear scale

0.8

0.6

0.4

0.2

0 45 90 135 180 225 270 315 360


Position on circle [degrees]

In the last figure, we have the Tx-antenna turned by 90 degree. It is thus lying on the side and it is
horizontally polarized. For the Rx, we consider three setups: Vertical (blue line), 45 degree (green line) and
90 degree (red line). Note that the Tx is rotated around the y-axis. At the initial position (0 degree), the
Rx (45 and 90 degree) is rotated around the x-axis. This is because the movement direction.
1 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
2 plot ( abs ( squeeze ( c . coeff (: ,3 ,1 ,:) ) ) ’.^2) ;
3 axis ([0 360 -0.1 1]) ;

Copyright: Fraunhofer Heinrich Hertz Institute 138


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

4 legend ( ’ Rx : 0 deg ’ , ’ Rx : 45 deg ’ , ’ Rx : 90 deg ’ )


5 xlabel ( ’ Position [ degrees ] ’) ;
6 ylabel ( ’ LOS Power , linear scale ’) ;
7 title ( ’ Tx : 90 deg , Rx : 0 deg , 45 deg , 90 deg ’) ;

Tx: 90 deg , Rx: 0 deg, 45 deg, 90 deg


1
Rx: 0 deg

LOS Power, linear scale


0.8 Rx: 45 deg
Rx: 90 deg
0.6

0.4

0.2

0 50 100 150 200 250 300 350


Position [degrees]

When the receiver is vertical (blue line), both antennas are always crossed. There is no position around the
circle where a good link can be established. When the receiver is horizontal (red line), however, there are
two points where the two dipoles are aligned. For the 45 degree dipole, the same behavior can be observed
but with roughly half the power.

4.6 Pairing and segments

This tutorial shows how to set up scenarios with several transmitters and receivers and the use of scenarios.
First, we set up a basic simulation with two transmitters. One of them is outdoors, the other is indoors.
1 clear all
2
3 s = qd_simulation_parameters ; % Set up s i m u l a t i o n p a r a m e t e r s
4 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bars
5 s . c en t e r _ f r e q u e n c y = 2.53 e9 ; % Set center f r e q u e n c y
6 l = qd_layout ( s ) ; % Create new Q u a D R i G a layout
7
8 l . no_tx = 2; % Two BSs
9 l . tx_position (: ,1) = [ -142 ; 355 ; 64 ]; % Outdoor BS
10 l . tx_position (: ,2) = [ 5 ; 0; 10 ]; % Indoor BS

We create two different MTs. MT1 is indoors. The link to BS1 is in scenario ”WINNER UMa C2 NLOS”.
The link to BS2 is in ”WINNER Indoor A1 LOS”. MT1 has no segments. The rows in ”qd track.scenario”
indicate the scenario for each BS. If there is only one row, then all BSs get the same scenario. The second
MT is outdoors, far away from the indoor BS. The first part of the MT2 track is in LOS, the second is in
NLOS. The columns of track.scenario indicate the segments. Here, all BSs get the same scenarios.
1 l . no_rx = 2; % Two MTs
2 l . rx_track (1 ,1) = qd_track ( ’ linear ’ , 0.2 ) ; % Linear track with 20 cm length
3 l . rx_track (1 ,1) . name = ’ Rx1 ’; % Set the MT1 name
4 l . rx_track (1 ,1) . scenario = { ’ W I N N E R _ U M a _ C 2 _ N L O S ’; ’ W I N N E R _ I n d o o r _ A 1 _ L O S ’ }; % Two S c e n a r i o s
5
6 l . rx_track (1 ,2) = qd_track ( ’ linear ’ , 0.2 ) ; % Linear track with 20 cm length
7 l . rx_track (1 ,2) . name = ’ Rx2 ’; % Set the MT2 name
8
9 l . rx_position (: ,2) = [ 100;50;0 ]; % Start p o s i t i o n of the MT2 track
10 i n t e r p o l a t e _ p o s i t i o n s ( l . rx_track , s . s a m p l e s _ p e r _ m e t e r ) ; % I n t e r p o l a t e p o s i t i o n s
11
12 l . rx_track (1 ,2) . segment_index = [1 3]; % Set s e g m e n t s
13 l . rx_track (1 ,2) . scenario = { ’ W I N N E R _ U M a _ C 2 _ L O S ’ , ’ W I N N E R _ U M a _ C 2 _ N L O S ’ };

We calculate the channel coefficients and plot the list of created segments.

Copyright: Fraunhofer Heinrich Hertz Institute 139


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 cb = l . init_builder ; % I n i t i a l i z e builder
2 gen_paramete rs ( cb ) ; % G e n e r a t e small - scale - fading
3 c = get_channels ( cb ) ; % Get channel c o e f f i c i e n t s
4 disp ( strvcat ( c . name ) ) % Show the names if the c h a n n e l s

1 WINNER - UMa - C2 - NL O S_ Tx 00 0 1_ Rx 1
2 WINNER - UMa - C2 - N L O S _ T x 0 0 0 1 _ R x 2 _ s e g 0 0 0 2
3 WINNER - UMa - C2 - L O S _ T x 0 0 0 1 _ R x 2 _ s e g 0 0 0 1
4 WINNER - UMa - C2 - N L O S _ T x 0 0 0 2 _ R x 2 _ s e g 0 0 0 2
5 WINNER - UMa - C2 - L O S _ T x 0 0 0 2 _ R x 2 _ s e g 0 0 0 1
6 WINNER - Indoor - A1 - LOS_ Tx0002_ Rx1

As we can see, 6 segments were generated. However, the channel Tx2 Rx2 will most likely not be needed
because of the large distance. We thus remove the link from the pairing matrix and recompute the channels.
1 l . pairing = [1 2 1 ; 1 1 2 ]; % Change the pairing matrix
2
3 cb = l . init_builder ; % I n i t i a l i z e channel builder object
4 gen_paramete rs ( cb ) ; % G e n e r a t e small - scale - fading p a r a m e t e r s
5 c = get_channels ( cb ) ; % Get channel c o e f f i c i e n t s
6 disp ( strvcat ( c . name ) ) % Show the names of the c h a n n e l s

1 WINNER - UMa - C2 - NL O S_ Tx 00 0 1_ Rx 1
2 WINNER - UMa - C2 - N L O S _ T x 0 0 0 1 _ R x 2 _ s e g 0 0 0 2
3 WINNER - UMa - C2 - L O S _ T x 0 0 0 1 _ R x 2 _ s e g 0 0 0 1
4 WINNER - Indoor - A1 - LOS_ Tx0002_ Rx1

At last, we can combine the segments and generate the final channels.
1 cn = merge ( c ) ; % Combine the channel c o e f f i c i e n t s
2 disp ( strvcat ( cn . name ) ) % Show the names if the c h a n n e l s

1 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds


2 Tx0001_Rx1
3 Tx0001_Rx2
4 Tx0002_Rx1

4.7 Network Setup and Parameter Generation

The tutorial demonstrates how to setup a simple layout with multiple receivers, how to adjust parameters
manually, generate channel coefficients, and how to calculate parameters from the data. The channel model
class ’qd builder’ generates correlated values for the LSPs. The channel builder then uses those values to
create coefficients that have the specific properties defined in the builder objects. One important question
is therefore: Can the same properties which are defined in the builder also be found in the generated
coefficients? This is an important test to verify, if all components of the channel builder work correctly.

Channel model setup and coefficient generation We first set up the basic parameters.
1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10
11 s = qd_simulation_parameters ; % Set up s i m u l a t i o n p a r a m e t e r s
12 s . s ho w _ p r o g r e s s _ b a r s = 1; % Show p r o g r e s s bars
13 s . c en t e r _ f r e q u e n c y = 2.53 e9 ; % Set center f r e q u e n c y
14 s . s a m p l e s _ p e r _ m e t e r = 1; % 1 sample per meter
15 s . u s e _ a b s o l u t e _ d e l a y s = 1; % Include delay of the LOS path

Copyright: Fraunhofer Heinrich Hertz Institute 140


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Receive antenna In order to verify the angular spreads, we need to calculate the angles and the resulting
angular spreads from the channel coefficients. However, the arrival angle information is embedded in the
channel coefficients. In order to obtain the angles, we need a special antenna that allows us to calculate
the arrival angles from the channel response. Such an ”ideal” antenna is generated here. It consists of 31
elements that allow us to calculate the azimuth and elevation direction of a path as well as the polarization.
1 [ theta , phi , B , d_phi ] = qf . pack_sphere ( 27 ) ; % Generate equidistant directions
2 N = numel ( theta ) ; % Store number of d i r e c t i o n s
3 a = qd_arrayant ( ’ custom ’ ,20 ,20 ,0.05) ; % Main beam opening and front - back ratio
4 a . e le m e n t _ p o s i t i o n (1) = 0.2; % Element d i s t a n c e from array phase - center
5 a . copy_element (1 ,2: N +3) ; % Set number of e l e m e n t s
6 for n = 1: N % Create sub - e l e m e n t s
7 a . rotate_p attern ( theta ( n ) *180/ pi , ’y ’ ,n ,1) ; % Apply e l e v a t i o n d i r e c t i o n
8 a . rotate_p attern ( phi ( n ) *180/ pi , ’z ’ ,n ,1) ; % Apply azimuth d i r e c t i o n
9 end
10 a . c en t e r _ f r e q u e n c y = s . c e n t e r _ f r e q u e n c y ; % Set center f r e q u e n c y
11 a . co m bi ne _ pa tt er n ; % Apply far field t r a n s f o r m a t i o n
12 P = sum ( abs ( a . Fa (: ,: ,1: N ) ) .^2 ,3 ) ; % N o r m a l i z e to unit power
13 a . Fa (: ,: ,1: N ) = a . Fa (: ,: ,1: N ) ./ sqrt ( P (: ,: , ones (1 , N ) ) ) ;
14
15 a . Fb (: ,: , N +1) = 1; % Add h o r i z o n t a l p o l a r i z a t i o n
16 a . Fa (: ,: , N +1) = 0;
17
18 a . Fb (: ,: , N +2) = 1/ sqrt (2) ; % Add LHCP receive p o l a r i z a t i o n
19 a . Fa (: ,: , N +2) = 1 j / sqrt (2) ;
20 a . Fb (: ,: , N +3) = 1/ sqrt (2) ; % Add RHCP receive p o l a r i z a t i o n
21 a . Fa (: ,: , N +3) = -1 j / sqrt (2) ;

Layout and Channel Generation We have one transmitter and 250 receiver positions. Each receiver gets
a specific channel. However, the receivers LSPs will be correlated. The BS useses a 2-element antenna that
transmits a linear polarized signal and an left-hand circular polarized signal. This will allow us to verify the
correct functionality for both polarizations.
1 l = qd_layout ( s ) ; % Create new Q u a D R i G a layout
2 l . no_rx = 250; % Set number of MTs
3 l . r a n d o m i z e _ r x _ p o s i t i o n s ( 200 , 1.5 , 1.5 , 1.7 ) ; % 200 m radius , 1.5 m Rx height
4 l . set_scenario ( ’ BE R LI N_ U Ma _N LO S ’) ; % Use NLOS s c e n a r i o
5
6 l . tx_position (3) = 20; % 20 m tx height
7 l . tx_array = qd_arrayant ( ’ omni ’ ) ; % Omni - d i r e c t i o n a l BS antenna
8 l . tx_array . copy_element (1 ,2) ;
9 l . tx_array . Fa (: ,: ,2) = 1/ sqrt (2) ; % Send a d d i t i o n a l LHCP signal
10 l . tx_array . Fb (: ,: ,2) = 1 j / sqrt (2) ;
11 l . rx_array = a ; % Omni - d i r e c t i o n a l MT antenna
12
13 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Adjust paper size for plot
14 l . visualize ([] ,[] ,0) ; % Plot the layout
15 view ( -33 , 60) ; % Enable 3 D view

Copyright: Fraunhofer Heinrich Hertz Institute 141


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Tx-Position
Tx-Antenna
Tx-Track
Rx-Position
Rx-Antenna
20 Rx-Track
z-coord in [m]

10

0
200

100
200
0
100
-100 0
y-coord in [m] -100
-200 -200 x-coord in [m]

We set up the scenario and adjust the parameter range. Then, we generate the channel coefficients. In the
last step, the arrival angles are obtained from the channel coefficients. This uses only the linear polarized
transmit singal.
1 p = l . init_builder ; % I n i t i a l i z e builder
2 p . plpar = []; % Disable path - loss
3 p . scenpar . NumClusters = 15; % Reduce paths ( for faster p r o c e s s i n g )
4 p . lsp_xcorr = eye (8) ; % Disable inter - p a r a m e t e r c o r r e l a t i o n
5
6 p . scenpar . XPR_mu = 2; % Set XPR range
7 p . scenpar . XPR_sigma = 10;
8 p . scenpar . KF_mu = -5; % Set KF - Range
9 p . scenpar . KF_sigma = 10;
10 p . scenpar . DS_mu = log10 (0.6 e -6) ; % Median DS = 600 ns
11 p . scenpar . DS_sigma = 0.3; % 300 -1200 ns range
12
13 p . scenpar . asA_kf = -0.6; % Set some inter - p a r a m e t e r c o r r e l a t i o n s
14 p . scenpar . esA_kf = -0.6;
15 p . scenpar . esA_asA = 0.5;
16
17 p . scenpar . Per ClusterA S_A = 1; % Limit the per cluster AS to 1 degree
18 p . scenpar . Per ClusterA S_D = 1;
19 p . scenpar . Per ClusterE S_A = 1;
20 p . scenpar . Per ClusterE S_D = 1;
21
22 p . g en_para meters ; % G e n e r a t e small - scale - fading p a r a m e t e r s
23 c = p . get_channels ; % G e n e r a t e channel c o e f f i c i e n t s
24
25 coeff = cat ( 5 , c . coeff ) ; % Extract a m p l i t u d e s and phases
26 delay = cat ( 5 , c . delay ) ; % Extract path delays
27
28 cf = reshape ( coeff (: ,1 ,: ,: ,:) , a . no_elements , 1 , [] ) ; % Format input for angle e s t i m a t i o n
29 [ az , el , J ] = qf . calc_angles ( cf , a , 1 , [] , 1 ) ; % C a l c u l a t e angles

1 SSF Corr . [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 2 seconds


2 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 33 seconds
3 Calc Angles [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 108 seconds

Results and discussion In the following plots, we extract parameters from the generated coefficients and
compare them with the initial ones which were generated by the ’qd builder’ object (p). The values in (p)
can be seen as a request to the channel builder and the values in the generated coefficients (c) as a delivery.

Copyright: Fraunhofer Heinrich Hertz Institute 142


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

We first calculate the SF from the channel data by summing up the power over all 20 taps. We see, that
the values are almost identical.
1 sf = mean ( sum ( sum ( abs ( coeff (1:29 ,1 ,: ,: ,:) ) .^2 ,3) ,1) ,4) ; % C a l c u l a t e shadow fading
2 sf = sf (:) ;
3
4 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change Paper Size
5 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
6
7 plot ( -35:35 , -35:35 , ’k ’)
8 hold on
9 plot ([ -35:35]+3 , -35:35 , ’ --k ’)
10 plot ([ -35:35] -3 , -35:35 , ’ --k ’)
11 plot ( 10* log10 ( p . sf ) , 10* log10 ( sf ) , ’ ob ’ , ’ Ma rk er f ac ec ol o r ’ , ’r ’)
12 hold off
13 axis ([ -15 , 15 , -15 , 15 ])
14 legend ( ’ Equal ’ , ’+/ - 3 dB ’ , ’ Location ’ , ’ SouthEast ’)
15 xlabel ( ’ SF_P [ dB ] ’) ; ylabel ( ’ SF_C [ dB ] ’) ;
16 title ( ’ Shadow Fading - Requested vs . generated value ’) ;

Shadow Fading - Requested vs. generated value


15

10

5
SFC [dB]

-5

-10 Equal
+/- 3dB
-15
-15 -10 -5 0 5 10 15
SFP [dB]

Next, we repeat the same calculation for the K-Factor. Again, we see that the values are almost identical.
1 p_nlos = mean ( sum ( sum ( abs ( coeff (1:29 ,1 ,2: end ,: ,:) ) .^2 ,3) ,1) ,4) ; % C a l c u l a t e NLOS power
2 p_los = mean ( sum ( sum ( abs ( coeff (1:29 ,1 , 1 ,: ,:) ) .^2 ,3) ,1) ,4) ; % C a l c u l a t e LOS power
3 kf = p_los ./ p_nlos ; % C a l c u l a t e K - Factor
4 kf = kf (:) ;
5
6 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
7 plot ( -35:35 , -35:35 , ’k ’)
8 hold on
9 plot ([ -35:35]+3 , -35:35 , ’ --k ’)
10 plot ([ -35:35] -3 , -35:35 , ’ --k ’)
11 plot ( 10* log10 ( p . kf ) , 10* log10 ( kf ) , ’ ok ’ , ’ Ma rk er f ac ec ol o r ’ , ’r ’)
12 hold off
13 axis ([ -30 , 30 , -30 , 30 ])
14 legend ( ’ Equal ’ , ’+/ - 3 dB ’ , ’ Location ’ , ’ SouthEast ’)
15 xlabel ( ’ KF_P [ dB ] ’) ;
16 ylabel ( ’ KF_C [ dB ] ’) ;
17 title ( ’K - Factor - Requested vs . generated value ’) ;

Copyright: Fraunhofer Heinrich Hertz Institute 143


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

K-Factor - Requested vs. generated value


30
20
10

KFC [dB]
0
-10
-20 Equal
+/- 3dB
-30
-30 -20 -10 0 10 20 30
KFP [dB]

Now we repeat the calculation for the RMS delays spread.


1 pow = reshape ( permute ( sum ( abs ( coeff (: ,1 ,: ,: ,:) ) .^2 ,1) , [5 ,4 ,3 ,1 ,2] ) , [] , c (1) . no_path ) ;
2 tau = reshape ( permute ( mean ( delay (: ,1 ,: ,: ,:) ,1) , [5 ,4 ,3 ,1 ,2] ) , [] , c (1) . no_path ) ;
3 pow_sum = sum ( pow ,2) ; % C a l c u l a t e sum - power
4
5 pow_tap = abs ( coeff ) .^2; % C a l c u l a t e path powers
6
7 mean_delay = sum ( pow .* tau ,2) ./ pow_sum ; % C a l c u l a t e mean delay
8 ds = sqrt ( sum ( pow .* tau .^2 ,2) ./ pow_sum - mean_delay .^2 ) ;
9 ds = mean ( reshape ( ds , l . no_rx ,[] ) ,2 ) ;
10
11 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
12 plot ([0:0.1:2] ,[0:0.1:2] , ’k ’)
13 hold on
14 plot ([0:0.1:2]*1.1 ,[0:0.1:2] , ’ --k ’)
15 plot ([0:0.1:2] ,[0:0.1:2]*1.1 , ’ --k ’)
16 plot ( p . ds ’*1 e6 , ( ds ’) *1 e6 , ’ ok ’ , ’ Ma r ke rf ac e co lo r ’ , ’r ’)
17 hold off
18 axis ([ 0 ,1.5 ,0 ,1.5 ])
19 legend ( ’ Equal ’ , ’+/ - 10% Error ’ , ’ Location ’ , ’ SouthEast ’)
20 xlabel ( ’ DS_P [\ mus ] ’) ;
21 ylabel ( ’ DS_C [\ mus ] ’) ;
22 title ( ’ Delay Spread - Requested vs . generated value ’) ;

Delay Spread - Requested vs. generated value


1.5

1
DSC [ s]

0.5

Equal
+/- 10% Error
0
0 0.5 1 1.5
DSP [ s]

Now we compare the angular spreads calculated from the channel coefficients with the values in the builder.
Most values are in the 10% error corridor. The deviations come from the per-cluster angular spreads, the
limited resolution of the antenna and the dependency of the maximal angular spread on the K-Factor.
1 az = reshape ( az , c (1) . no_path , [] , l . no_rx ) ;
2
3 ang = reshape ( permute ( az , [3 ,2 ,1] ) , [] , c (1) . no_path ) ;
4 asa = qf . c a l c _ a n g u l a r _ s p r e a d s ( ang , pow ) ;
5 asa = mean ( reshape ( asa , l . no_rx ,[] ) ,2 ) ;
6

Copyright: Fraunhofer Heinrich Hertz Institute 144


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

7 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure


8 plot ([0:180] ,[0:180] , ’k ’)
9 hold on
10 plot ([0:180]*1.1 ,[0:180] , ’ --k ’)
11 plot ([0:180] ,[0:180]*1.1 , ’ --k ’)
12 plot ( p . asA ’ , asa *180/ pi , ’ ok ’ , ’ M a rk er fa c ec ol or ’ , ’r ’)
13 hold off
14 axis ([ 0 ,80 ,0 ,80 ])
15 legend ( ’ Equal ’ , ’+/ - 10% Error ’ , ’ Location ’ , ’ SouthEast ’)
16 xlabel ( ’ ASA_P [ deg ] ’) ;
17 ylabel ( ’ ASA_C [ deg ] ’) ;
18 title ( ’ Azimuth Spread of Arrival Angles - Requested vs . generated value ’) ;

Azimuth Spread of Arrival Angles - Requested vs. generated value


80

60
ASAC [deg]

40

20
Equal
+/- 10% Error
0
0 10 20 30 40 50 60 70 80
ASAP [deg]

The same calculations are made for the elevation angles.


1 el = reshape ( el , c (1) . no_path , [] , l . no_rx ) ;
2
3 ang = reshape ( permute ( el , [3 ,2 ,1] ) , [] , c (1) . no_path ) ;
4 esa = qf . c a l c _ a n g u l a r _ s p r e a d s ( ang , pow ) ;
5 esa = mean ( reshape ( esa , l . no_rx ,[] ) ,2 ) ;
6
7 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
8 plot ([0:180] ,[0:180] , ’k ’)
9 hold on
10 plot ([0:180]*1.1 ,[0:180] , ’ --k ’)
11 plot ([0:180] ,[0:180]*1.1 , ’ --k ’)
12 plot ( p . esA ’ , esa *180/ pi , ’ ok ’ , ’ M a rk er fa c ec ol or ’ , ’r ’)
13 hold off
14 axis ([ 0 ,40 ,0 ,40 ])
15 legend ( ’ Equal ’ , ’+/ - 10% Error ’ , ’ Location ’ , ’ SouthEast ’)
16 xlabel ( ’ ESA_P [ deg ] ’) ;
17 ylabel ( ’ ESA_C [ deg ] ’) ;
18 title ( ’ Elevation Spread of Arrival Angles - Requested vs . generated value ’) ;

Elevation Spread of Arrival Angles - Requested vs. generated value


40

30
ESAC [deg]

20

10
Equal
+/- 10% Error
0
0 5 10 15 20 25 30 35 40
ESAP [deg]

The transmitter at the BS sends a vertically polarized and a LHCP wave. When the wave is scattered, the
polarization is changed. The array antenna is able to measure the Jones-vector of the incoming wave (after

Copyright: Fraunhofer Heinrich Hertz Institute 145


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

the reflection). Hence, it is possible to calculate the XPR of the scattering events. Likewise, the polarization
of the LHCP singal is changed during scattering. We use the power-ratio of the RHCP receiv antenna to
the LHCP receive antenna to determine the circular XPR.
1 xpr = abs ( J (1 ,1 ,:) ) .^2 ./ abs ( J (2 ,1 ,:) ) .^2;
2 xpr = reshape ( xpr , c (1) . no_path , [] , l . no_rx ) ;
3 xpr = mean ( mean ( xpr (2: end ,: ,:) ,1) ,2) ;
4 xpr = xpr (:) ;
5
6 xprC = abs ( coeff (31 ,2 ,: ,: ,:) ) .^2 ./ abs ( coeff (30 ,2 ,: ,: ,:) ) .^2;
7 xprC = mean ( mean ( xprC (1 ,1 ,2: end ,: ,:) ,3) ,4) ;
8 xprC = xprC (:) ;
9
10 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
11 plot ( -35:35 , -35:35 , ’k ’)
12 hold on
13 plot ([ -35:35]+3 , -35:35 , ’ --k ’)
14 plot ( 10* log10 ( p . xpr ) ’ , 10* log10 ( xpr ) , ’ ok ’ , ’ M ar ke r fa ce c ol or ’ , ’b ’)
15 plot ( 10* log10 ( p . xpr ) ’ , 10* log10 ( xprC ) , ’ ok ’ , ’ M a rk er fa c ec ol or ’ , ’r ’)
16 plot ([ -35:35] -3 , -35:35 , ’ --k ’)
17 hold off
18 axis ([ -30 , 30 , -30 , 30 ])
19 legend ( ’ Equal ’ , ’+/ - 3 dB ’ , ’ Linear XPR ’ , ’ Circular XPR ’ , ’ Location ’ , ’ SouthEast ’)
20 xlabel ( ’ XPR_P [ dB ] ’) ;
21 ylabel ( ’ XPR_C [ dB ] ’) ;
22 title ( ’ XPR - Requested vs . generated value ’) ;

XPR - Requested vs. generated value


30

20

10
XPRC [dB]

-10 Equal
+/- 3dB
-20 Linear XPR
Circular XPR
-30
-30 -20 -10 0 10 20 30
XPRP [dB]

Lastly, it is checked if the requested inter-parameter correlations are also found in the channel coefficients.
1 disp ([ ’ Corr . KF - ASA : ’ , num2str ( qf . xcorrcoeff ( 10* log10 ( kf ) , log10 ( asa ) ) , ’ %1.2 f ’) ])
2 disp ([ ’ Corr . KF - ESA : ’ , num2str ( qf . xcorrcoeff ( 10* log10 ( kf ) , log10 ( esa ) ) , ’ %1.2 f ’) ])
3 disp ([ ’ Corr . KF - SF : ’ , num2str ( qf . xcorrcoeff ( 10* log10 ( kf ) , 10* log10 ( sf ) ) , ’ %1.2 f ’) ])
4 disp ([ ’ Corr . KF - DS : ’ , num2str ( qf . xcorrcoeff ( 10* log10 ( kf ) , log10 ( ds ) ) , ’ %1.2 f ’) ])
5 disp ([ ’ Corr . DS - SF : ’ , num2str ( qf . xcorrcoeff ( log10 ( ds ) , 10* log10 ( sf ) ) , ’ %1.2 f ’) ])
6 disp ([ ’ Corr . DS - ASA : ’ , num2str ( qf . xcorrcoeff ( log10 ( ds ) , log10 ( asa ) ) , ’ %1.2 f ’) ])
7 disp ([ ’ Corr . DS - ESA : ’ , num2str ( qf . xcorrcoeff ( log10 ( ds ) , log10 ( esa ) ) , ’ %1.2 f ’) ])
8 disp ([ ’ Corr . ASA - ESA : ’ , num2str ( qf . xcorrcoeff ( log10 ( asa ) , log10 ( esa ) ) , ’ %1.2 f ’) ])

1 Corr . KF - ASA : -0.67


2 Corr . KF - ESA : -0.66
3 Corr . KF - SF : 0.22
4 Corr . KF - DS : -0.09
5 Corr . DS - SF : 0.17
6 Corr . DS - ASA : 0.19
7 Corr . DS - ESA : 0.04
8 Corr . ASA - ESA : 0.65

4.8 Time Evolution and Scenario Transitions

This tutorial shows how user trajectories, segments, and scenarios are defined. Channel coefficients are
created for each segment separately. The channel merger combines these output into a longer sequence.

Copyright: Fraunhofer Heinrich Hertz Institute 146


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

The output sequences are evaluated for different settings of the model. The channel model generates the
coefficients separately for each segment. In order to get a time-continuous output, these coefficients have
to be combined. This is a feature which is originally described in the documentation of the WIM2 channel
model, but which was never implemented. Since this component is needed for time-continuous simulations,
it was implemented here. This script sets up the simulation and creates such time-continuous CIRs.

Channel model setup and coefficient generation First, we set up the channel model.
1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10
11 s = qd_simulation_parameters ; % New s i m u l a t i o n p a r a m e t e r s
12 s . c en t e r _ f r e q u e n c y = 2.53 e9 ; % 2.53 GHz carrier f r e q u e n c y
13 s . s ample_d ensity = 4; % 4 samples per half - w a v e l e n g t h
14 s . u s e _ a b s o l u t e _ d e l a y s = 1; % Include delay of the LOS path
15 s . s ho w _ p r o g r e s s _ b a r s = 1; % Disable p r o g r e s s bars

Second, we create a more complex network layout featuring an elevated transmitter (25 m) and two receivers
at 1.5 m height. The first Rx moves along a circular track around the receiver. The second receiver moves
away from the Tx. Both start at the same point. Note here, that each track is split into three segments.
The first Rx goes from an LOS area to a shaded area and back. The second track also start in the LOS
area. Here, the scenario changes to another LOS segment and then to an NLOS segment. The LOS-LOS
change will create new small-scale fading parameters, but the large scale parameters (LSPs) will be highly
correlated between those two segments.
1 l = qd_layout ( s ) ; % Create new Q u a D R i G a layout
2 l . no_rx = 2; % Two r e c e i v e r s
3 l . tx_array = qd_arrayant ( ’ dipole ’) ; % Dipole a n t e n n a s at all Rx and Tx
4 l . rx_array = l . tx_array ;
5 l . tx_position (3) = 25; % Elevate Tx to 25 m
6
7 UMal = ’ B ERLIN_U Ma_LOS ’; % LOS s c e n a r i o name
8 UMan = ’ B ER LI N_ U Ma _N LO S ’; % NLOS s c e n a r i o name
9
10 l . rx_track (1 ,1) = qd_track ( ’ circular ’ ,20* pi ,0) ; % C i r c u l a r track with 10 m radius
11 l . rx_track (1 ,1) . i n i t i a l _ p o s i t i o n = [10;0;1.5]; % Start east , running north
12 l . rx_track (1 ,1) . segment_index = [1 ,40 ,90]; % Segments
13 l . rx_track (1 ,1) . scenario = { UMal , UMan , UMal }; % Scenarios
14 l . rx_track (1 ,1) . name = ’ Rx1 ’;
15
16 l . rx_track (1 ,2) = qd_track ( ’ linear ’ ,20 , pi /8) ; % Linear track , 20 m length
17 l . rx_track (1 ,2) . i n i t i a l _ p o s i t i o n = [10;0;1.5]; % Same start point
18 l . rx_track (1 ,2) . i n t e r p o l a t e _ p o s i t i o n s ( 128/20 ) ;
19 l . rx_track (1 ,2) . segment_index = [1 ,40 ,90]; % Segments
20 l . rx_track (1 ,2) . scenario = { UMal , UMal , UMan }; % Scenarios
21 l . rx_track (1 ,2) . name = ’ Rx2 ’;
22
23 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Adjust paper size for plot
24 l . visualize ; % Plot the layout
25
26 i n t e r p o l a t e _ p o s i t i o n s ( l . rx_track , s . s a m p l e s _ p e r _ m e t e r ) ; % Interpolate
27 c a l c _ o r i e n t a t io n ( l . rx_track ) ; % Align antenna d i r e c t i o n with track

Copyright: Fraunhofer Heinrich Hertz Institute 147


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Tx-Position
20
Tx-Antenna
Tx-Track
15 Rx-Position
Rx-Antenna
Rx-Track
10

BERLIN_UMa_LOS BERLIN_UMa_NLOS
y-coord in [m]
5 BERLIN_UMa_NLOS
BERLIN_UMa_LOS
0 Tx0001 BERLIN_UMa_LOS

-5

-10 BERLIN_UMa_LOS

-15

-20

-10 -5 0 5 10 15 20 25 30
x-coord in [m]

Now we create the channel coefficients. The fixing the random seed guarantees repeatable results (i.e. the
taps will be at the same positions for both runs). Also note the significantly longer computing time when
drifting is enabled.
1 disp ( ’ Drifting enabled : ’) ;
2 p = l . init_builder ; % Create channel b u i l d e r s
3 gen_paramete rs ( p ) ; % G e n e r a t e small - scale fading
4 c = get_channels ( p ) ; % G e n e r a t e channel c o e f f i c i e n t s
5 cn = merge ( c ) ;
6
7 disp ( ’ Drifting disabled : ’) ;
8 warning ( ’ off ’ , ’ QuaDRiGa : qd_builder : g e n _ s s f _ p a r a m e t e r s : exisitng ’)
9
10 s . u s e _ 3 G P P _ b a s e l i n e = 1; % Disable d r i f t i n g
11 gen_paramete rs (p ,2) ; % Update small - scale fading
12 gen_paramete rs (p ,3) ; % Calc . FBS / LBS P o s i t i o n s
13 d = get_channels ( p ) ; % G e n e r a t e channel c o e f f i c i e n t s
14 dn = merge ( d ) ;

1 Drifting enabled :
2 SSF Corr . [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 1 seconds
3 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 40 seconds
4 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 1 seconds
5 Drifting disabled :
6 SSF Corr . [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds
7 SSF Corr . [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds
8 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 3 seconds
9 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds

Results and discussion Now we plot the and discuss the results. We start with the power of the LOS tap
along the circular track and compare the outcome with and without drifting.
1 degrees = (0: cn (1 ,1) . no_snap -1) / cn (1) . no_snap * 360;
2 los_pwr_drift = 10* log10 ( squeeze ( abs ( cn (1) . coeff (1 ,1 ,1 ,:) ) ) .^2) ;
3 l os _p w r_ no dr i ft = 10* log10 ( squeeze ( abs ( dn (1) . coeff (1 ,1 ,1 ,:) ) ) .^2) ;
4
5 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change Paper Size
6 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
7 plot ( degrees , los_pwr_drift )
8 hold on
9 plot ( degrees , l o s_ pw r_ n od ri ft , ’ -. r ’)
10 hold off
11

Copyright: Fraunhofer Heinrich Hertz Institute 148


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

12 a = axis ; axis ( [0 360 a (3:4) ] ) ;


13 xlabel ( ’ Position on circle [ deg ] ’) ;
14 ylabel ( ’ Power of the LOS component ’) ;
15 title ( ’ Power of the LOS component for the circular track ’) ;
16 legend ( ’ Drifting ’ , ’ No drifting ’ , ’ Location ’ , ’ SouthEast ’) ;

Power of the LOS component for the circular track


-90

Power of the LOS component


-100

-110

-120

-130 Drifting
No drifting
-140
0 50 100 150 200 250 300 350
Position on circle [deg]

When drifting is enabled (blue curve), the channel output after merging is time-continuous. The variations
along the track come from the drifting K-Factor and the drifting shadow fading. When drifting is disabled,
these parameters are not updated and kept fixed at their initial value. At the end of each segment, both
channels are cross-faded, i.e. the power of the output of the first segment ramps down and the power of the
second segment ramps up. Since drifting guarantees a time-continuous evolution of the phase, this ramping
process is also time continuous and no artifacts are visible in the blue curve. Without drifting, the phases are
approximated based on their initial values, the initial arrival and departure angles and the traveled distance
from the start point. However, since the Rx moves along a circular track, the angles change continuously
which is not correctly modeled. The phase at the end of the first segment does not match the phase at the
beginning of the second. When adding both components, artifacts appear as can be seen in the red curve.

Next, we plot the power-delay profiles for both tracks. We calculate the frequency response of the channel
and transform it back to time domain by an IFFT. Then, we create a 2D image of the received power at
each position of the track. We start with the circular track.
1 h = cn (1 ,1) . fr ( 100 e6 ,512 ) ; % Freq . - domain channel
2 h = squeeze ( h ) ; % Remove s i n g l e t o n d i m e n s i o n s
3 pdp = 10* log10 ( abs ( ifft (h ,[] ,1) . ’) .^2) ; % Power - delay profile
4
5 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
6 imagesc ( pdp (: ,1:256) ) ;
7
8 caxis ([ max ( max ( pdp ) ) -50 max ( max ( pdp ) ) -5 ]) ; colorbar ; % Figure d e c o r a t i o n s
9 cm = colormap ( ’ hot ’) ; colormap ( cm ( end : -1:1 ,:) ) ;
10 set ( gca , ’ XTick ’ ,1:32:255) ; set ( gca , ’ XTickLabel ’ ,(0:32:256) /100 e6 *1 e6 ) ;
11 set ( gca , ’ YTick ’ ,1: cn (1) . no_snap /8: cn (1) . no_snap ) ;
12 set ( gca , ’ YTickLabel ’ , (0: cn (1) . no_snap /8: cn (1) . no_snap ) / cn (1) . no_snap * 360 ) ;
13 xlabel ( ’ Delay [\ mus ] ’) ; ylabel ( ’ Position on circle [ deg ] ’) ;
14 title ( ’ PDP for the circular track with drifting ’) ;

Copyright: Fraunhofer Heinrich Hertz Institute 149


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

PDP for the circular track with drifting


0 -90
45

Position on circle [deg]


90 -100

135
-110
180
225
-120
270
315 -130

0 0.32 0.64 0.96 1.28 1.6 1.92 2.24


Delay [ s]

The X-axis shows the delay in microseconds and the Y-axis shows the position on the circle. For easier
navigation, the position is given in degrees. 0 deg means east (starting point), 90 deg means north, 180
deg west and 270 deg south. The LOS delay stays constant since the distance to the Tx is also constant.
However, the power of the LOS changes according to the scenario. Also note, that the NLOS segment has
more paths due to the longer delay spread.

Next, we create the same plot for the linear track. Note the slight increase in the LOS delay and the high
similarity of the first two LOS segments due to the correlated LSPs. Segment change is at around 6 m.
1 h = cn (1 ,2) . fr ( 100 e6 ,512 ) ; % Freq . - domain channel
2 h = squeeze ( h ) ; % Remove s i n g l e t o n d i m e n s i o n s
3 pdp = 10* log10 ( abs ( ifft (h ,[] ,1) . ’) .^2) ; % Power - delay profile
4
5 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
6 imagesc ( pdp (: ,1:256) ) ;
7
8 caxis ([ max ( max ( pdp ) ) -50 max ( max ( pdp ) ) -5 ]) ; colorbar ; % Figure d e c o r a t i o n s
9 cm = colormap ( ’ hot ’) ; colormap ( cm ( end : -1:1 ,:) ) ;
10 set ( gca , ’ XTick ’ ,1:32:255) ; set ( gca , ’ XTickLabel ’ ,(0:32:256) /100 e6 *1 e6 ) ;
11 set ( gca , ’ YTick ’ ,1: cn (2) . no_snap /8: cn (2) . no_snap ) ;
12 set ( gca , ’ YTickLabel ’ , (0: cn (2) . no_snap /8: cn (2) . no_snap ) / cn (2) . no_snap * 20 ) ;
13 xlabel ( ’ Delay [\ mus ] ’) ; ylabel ( ’ Distance from start point [ m ] ’) ;
14 title ( ’ PDP for the linear track with drifting ’) ;

PDP for the linear track with drifting


0 -90
Distance from start point [m]

2.5
5 -100

7.5
-110
10
12.5
-120
15
17.5 -130

0 0.32 0.64 0.96 1.28 1.6 1.92 2.24


Delay [ s]

Last, we plot the same results for the linear track without drifting. Note here, that the LOS delay is not
smooth during segment change. There are two jumps at 6 m and again at 13.5 m.
1 h = dn (1 ,2) . fr ( 100 e6 ,512 ) ; % Freq . - domain channel
2 h = squeeze ( h ) ; % Remove s i n g l e t o n d i m e n s i o n s
3 pdp = 10* log10 ( abs ( ifft (h ,[] ,1) . ’) .^2) ; % Power - delay profile
4
5 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
6 imagesc ( pdp (: ,1:256) ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 150


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

7
8 caxis ([ max ( max ( pdp ) ) -50 max ( max ( pdp ) ) -5 ]) ; colorbar ; % Figure d e c o r a t i o n s
9 cm = colormap ( ’ hot ’) ; colormap ( cm ( end : -1:1 ,:) ) ;
10 set ( gca , ’ XTick ’ ,1:32:255) ; set ( gca , ’ XTickLabel ’ ,(0:32:256) /100 e6 *1 e6 ) ;
11 set ( gca , ’ YTick ’ ,1: cn (2) . no_snap /8: cn (2) . no_snap ) ;
12 set ( gca , ’ YTickLabel ’ , (0: cn (2) . no_snap /8: cn (2) . no_snap ) / cn (2) . no_snap * 20 ) ;
13 xlabel ( ’ Delay [\ mus ] ’) ; ylabel ( ’ Distance from start point [ m ] ’) ;
14 title ( ’ PDP for the linear track without drifting ’) ;

PDP for the linear track without drifting


Distance from start point [m] 0 -90
2.5
5 -100

7.5
-110
10
12.5
-120
15
17.5 -130

0 0.32 0.64 0.96 1.28 1.6 1.92 2.24


Delay [ s]

4.9 Applying Varying Speeds (Channel Interpolation)

This tutorial shows how to adjust the speed of the terminal, e.g. when breaking or accelerating. First,
a simple scenario defined. Channel coefficients are calculated at a constant speed and then interpolated
to match the varying speed of the terminal. One feature that makes the simulations more realistic is the
function to apply arbitrary speed- and movement profiles, e.g. accelerating, breaking or moving at any
chosen speed. These profiles are defined in the track class. The profiles are then converted in to effective
sampling points which aid the interpolation of the channel coefficients.

Channel model set-up First, we set up the simulation parameters. Note the sample density of 1.2 which
enables very fast simulations even with drifting. The sample density must fulfill the Nyquist theorem, i.e.,
there must be at least 1 sample per half-wavelength in order to be able to interpolate the channels correctly.
Note that when both transmitter and receiver are mobile, the minimum value is 2 since they may move
towards each other.
1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10
11 s = qd_simulation_parameters ; % New s i m u l a t i o n p a r a m e t e r s
12 s . c en t e r _ f r e q u e n c y = 2.53 e9 ; % 2.53 GHz carrier f r e q u e n c y
13 s . s ample_d ensity = 1.2; % 2.5 samples per half - w a v e l e n g t h
14 s . u s e _ a b s o l u t e _ d e l a y s = 1; % Include delay of the LOS path
15 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bars

Second, we define a track. It has a length of 20 m, starts at 10 m east of the transmitter and consists of
three segments (LOS, NLOS, LOS). The positions are interpolated to match the sample density defined
above. The track is then plugged into a network layout with one transmitter at position (0,0,25). Both,
transmitter and receiver are equipped with dipole antennas. The last three lines create the large scale
parameters (LSPs).

Copyright: Fraunhofer Heinrich Hertz Institute 151


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 t = qd_track ( ’ linear ’ ,20 , - pi /8) ; % 20 m track , d i r e c t i o n SE


2 t . i ni t i a l _ p o s i t i o n = [60;0;1.5]; % Start p o s i t i o n
3 t . i n t e r p o l a t e _ p o s i t i o n s ( 128/20 ) ; % Interpolate
4 t . segment_index = [1 ,40 ,90]; % Assign s e g m e n t s
5 t . scenario = { ’ BERLIN_U Ma_LOS ’ , ’ BE RL IN _ UM a_ NL O S ’ , ’ BERL IN_UMa_L OS ’ };
6 t. interpolate_positions ( s. samples_per_meter ); % Apply sample density
7
8 l = qd_layout ( s ) ; % New Q u a D R i G a layout
9 l . tx_array = qd_arrayant ( ’ dipole ’) ; % Set Dipole antenna
10 l . rx_array = qd_arrayant ( ’ dipole ’) ; % Set Dipole antenna
11 l . tx_position (3) = 25; % BE height
12 l . rx_track = t ; % Assign track
13
14 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Adjust paper size for plot
15 l . visualize ; % Plot the layout

Tx-Position
Tx-Antenna
30 Tx-Track
Rx-Position
Rx-Antenna
20 Rx-Track

10
y-coord in [m]

Tx0001
0 BERLIN_UMa_LOS
BERLIN_UMa_NLOS
BERLIN_UMa_LOS
-10

-20

-30

-40

0 10 20 30 40 50 60 70 80
x-coord in [m]

Channel generation and results Next, we generate the channel coefficients. Note that here, the initial
sample density is 1.2. We then interpolate the sample density to 20. It would take ten times as long to
achieve the same result with setting the initial sample density to 20. The interpolation is significantly faster.
It is done by first setting the speed to 1 m/s (default setting) and then creating a distance vector which
contains a list of effective sampling points along the track.
1 cn = l . get_channels ; % Generate channels
2
3 t . set_speed ( 1 ) ; % Set c o n s t a n t speed
4 dist = t . i n t e r p o l a t e _ m o v e m e n t ( s . wavelength /(2*20) ) ; % Get s n a p s h o t p o s i t i o n s
5 ci = cn . interpolate ( dist ) ; % Interpolate channels

The next plot shows the power of the first three taps from both, the original and the interpolated channel,
plotted on top of each other. The values are identical except for the fact, that the interpolated values (blue
line) have 17 times as many sample points.
1 nsnap = cn . no_snap ; % No . s n a p s h o t s
2 dist_orig = (0: nsnap -1) * t . get_length /( nsnap -1) ; % Distances
3 pwr_orig = 10* log10 ( squeeze ( abs ( cn . coeff (1 ,1 ,1:3 ,:) ) ) .^2) ; % Power before i n t e r p o l a t i o n
4 pwr_int = 10* log10 ( squeeze ( abs ( ci . coeff (1 ,1 ,1:3 ,:) ) ) .^2) ; % Power after i n t e r p o l a t i o n
5
6 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change Paper Size
7 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
8
9 plot ( dist_orig , pwr_orig , ’r ’ , ’ Linewidth ’ ,2 )

Copyright: Fraunhofer Heinrich Hertz Institute 152


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

10 hold on
11 plot ( dist , pwr_int , ’b ’ )
12 hold off
13 axis ([ min ( dist ) , max ( dist ) , min ( pwr_orig ( pwr_orig > -160 ) ) ,...
14 max ( pwr_orig ( pwr_orig > -160 ) ) +10 ] ) ;
15 xlabel ( ’ Distance from start point [ m ] ’) ; ylabel ( ’ Power [ dB ] ’) ;

-80
-90
-100
Power [dB]

-110
-120
-130
-140

0 5 10 15 20
Distance from start point [m]

The following plot shows the power delay profile (PDP) for the interpolated channel. As defined in the track
object, it starts with a LOS segment, going into a shaded area with significantly more multipath fading at
around 4 seconds and then back to LOS at around 13 sec.
1 h = ci . fr ( 100 e6 ,512 ) ; % Freq . - domain channel
2 h = squeeze ( h ) ; % Remove s i n g l e t o n d i m e n s i o n s
3 pdp = 10* log10 ( abs ( ifft (h ,[] ,1) . ’) .^2) ; % Power - delay profile
4
5 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
6 imagesc ( pdp (: ,1:256) ) ;
7
8 caxis ([ max ( max ( pdp ) ) -50 max ( max ( pdp ) ) -5 ]) ; colorbar ; % Figure d e c o r a t i o n s
9 cm = colormap ( ’ hot ’) ; colormap ( cm ( end : -1:1 ,:) ) ;
10 set ( gca , ’ XTick ’ ,1:32:255) ; set ( gca , ’ XTickLabel ’ ,(0:32:256) /100 e6 *1 e6 ) ;
11 set ( gca , ’ YTick ’ ,1: ci . no_snap /8: ci . no_snap ) ;
12 set ( gca , ’ YTickLabel ’ , (0: ci . no_snap /8: ci . no_snap ) / ci . no_snap * 20 ) ;
13 xlabel ( ’ Delay [\ mus ] ’) ; ylabel ( ’ Time [ s ] ’) ;
14 title ( ’ PDP with fixed speed ’) ;

PDP with fixed speed


0
2.5
-100
5
7.5
Time [s]

-110
10
12.5 -120
15
17.5 -130

0 0.32 0.64 0.96 1.28 1.6 1.92 2.24


Delay [ s]

Now, we create a movement profile. It is defined by a set of value pairs in track.movement profile. The first
value represents the time in seconds, the second value the position on the track. Here, we start at a position
of 7 m, i.e. in the second (NLOS) segment. We then go back to the beginning of the track. This takes 5
seconds. Then, we wait there for 1 second and go to the end of the track, which we reach after additional
14 seconds. The next step is to interpolate the sample points. This is done by the interpolate movement
method. It requires the sample interval (in s) as an input argument. Here, we choose an interval of 1 ms
which gives us 1000 samples per second. The plot the illustrates the results.

Copyright: Fraunhofer Heinrich Hertz Institute 153


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 t . m ov e m e n t _ p r o f i l e = [ 0 ,7 ; 5 ,0 ; 6 ,0 ; 20 ,20 ] ’; % G e n e r a t e m o v e m e n t profile
2 dist = t . i n t e r p o l a t e _ m o v e m e n t ( 1e -3 ) ; % Get s n a p s h o t p o s i t i o n s
3 ci = cn . interpolate ( dist ) ; % Interpolate channels
4
5 nsnap = ci . no_snap ;
6 time = (0: nsnap -1) * t . m o v e m e n t _ p r o f i l e (1 , end ) /( nsnap -1) ;
7
8 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
9 plot ( time , dist , ’r ’ )
10 xlabel ( ’ Time [ s ] ’) ; ylabel ( ’ Position on track [ m ] ’) ;
11 title ( ’ Movement profile ’) ;

Movement profile
20
Position on track [m]

15

10

0
0 5 10 15 20
Time [s]

The last plot shows the PDP of the interpolated channel with the movement profile applied. The channel
starts in the second segment with a lot of fading, goes back to the first while slowing down at the same
time. After staying constant for one second, the channel starts running again, speeding up towards the end
of the track.
1 h = ci . fr ( 100 e6 ,512 ) ; % Freq . - domain channel
2 h = squeeze ( h ) ; % Remove s i n g l e t o n d i m e n s i o n s
3 pdp = 10* log10 ( abs ( ifft (h ,[] ,1) . ’) .^2) ; % Power - delay profile
4
5 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
6 imagesc ( pdp (: ,1:256) ) ;
7
8 caxis ([ max ( max ( pdp ) ) -50 max ( max ( pdp ) ) -5 ]) ; colorbar ; % Figure d e c o r a t i o n s
9 cm = colormap ( ’ hot ’) ; colormap ( cm ( end : -1:1 ,:) ) ;
10 set ( gca , ’ XTick ’ ,1:32:255) ; set ( gca , ’ XTickLabel ’ ,(0:32:256) /100 e6 *1 e6 ) ;
11 set ( gca , ’ YTick ’ ,1: ci . no_snap /8: ci . no_snap ) ;
12 set ( gca , ’ YTickLabel ’ , (0: ci . no_snap /8: ci . no_snap ) / ci . no_snap * 20 ) ;
13 xlabel ( ’ Delay [\ mus ] ’) ; ylabel ( ’ Time [ s ] ’) ;
14 title ( ’ PDP with variable speed ’) ;

PDP with variable speed


0
2.5
-100
5
7.5
Time [s]

-110
10
12.5 -120
15
17.5 -130

0 0.32 0.64 0.96 1.28 1.6 1.92 2.24


Delay [ s]

The following code segment shows a movie of the channel response. (You nedd to run the code manually in
MATLAB or Octave)

Copyright: Fraunhofer Heinrich Hertz Institute 154


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 if 0
2 h = ci . fr ( 20 e6 ,128 ) ;
3 h = squeeze ( h ) ;
4 mi = -90; ma = -80;
5 while true
6 for n = 1: size (h ,2)
7 pdp = 10* log10 ( abs ( h (: , n ) ) .^2) ;
8 plot ( pdp )
9 ma = max ( ma , max ([ pdp ]) ) ;
10 mi = min ( mi , min ([ pdp ]) ) ;
11 axis ([1 ,128 , mi , ma ])
12 title ( round ( time ( n ) ) )
13 drawnow
14 end
15 end
16 end

4.10 Resimulating a Measured Scenario

This more complex tutorial shows how to manually define a state sequence (i.e. a sequence of scenario
transitions), manipulate antennas, create large-scale-parameters such as shadow fading and delay spread,
and obtain a time series of channel coefficients. This script recreates a measured drive test from the Park Inn
Hotel at Berlin Alexanderplatz. The transmitter was at the rooftop of the hotel while the mobile receiver
was moving south on Grunerstraße. A simplified version of the scenario is recreated in the simulation where
the scenarios along the track were classified by hand.

Channel model set-up and coefficient generation The following code configures some basic parameters.
1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10
11 s = qd_simulation_parameters ; % New s i m u l a t i o n p a r a m e t e r s
12 s . c en t e r _ f r e q u e n c y = 2.53 e9 ; % 2.53 GHz carrier f r e q u e n c y
13 s . u s e _ a b s o l u t e _ d e l a y s = 1; % Include delay of the LOS path
14 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bars

We generate a track of 500 m length. This track is then interpolated to 1 snapshot per meter. In this way, it
is possible to assign segments to the track using units of meters. The ”segment index” contains the segment
start points in units of meters relative to the track start point.
1 t = qd_track ( ’ linear ’ ,500 , -135* pi /180) ; % Track of 500 m length , d i r e c t i o n SE
2 t . i ni t i a l _ p o s i t i o n = [120; -120;0]; % Start p o s i t i o n
3 t. interpolate_positions ( 1 ); % I n t e r p o l a t e to 1 sample per meter
4 t . segment_index = [1 ,45 ,97 ,108 ,110 ,160 ,190 ,215 ,235 ,245 ,280 ,295 ,304 ,330 ,400 ,430 ]; % S e g m e n t s

We now assign the the scenarios to the segments. Since the measurements were done in a satellite context,
we use the ”MIMOSA 10-45 LOS” and ”MIMOSA 10-45 NLOS” scenario. The track is then interpolated
to 3 snapshots per meter.
1 Sl = ’ MIMOSA_10 -45 _LOS ’;
2 Sn = ’ MIMOSA_10 -45 _NLOS ’;
3 t . scenario = { Sn , Sl , Sn , Sl , Sn , Sn , Sn , Sl , Sn , Sl , Sn , Sl , Sn , Sn , Sn , Sn };
4 t. interpolate_positions ( 3 ); % I n t e r p o l a t e to 3 sample per meter

A new QuaDRiGa layout is created, simulations parameters and the receiver track get assigned. When the
channel coefficients are generated, there is a merging interval at the end of each segment during which paths
from the old segment disappear and new paths appear. The method ”correct overlap” adjusts the segment
start and end-points such that this transitions happens in the middle of the assigned segment start and
end-points.

Copyright: Fraunhofer Heinrich Hertz Institute 155


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 l = qd_layout ( s ) ; % New Q u a D R i G a layout


2 l . tx_position = [0;0;125]; % Set the p o s i t i o n of the Tx
3 l . rx_track = copy ( t ) ; % Set the rx - track
4 l . rx_track . co r re ct _o v er la p ; % Adjust state change p o s i t i o n

Now, we assign antennas and set the antenna orientations.


1 l . tx_array = qd_arrayant ( ’ lhcp - rhcp - dipole ’) ; % G e n e r a t e Tx antenna
2 l . tx_array . r otate_pa ttern (30 , ’y ’) ; % 30 deg d o w n t i l t
3 l . tx_array . r otate_pa ttern ( -90 , ’z ’) ; % point s o u t h w a r d s
4
5 l . rx_array = qd_arrayant ( ’ lhcp - rhcp - dipole ’) ; % Rx - Antenna
6 l . rx_array . r otate_pa ttern ( -90 , ’y ’) ; % point s k y w a r d s
7
8 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Adjust paper size for plot
9 l . visualize ; % Plot the layout
10 view ( -33 , 45) ; % 3 D view
11
12 % Plot a line from the Tx to the Rx
13 lnk = [ l . tx_position ,...
14 l . rx_track . positions (: , l . rx_track . segment_index (2) ) + l . rx_track . i n i t i a l _ p o s i t i o n ];
15 hold on ; plot3 ( lnk (1 ,:) , lnk (2 ,:) , lnk (3 ,:) , ’ -- ’ ) ; hold off

Tx-Position
Tx-Antenna
Tx-Track
Tx0001 Rx-Position
150 Rx-Antenna
Rx-Track
z-coord in [m]

100

50
MIMOSA_10-45_NLOS
MIMOSA_10-45_LOS
0 MIMOSA_10-45_NLOS
MIMOSA_10-45_LOS
MIMOSA_10-45_NLOS
0 MIMOSA_10-45_NLOS
MIMOSA_10-45_NLOS
MIMOSA_10-45_LOS
MIMOSA_10-45_NLOS
-100 MIMOSA_10-45_LOS
MIMOSA_10-45_NLOS
MIMOSA_10-45_LOS
MIMOSA_10-45_NLOS
-200 MIMOSA_10-45_NLOS 200
MIMOSA_10-45_NLOS 100
-300 MIMOSA_10-45_NLOS
0
-400 -100
y-coord in [m] -500 -200
-300 x-coord in [m]

The last step generates the channel coefficients. The warning ’Sample density in tracks does not fulfill
the sampling theoreme.’ refers to the violation of the Nyquist theoreme. Hence, it will not be possible to
interpolate the channel coefficients. However, this is not required here since we are only interested in the
channel statistics.
1 cn = l . get_channels ; % G e n e r a t e channel c o e f f i c i e n t s
2 cn . i n d i v i d u a l _ d e l a y s = 0; % Remove per - antenna delays

1 Warning : Sample density in tracks does not fulfill the sampling theoreme .

Results First, we plot the PDP vs. distance from the start point. For this, the channel bandwidth is
reduced to 20 MHz. You can see how the delay of the LOS path sifts with the distance between BS and
MT, how the LOS segments have more power, and how NLOS paths appear and disappear along the track.
1 h = cn . fr ( 20 e6 ,256 ) ; % Freq . - domain channel
2 pdp = squeeze ( sum ( sum ( abs ( ifft (h ,[] ,3) ) .^2 , 1) ,2) ) ;
3 pdp = 10* log10 ( pdp . ’) ;

Copyright: Fraunhofer Heinrich Hertz Institute 156


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

4
5 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change paper Size
6 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
7 imagesc ( pdp ( end : -1:1 ,1:192) ) ;
8
9 caxis ([ max ( max ( pdp ) ) -60 max ( max ( pdp ) ) -5 ]) ; colorbar ; % Figure d e c o r a t i o n s
10 cm = colormap ( ’ hot ’) ; colormap ( cm ( end : -1:1 ,:) ) ;
11 set ( gca , ’ XTick ’ ,1:32:192) ; set ( gca , ’ XTickLabel ’ ,(0:32:192) /20 e6 *1 e6 ) ;
12 ind = sort ( cn . no_snap : - cn . no_snap /10 : 1 ) ;
13 set ( gca , ’ YTick ’ , ind ) ;
14 set ( gca , ’ YTickLabel ’ , round ( sort (500 - ind / 3 , ’ descend ’) ) ) ;
15 xlabel ( ’ Delay [\ mus ] ’) ; ylabel ( ’ Distance [ m ] ’) ;
16 title ( ’ PDP with fixed speed ’) ;

PDP with fixed speed


450 -100
399
349
Distance [m]

-110
299
249 -120
198
148 -130
98
-140
47
-3
0 1.6 3.2 4.8 6.4 8
Delay [ s]

The next plot shows the total received power along the trajectory. Green shaded ares are LOS. The rest is
NLOS. You can see that there is more power when there is LOS propagation.
1 dist = (1: cn . no_snap ) * t . get_length / cn . no_snap ; % Traveled distance
2 ind = find ( strcmp ( t . scenario , Sl ) ) ; % Find LOS s c e n a r i o s
3 los = [];
4 for n = 1: numel ( ind )
5 los = [ los t . segment_index ( ind ( n ) ) : t . segment_index ( ind ( n ) +1) ];
6 end
7 ar = zeros (1 , cn . no_snap ) ; ar ( los ) = -200;
8
9 power = 10* log10 ( sum ( reshape ( abs ( cn . coeff ) .^2 , [] , cn . no_snap ) ,1) /4 ) ;
10
11 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
12 a = area ( dist , ar ) ; % Shading for the LOS
13 set ( a (1) , ’ FaceColor ’ ,[0.7 0.9 0.7]) ; set (a , ’ LineStyle ’ , ’ none ’) ;
14 hold on ; plot ( dist , power ) ; hold off % Plot the r e c e i v e d power
15 title ( ’ Position dependent power ’) ; xlabel ( ’ Track [ m ] ’) ; ylabel ( ’ Power [ dB ] ’) ;
16 axis ([0 500 min ( power ) -5 max ( power ) +5]) ; grid on ;
17 legend ( ’ LOS ’ , ’ P_ { total } ’ , ’ Location ’ , ’ SouthEast ’)

Position dependent power


-90

-100
Power [dB]

-110

-120 LOS
Ptotal

0 100 200 300 400 500


Track [m]

The following plot shows the distribution (PDF) of the received power for both, the LOS and NLOS segments.

Copyright: Fraunhofer Heinrich Hertz Institute 157


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 bins = -150:2: -80;


2 p_los = hist ( power ( los ) , bins ) / cn . no_snap *100;
3 p_nlos = hist ( power ( setdiff (1: cn . no_snap , los ) ) , bins ) / cn . no_snap *100;
4
5 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
6 bar ( bins ,[ p_los ; p_nlos ] ’) ;
7 axis ([ -124.5 , -83 ,0 , ceil ( max ([ p_los , p_nlos ]) ) ]) ; grid on
8 title ( ’ Empirical PDF of the LOS and NLOS power ’)
9 xlabel ( ’ P_ { total } [ dB ] ’) ; ylabel ( ’ Probability [%] ’) ; legend ( ’ LOS ’ , ’ NLOS ’)

Empirical PDF of the LOS and NLOS power


15
LOS
NLOS
Probability [%]

10

0
-120 -115 -110 -105 -100 -95 -90 -85
Ptotal [dB]

The next plot shows the RMS delay spread along the path. Again, shaded ares are for the LOS segments.
Due to the strong LOS component, the DS gets shorter during LOS areas.
1 pow_tap = squeeze ( sum ( sum ( abs ( cn . coeff ) .^2 ,1) ,2) ) ;
2 pow_sum = sum ( pow_tap ,1 ) ;
3 mean_delay = sum ( pow_tap .* cn . delay ,1) ./ pow_sum ;
4 ds = sqrt ( sum ( pow_tap .* cn . delay .^2 ,1) ./ pow_sum - mean_delay .^2 ) ;
5 ar = zeros (1 , cn . no_snap ) ;
6 ar ( los ) = 10;
7
8 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
9 a = area ( dist , ar ) ;
10 set ( a (1) , ’ FaceColor ’ ,[0.7 0.9 0.7]) ; set (a , ’ LineStyle ’ , ’ none ’)
11 hold on ; plot ( dist , ds *1 e6 ) ; hold off ; % Plot DS
12 ma = 1 e6 *( max ( ds ) +0.1* max ( ds ) ) ; axis ([0 500 0 ma ]) ;
13 title ( ’ Position dependant delay spread ’) ; grid on
14 xlabel ( ’ Track [ m ] ’) ; ylabel ( ’ Delay Spread [ dB ] ’) ; legend ( ’ LOS ’ , ’\ sigma_ \ tau ’) ;

Position dependant delay spread


LOS
0.4
Delay Spread [dB]

0.3

0.2

0.1

0
0 100 200 300 400 500
Track [m]

The following plot shows the distribution (PDF) of the RMS delay spread for both, the LOS and NLOS
segments.
1 bins = 0:0.03:3;
2 ds_los = hist ( ds ( los ) *1 e6 , bins ) / cn . no_snap *100;

Copyright: Fraunhofer Heinrich Hertz Institute 158


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

3 ds_nlos = hist ( ds ( setdiff (1: cn . no_snap , los ) ) *1 e6 , bins ) / cn . no_snap *100;


4
5 DS = [ ds_los ; ds_nlos ];
6 ind = max ( find ( max ( DS / max ( DS (:) ) ) >0.001 ) ) ;
7
8 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
9 bar ( bins , DS ’) ;
10 axis ([0 , bins ( ind ) ,0 , max ( DS (:) ) +1]) ; grid on ;
11 title ( ’ Empirical PDF of the LOS and NLOS RMSDS ’)
12 xlabel ( ’\ sigma_ \ tau [\ mus ] ’) ; ylabel ( ’ Probability [%] ’) ; legend ( ’ LOS ’ , ’ NLOS ’) ;

Empirical PDF of the LOS and NLOS RMSDS


LOS
15 NLOS
Probability [%]

10

0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4
[ s]

4.11 Multi-frequency simulations

This tutorial demonstrates how to perform simultaneous multi-frequency simulations at two carrier frequen-
cies: 2.6 GHz and 28 GHz in an Urban-Macrocell deployment. The BS is equipped with two different
array antennas. A conventional high-gain antenna operates at 2.6 GHz. The higher frequency band uses
a massive-MIMO array antenna with in an 8x8 dual-polarized setup. The model is consistent in both, the
spatial domain and the frequency domain. Simulation assumptions are in accordance with 3GPP 38.901
v14.1.0 (see Section 7.6.5 Correlation modeling for multi-frequency simulations).

Identical parameters for each frequency:

• LOS / NLOS state must be the same


• BS and MT positions are the same (antenna element positions are different!)
• Cluster delays and angles for each multi-path component are the same
• Spatial consistency of the LSPs is identical

Differences:

• Antenna patterns are different for each frequency


• Path-loss is different for each frequency
• Path-powers are different for each frequency
• Delay- and angular spreads are different
• K-Factor is different
• XPR of the NLOS components is different

Basic setup Multiple frequencies are set in the simulation parameters by providing a vector of frequency
sample points. A new layout is created with one 25 m high BS positions and 100 MT positions. The MTs
are placed in accordance with the 3GPP assumptions, where 80% of them are situated indoors at different
floor levels.

Copyright: Fraunhofer Heinrich Hertz Institute 159


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Default Paper Size
11
12 s = qd_simulation_parameters ;
13 s . c en t e r _ f r e q u e n c y = [2.6 e9 , 28 e9 ]; % Assign two f r e q u e n c i e s
14
15 l = qd_layout ( s ) ; % New Q u a D R i G a layout
16 l . tx_position = [0 0 25] ’; % 25 m BS height
17 l . no_rx = 100; % 100 MTs
18
19 l . r a n d o m i z e _ r x _ p o s i t i o n s ( 200 , 1.5 , 1.5 , 0 ) ; % Assign random user p o s i t i o n s
20 l . rx_position (1 ,:) = l . rx_position (1 ,:) + 220; % Place users east of the BS
21
22 floor = randi (5 ,1 , l . no_rx ) + 3; % Set random floor levels
23 for n = 1: l . no_rx
24 floor ( n ) = randi ( floor ( n ) ) ;
25 end
26 l . rx_position (3 ,:) = 3*( floor -1) + 1.5;
27
28 indoor_rx = l . set_scenario ( ’3 GPP_38 .901 _UMa ’ ,[] ,[] ,0.8) ; % Set the s c e n a r i o
29 l . rx_position (3 ,~ indoor_rx ) = 1.5; % Set outdoor - users to 1.5 m height

1 Setting RX LOS state correlation distance to 50 m

Antenna set-up Two different antenna configurations are used at the BS. The 2.6 GHz antenna is con-
structed from 8 vertically stacked patch elements with +/- 45 degree polarization. The electric downtilt
is set to 8 degree. The mm-wave antenna uses 64 dual-polarized elements in a 8x8 massive-MIMO array
configuration. The antennas are assigned to the BS by an array of ”qd arrayant” objects. Rows correspond
to the frequency, columns to the BS. There is only 1 BS in the layout. The mobile terminal uses a vertically
polarized omni-directional antenna for both frequencies.
1 a_2600_Mhz = qd_arrayant ( ’3 gpp -3 d ’ , 8 , 1 , s . c e n t e r _ f r e q u e nc y (1) , 6 , 8 ) ;
2 a_28000_MHz = qd_arrayant ( ’3 gpp -3 d ’ , 8 , 8 , s . c e n t e r _ f re q u e n c y (2) , 3 ) ;
3
4 l . tx_array (1 ,1) = a_2600_Mhz ; % Set 2.6 GHz antenna
5 l . tx_array (2 ,1) = a_28000_MHz ; % Set 28 Ghz antenna
6
7 l . rx_array = qd_arrayant ( ’ omni ’) ; % Set omni - rx antenna

Coverage preview Next, we create a preview of the antenna footprint. We calculate the map for the two
frequencies including path-loss and antenna patterns. The first plot is for the 2.6 GHz band.
1 s am pl e _d is ta n ce = 5; % One pixel every 5 m
2 x_min = -50; % Area to be samples in [ m ]
3 x_max = 550;
4 y_min = -300;
5 y_max = 300;
6 rx_height = 1.5; % Mobile t e r m i n a l height in [ m ]
7 tx_power = 30; % Tx - power in [ dBm ] per antenna element
8 i_freq = 1; % F r e q u e n c y index for 2.6 GHz
9
10 % C a l c u l a t e the map i n c l u d i n g path - loss and antenna p a t t e r n s
11 [ map , x_coords , y_coords ] = l . power_map ( ’3 GPP_38 .901 _UMa_LOS ’ , ’ quick ’ ,...
12 sample_distance , x_min , x_max , y_min , y_max , rx_height , tx_power , i_freq ) ;
13 P_db = 10* log10 ( sum ( map {1} , 4 ) ) ;
14
15 % Plot the results
16 l . visualize ([] ,[] ,0) ; % Show BS and MT p o s i t i o n s on the map
17 hold on ; imagesc ( x_coords , y_coords , P_db ) ; hold off % Plot the antenna f o o t p r i n t
18 axis ([ x_min , x_max , y_min , y_max ]) ;

Copyright: Fraunhofer Heinrich Hertz Institute 160


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

19 caxis ( max ( P_db (:) ) + [ -20 0] ) ; % Color range


20 colmap = colormap ;
21 colormap ( colmap *0.5 + 0.5 ) ; % Adjust colors to be " lighter "
22 set ( gca , ’ layer ’ , ’ top ’) % Show grid on top of the map
23 colorbar ( ’ south ’)
24 title ( ’ Received power [ dBm ] for 2.6 GHz band ’)

Received power [dBm] for 2.6 GHz band


300
Tx-Position
Tx-Antenna
Tx-Track
200 Rx-Position
Rx-Antenna
Rx-Track

100
y-coord in [m]

-100

-200
-56 -54 -52 -50 -48 -46 -44 -42 -40 -38

-300
0 100 200 300 400 500
x-coord in [m]

For the 28 GHz, we get the complex-valued phases for each antenna element in order to calculate a MRT
beamformer that points the towards the ground at coordinates x = 200 m and y = 100 m.
1 tx_power = 10; % Tx - power in [ dBm ] per antenna element
2 i_freq = 2; % F r e q u e n c y index for 28 GHz
3
4 % C a l c u l a t e the map i n c l u d i n g path - loss and antenna p a t t e r n s
5 [ map , x_coords , y_coords ] = l . power_map ( ’3 GPP_38 .901 _UMa_LOS ’ , ’ phase ’ ,...
6 sample_distance , x_min , x_max , y_min , y_max , rx_height , tx_power , i_freq ) ;
7
8 % C a l c u l a t e MRT b e a m f o r m i n g weights
9 beam_x = find ( x_coords >= 200 , 1 ) ; % Point the beam at x = 200 and y = 100
10 beam_y = find ( y_coords >= 100 , 1 ) ;
11 w = conj ( map {1}( beam_y , beam_x , 1 ,: ) ) ; % P r e c o d i n g weights for a MRT b e a m f o r m e r
12 w = w ./ sqrt ( mean ( abs ( w (:) ) .^2) ) ; % N o r m a l i z e to unit power
13
14 % Apply the p r e c o d i n g weights to each pixel on the map and c a l c u l a t e the r e c e i v e d power
15 P_db = map {1} .* w ( ones (1 , numel ( y_coords ) ) , ones (1 , numel ( x_coords ) ) ,: ,: ) ;
16 P_db = 10* log10 ( abs ( sum ( P_db ,4 ) ) .^2 ) ;
17
18 l . visualize ([] ,[] ,0) ; % Show BS and MT p o s i t i o n s on the map
19 hold on ; imagesc ( x_coords , y_coords , P_db ) ; hold off % Plot the antenna f o o t p r i n t
20 axis ([ x_min , x_max , y_min , y_max ]) ;
21 caxis ( max ( P_db (:) ) + [ -20 0] ) ; % Color range
22 colmap = colormap ;
23 colormap ( colmap *0.5 + 0.5 ) ; % Adjust colors to be " lighter "
24 set ( gca , ’ layer ’ , ’ top ’) % Show grid on top of the map
25 colorbar ( ’ south ’)
26 title ( ’ Received power [ dBm ] for 28 GHz band ’)

Copyright: Fraunhofer Heinrich Hertz Institute 161


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Received power [dBm] for 28 GHz band


300
Tx-Position
Tx-Antenna
Tx-Track
200 Rx-Position
Rx-Antenna
Rx-Track

100
y-coord in [m]

-100

-200
-68 -66 -64 -62 -60 -58 -56 -54 -52 -50

-300
0 100 200 300 400 500
x-coord in [m]

Generate channel coefficients Channel coefficients are generated by calling ”l.get channels”. The output
is an array of QuaDRiGa channel objects. The first dimension corresponds to the MTs (100). The second
dimension corresponds to the number of BSs (1) and the third dimension corresponds to the number of
frequencies (2).
1 c = l . get_channels ;

1 Starting channel generation using QuaDRiGa v2 .2.0 -0


2 100 receivers , 1 transmitter , 2 frequencies (2.6 GHz , 28.0 GHz )
3 Generating channel builder objects - 4 builders , 200 channel segments
4 Initializing random generators
5 Generating parameters
6 SSF Corr . [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 5 seconds
7 Preparing multi - frequency simulations - 8 builders
8 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 12 seconds
9 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds
10 Formatting output channels - 200 channel objects
11 Total runtime : 20 seconds

4.12 Ground reflection simulation

This tutorial shows how to include a deterministic ground reflection component into the channel. The effects
are then demonstrated for different carrier frequencies (2 GHz, 28 GHz, and 60 GHz).

Simulation assumptions are in accordance with 3GPP 38.901 v14.1.0, Section 7.6.8, p.60 (Explicit ground
reflection model). Some modifications are made as described in [Jaeckel, S.; Raschkowski, L.; Wu, S.; Thiele,
L. & Keusgen, W.; ”An Explicit Ground Reflection Model for mm-Wave Channels”, Proc. IEEE WCNC
Workshops ’17, 2017 ]. For all ground reflection simulations, a random ground humidity is assumed, which
changes the relative permittivity of the ground and, hence, the reflection coefficient will be different for each
segment. All ground reflection properties are controlled by the scenario configuration files in the ”config”
folder of the channel model. The parameter ”GR enabled” activates (1) or deactivates (0) the ground
reflection component. The parameter ”GR epsilon” can be used to fix the relative permittivity to a fixed
value.

Copyright: Fraunhofer Heinrich Hertz Institute 162


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Basic setup Multiple frequencies are set in the simulation parameters by providing a vector of frequency
sample points. A new layout is created with a 10 m high BS position. Three different model parametrizations
are compared:

• 2-ray ground reflection model without any additional NLOS components


• 3GPP 38.901 Urban Microcell LOS
• Modified 3GPP 38.901 Urban Microcell LOS including a ground reflection

The MT is at 1.5 m height and moves along a 50 m long track starting 10 m away from the BS. The model
is set to sample the channel every 10 cm (10 time per meter).

Since the 3GPP scenarios also have non-deterministic NLOS components, there needs to be a birth / death
process of the scattering clusters along the MT trajectory. This is done by splitting the track into segments.
”split segment” assumes an average segment length of 30 m with a standard deviation of 5 m.
1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change paper Size
11
12 s = qd_simulation_parameters ;
13 s . c en t e r _ f r e q u e n c y = [2 e9 28 e9 60 e9 ]; % Set the three carrier f r e q u e n c i e s
14
15 l = qd_layout ( s ) ; % New Q u a D R i G a layout
16 l . no_tx = 3; % One BS for each s c e n a r i o
17 l . tx_position (3 ,:) = 10; % Set BS height for all s c e n a r i o s
18
19 l . rx_track = qd_track ( ’ linear ’ , 50 , 0 ) ; % 50 m long track
20 l . rx_track . i n i t i a l _ p o s i t i o n = [10 ; 0 ; 1.5 ]; % Set start p o s i t i o n s and MT height
21 l . rx_track . i n t e r p o l a t e _ p o s i t i o n s (10) ; % Set s a m p l i n g rate to 10 saples per meter
22
23 % Each of the 3 BS gets a s s i g n e d a d i f f e r e n t s c e n a r i o :
24 l . rx_track . scenario = { ’ TwoRayGR ’ ; ’3 GPP_38 .901 _UMi_LOS ’ ; ’3 GPP_38 .901 _UMi_LOS_GR ’ };
25
26 l . rx_track . split_segment ; % Split into s e g m e n t s
27 c = l . get_channels ; % G e n e r a t e the channel c o e f f i c i e n t s
28 dist_2d = c (1 ,1 ,1) . rx_position (1 ,:) ; % Extract the 2 D d i s t a n c e

1 Starting channel generation using QuaDRiGa v2 .2.0 -0


2 1 receiver , 3 transmitters , 3 frequencies (2.0 GHz , 28.0 GHz , 60.0 GHz )
3 Warning : Sample density in tracks does not fulfill the sampling theoreme .
4 Generating channel builder objects - 9 builders , 18 channel segments
5 Initializing random generators
6 Generating parameters
7 SSF Corr . [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 1 seconds
8 Preparing multi - frequency simulations - 27 builders
9 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 19 seconds
10 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 2 seconds
11 Formatting output channels - 9 channel objects
12 Total runtime : 23 seconds

Plot path gain for 2-ray model The first plot shows the results for the 2-ray ground reflection model.
One can see the differences in path gain between the 3 frequency bands. The main difference, however, are
the rapid power fluctuations due to the interference between the 2 paths. This is very different at mmWave
frequencies compared to 2 GHz.
1 H = c (1 ,1 ,1) . fr (100 e6 ,64) ; % 2 GHz b r o a d b a n d channel (100 MHz )
2 P_2ray_2Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ; % Average power
3
4 H = c (1 ,1 ,2) . fr (100 e6 ,64) ; % 28 GHz b r o a d b a n d channel (100 MHz )
5 P_2ray_28Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ; % Average power

Copyright: Fraunhofer Heinrich Hertz Institute 163


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

6
7 H = c (1 ,1 ,3) . fr (100 e6 ,64) ; % 60 GHz b r o a d b a n d channel (100 MHz )
8 P_2ray_60Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ; % Average power
9
10 P = 10* log10 ( [ P_2ray_2Ghz , P_2ray_28Ghz , P_2ray_60Ghz ] ) ;
11
12 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
13 plot ( dist_2d , P )
14 axis ([0 , max ( dist_2d ) +10 , min ( P (:) ) -5 , max ( P (:) ) +5 ])
15 xlabel ( ’BS - MT 2 D distance in [ m ] ’)
16 ylabel ( ’ Path gain in [ dB ] ’)
17 title ( ’ Path gain for 2 - ray model ’)
18 legend ( ’2 GHz ’ , ’ 28 GHz ’ , ’ 60 GHz ’)

Path gain for 2-ray model

-60 2 GHz
28 GHz
60 GHz
Path gain in [dB]

-70

-80

-90

-100

-110
0 10 20 30 40 50 60 70
BS-MT 2D distance in [m]

Plot path gain for 3GPP UMi LOS model The second plot sows the results for the 3GPP UMi LOS model.
The path loss is similar compared to the 2-ray model. A shadow-fading component induces slow changes
in the average received power. By default, the shadow fading is fully correlated between the 3 frequencies.
Small-scale-fading correlations are done according to 3GPP TR 38.901 V14.1.0, Section 7.6.5, pp 57. This
can be changed by not using ”l.get channels”, but executing the channgel generation steps maually in a
different order (see the 3GPP TR 38.901 full calibration for more deails). The NLOS components cause
some fast fading wihich is averaged out by the broadband processing. No ground reflection is included.
Hence, the fast fluctuations are absent.
1 H = c (1 ,2 ,1) . fr (100 e6 ,64) ; % 2 GHz b r o a d b a n d channel (100 MHz )
2 P_2ray_2Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ; % Average power
3
4 H = c (1 ,2 ,2) . fr (100 e6 ,64) ; % 28 GHz b r o a d b a n d channel (100 MHz )
5 P_2ray_28Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ; % Average power
6
7 H = c (1 ,2 ,3) . fr (100 e6 ,64) ; % 60 GHz b r o a d b a n d channel (100 MHz )
8 P_2ray_60Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ; % Average power
9
10 P = 10* log10 ( [ P_2ray_2Ghz , P_2ray_28Ghz , P_2ray_60Ghz ] ) ;
11
12 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
13 plot ( dist_2d , P )
14 axis ([0 , max ( dist_2d ) +10 , min ( P (:) ) -5 , max ( P (:) ) +5 ])
15 xlabel ( ’BS - MT 2 D distance in [ m ] ’)
16 ylabel ( ’ Path gain in [ dB ] ’)
17 title ( ’ Path gain for 3 GPP UMi LOS ’)
18 legend ( ’2 GHz ’ , ’ 28 GHz ’ , ’ 60 GHz ’)

Copyright: Fraunhofer Heinrich Hertz Institute 164


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Path gain for 3GPP UMi LOS


-60
2 GHz
-70 28 GHz
60 GHz

Path gain in [dB]


-80

-90

-100

-110

0 10 20 30 40 50 60 70
BS-MT 2D distance in [m]

Plot path gain for 3GPP UMi LOS model The last plot shows the modified 3GPP channel (see [1]),
where the ground reflection is included. Hence, the typical fluctuations are now included.
1 H = c (1 ,3 ,1) . fr (100 e6 ,64) ;
2 P_2ray_2Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ;
3
4 H = c (1 ,3 ,2) . fr (100 e6 ,64) ;
5 P_2ray_28Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ;
6
7 H = c (1 ,3 ,3) . fr (100 e6 ,64) ;
8 P_2ray_60Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ;
9
10 P = 10* log10 ( [ P_2ray_2Ghz , P_2ray_28Ghz , P_2ray_60Ghz ] ) ;
11
12 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
13 plot ( dist_2d , P )
14 axis ([0 , max ( dist_2d ) +10 , min ( P (:) ) -5 , max ( P (:) ) +5 ])
15 xlabel ( ’BS - MT 2 D distance in [ m ] ’)
16 ylabel ( ’ Path gain in [ dB ] ’)
17 title ( ’ Path gain for 3 GPP UMi LOS incl . Ground Reflection ’)
18 legend ( ’2 GHz ’ , ’ 28 GHz ’ , ’ 60 GHz ’)

Path gain for 3GPP UMi LOS incl. Ground Reflection


-60 2 GHz
28 GHz
Path gain in [dB]

-70 60 GHz

-80

-90

-100

-110
0 10 20 30 40 50 60 70
BS-MT 2D distance in [m]

4.13 Spatial consistency

Version 2.0 of the QuaDRiGa channel model supports spatial consistency as specified by 3GPP 38.901
v14.0.0, Section 7.6.3, pp45. This tutorial demonstrates the properties of this feature and how it can be
used. Spatial consistency can be seen in three aspects of wireless channels:

• The LOS / NLOS state of a link.


• The large-scale parameters, such as shadow-fading and delay spread
• The positions of the scattering clusters as a function of the mobile terminal (MT) position

Copyright: Fraunhofer Heinrich Hertz Institute 165


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Here, points 2 and 3 are covered. The large-scale parameter (point 2) are always spatially consistent. They
change slowly when the terminal moves. For example, two MTs that are close together will have similar
SFs, DSs and angular spreads. The rate at which the LSPs change is adjusted by the ”lambda” parameters
in the configuration file. For example: ”DS lambda = 20” means that the delay spread of two terminal at
20 meters distance will be correlated with correlation coefficient of exp(-1) = 0.36. Two terminals at the
same positions will see the same DS (correlation coefficient is 1).

The small-scale fading (SSF) is governed by the position of the scattering clusters. Two closely spaced
terminals will not only have a similar DS, they will also see the same scattering clusters. This will have an
effect on the achievable data rate. QuaDRiGa implements a 3D correlated random process the correlates
all random variables that are used to generate the scattering clusters. The decorrelation distance of this
process (i.e. the distance where the correlation of the same variable for 2 users drops to 0.36) is controlled
by the parameter ”SC lambda” in the configuration files. A value of 0 disables the spatial consistency for
SSF.

Model setup and channel generation First, a new layout is created. The center frequency is set to 2 GHz,
the BS height is set to 10 m. By default, vertically polarized omni-directional antennas are used.
1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change paper Size
11
12 l = qd_layout ; % Create new Q u a D R I G a layout
13 l . simpar . c e n t e r _ f re q u e n c y = 2 e9 ; % Set center f r e q u e n c y to 2 GHz
14 l . simpar . u s e _ a b s o l u t e _ d e l a y s = 1; % Enables true LOS delay
15 l . simpar . s h o w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bars
16 l . tx_position = [ 0 ,0 ,10 ] ’; % Set BS p o s i t t i o n s

Next, a new receiver trajectory is created. The track is 50 meters long and starts in the north-east of the
BS.
1 l . rx_track = qd_track ( ’ linear ’ , 50 , pi /2 ) ; % 50 m long track going north
2 l . rx_track . i n i t i a l _ p o s i t i o n = [20 ; 30 ; 1.5 ]; % Set start p o s i t i o n and MT height
3 l . rx_track . i n t e r p o l a t e _ p o s i t i o n s (10) ; % One channel sample every 10 cm
4 l . rx_track . scenario = ’3 GPP_38 .901 _UMi_NLOS ’; % Set p r o p a g a t i o n s c e n a r i o

QuaDRiGa supports two different MT mobility options. By default, drifting is used. This keeps the
scattering positions fixed for a short segment of the track. Along a segment, path delays and angles are
updated when the terminal is moving. However, 3GPP 38.901 proposed a different mobility option (3GPP
38.901 v14.0.0, Section 7.6.3.2, Option B, pp47). This is implemented in QuaDRiGa as well. It is enabled
by setting the number of segments on a track equal to the number of snapshots. Hence, a new channel
realization is created for each position on the track. Mobility is then obtained by the spatially consistency
procedure.
1 l . rx_track . no_segments = l . rx_track . no_snapshots ; % Use spatial c o n s i s t e n y for m o b i l i t y

Now, a channel builder object is created. The scenario parameters can then be edited to study their effects
on the results.
1 b = l . init_builder ; % I n i t i a l i z e s channel builder

3GPP specifies a cluster delay spread for the two strongest clusters (3GPP 38.901 v14.0.0, Table 7.5-5, pp37).
When ”PerClusterDS” in the configuration file is set to values > 0, the clusters are split into three sub-
clusters with different delays. However, this is incompatible with spatial consistency because the strongest
cluster changes over time. Therefore, QuaDRiGa applies the cluster delay spread to all clusters which avoids
this problem. Here, the cluster delay spread is disabled avoid cluttering the results. You can find out what
happens when you set to a different value.

Copyright: Fraunhofer Heinrich Hertz Institute 166


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 b . scenpar . PerClusterDS = 0; % Disable per - cluster delay spread


2 b . scenpar . NumClusters = 5; % Only g e n e r a t e 5 c l u s t e r s
3 b . scenpar . KF_mu = -3; % Set los power to 33 % of the total power
4 b . scenpar . KF_sigma = 0.5;
5 b . scenpar . SC_lambda = 5; % Set SSF d e c o r r e l a t i o n d i s t a n c e to 5 m
6
7 b . g en _ s s f _ p a r a m e t e r s ; % G e n e r a t e small - scale - fading p a r a m e t e r s
8
9 c = get_channels ( b ) ; % G e n e r a t e channel c o e f f i c i e n t s
10 c = merge ( c , [] , 0 ) ; % Combine output c h a n n e l s
11 c . i n d i v i d u a l _ d e l a y s = 0; % Remove per - antenna delays
12
13 dl = c . delay . ’; % Extract path delays from the channel
14 pow = squeeze ( abs ( c . coeff ) .^2 ) ’; % C a l c u l a t e path powers from the channel
15
16 [ len , dist ] = l . rx_track . get_length ; % Store the length and d i s t a n c e s from start point

Path powers The first plot shows the path powers along the receiver track. The path parameters (delays,
angles, power) are generated as described in 3GPP 38.901 v14.0.0, Section 7.6.3.2, Option B, pp47). As you
can see, path powers do not suddenly ”jump”, but they change relatively smoothly when the MT moves.
1 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
2 plot ( dist ,10* log10 ( pow (: ,1) ) , ’ -b ’ , ’ Linewidth ’ ,2)
3 hold on ; plot ( dist ,10* log10 ( pow (: ,2: end ) ) , ’ -- ’) ; hold off
4 axis ( [ 0 , len , 10* log10 ( min ( pow (:) ) ) -1 , 10* log10 ( max ( pow (:) ) ) +1 ] )
5 grid on
6 title ( ’ Path powers ’) ; xlabel ( ’ Distance from start point [ m ] ’) ; ylabel ( ’ Path power [ dB ] ’) ;
7 legend ( ’ LOS path ’ , ’ NLOS paths ’)

Path powers
LOS path
-95
NLOS paths
Path power [dB]

-100
-105
-110
-115
-120

0 10 20 30 40 50
Distance from start point [m]

Delay spread The second plot sows the path delays and the delay spread. As for the powers, delays change
smoothly over time. NLOS delays can never be smaller than the LOS delay. In addition, the thick black
line shows the DS at the input of the model and the red, dashed line shows the DS that is calculated from
the channel coefficients. Both should be identical.
1 % C a l c u l a t e DS from the channel c o e f f i c i e n t s
2 pow_normaliz ed = pow ./ ( sum ( pow ,2) * ones ( 1 , size ( pow ,2) ) ) ;
3 ds = sqrt ( sum ( pow_ normaliz ed .* dl .^2 , 2 ) - sum ( po w_normal ized .* dl , 2 ) .^2 ) ;
4
5 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
6 plot ( dist , b . ds *1 e6 , ’ -k ’ , ’ Linewidth ’ ,2 )
7 hold on
8 plot ( dist , ds *1 e6 , ’ -. r ’ , ’ Linewidth ’ ,3 )
9 plot ( dist , dl (: ,1) *1 e6 , ’ -b ’ , ’ Linewidth ’ ,2)
10 plot ( dist , dl (: ,2: end ) *1 e6 , ’ -- ’)
11 hold off ; xlim ([0 , len ]) ; grid on
12 title ( ’ Delay spread and delays ’) ; xlabel ( ’ Distance from start point [ m ] ’) ; ylabel ( ’ Delay [ mus ] ’)
13 legend ( ’ Requested DS ’ , ’ Actual DS ’ , ’ LOS delay ’ , ’ NLOS delays ’) ;

Copyright: Fraunhofer Heinrich Hertz Institute 167


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Delay spread and delays


5
Requested DS
4 Actual DS
LOS delay

Delay [mus]
NLOS delays
3

0
0 10 20 30 40 50
Distance from start point [m]

Azimuth of Arrival The third plot shows the Azimuth of Arrival (AoA) angles of the paths. As for the
DS, the black line shows the angular spread (AS) at the model input and the red dashed line the AS at the
output. Those two lines might be different. The arrival angles are distributed on a sphere and therefore, it
is not possible to achieve arbitrary angular spreads. At some point the angles just wrap around the circle.
Therefore, the maximum AS is limited to vales around 80 degrees.
1 % C a l c u l a t e AS from the channel c o e f f i c i e n t s
2 mean_angle = angle ( sum ( pow _normali zed .* exp ( 1 j * b . AoA ) , 2 ) ) ;
3 ang = b . AoA - mean_angle * ones ( 1 , b . NumClusters ) ;
4 ang = angle ( exp ( 1 j * ang ) ) ;
5 as = sqrt ( sum ( p ow_norm alized .* ang .^2 ,2) - sum ( p ow_norma lized .* ang ,2) .^2 ) * 180/ pi ;
6
7 % Unwrap the angles to i l l u s t r a t e spatial c o n s i s t e n c y
8 ang_unwrapped = unwrap ( b . AoA ,1) *180/ pi ;
9
10 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
11 plot ( dist , b . asA ’ , ’ -k ’ , ’ Linewidth ’ ,2 )
12 hold on
13 plot ( dist , as , ’ -. r ’ , ’ Linewidth ’ ,3 )
14 plot ( dist , ang_unwrapped (: ,1) , ’ Linewidth ’ ,2)
15 plot ( dist , ang_unwrapped (: ,2: end ) , ’ -- ’)
16 plot ( dist , zeros ( b . no_rx_positions ,1) , ’ -k ’)
17 hold off ; xlim ([0 , len ]) ; grid on
18 title ( ’ Azimuth of Arrival ’) ; xlabel ( ’ Distance from start point [ m ] ’) ; ylabel ( ’ Angle [ deg ] ’)
19 legend ( ’ Requested AS ’ , ’ Actual AS ’ , ’ LOS angle ’ , ’ NLOS angles ’)

Azimuth of Arrival
600
Requested AS
400 Actual AS
LOS angle
Angle [deg]

NLOS angles
200

-200

-400
0 10 20 30 40 50
Distance from start point [m]

Elevation of Arrival Elevation angles are bound between -90 and +90 degrees. The angles also do not
change rapidly.
1 % C a l c u l a t e AS from the channel c o e f f i c i e n t s
2 mean_angle = angle ( sum ( pow _normali zed .* exp ( 1 j * b . EoA ) , 2 ) ) ;
3 ang = b . EoA - mean_angle * ones ( 1 , b . NumClusters ) ;
4 ang = angle ( exp ( 1 j * ang ) ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 168


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

5 as = sqrt ( sum ( p ow_norm alized .* ang .^2 ,2) - sum ( p ow_norma lized .* ang ,2) .^2 ) * 180/ pi ;
6
7 % Get angles in degres
8 ang = b . EoA *180/ pi ;
9
10 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
11 plot ( dist , b . esA ’ , ’ -k ’ , ’ Linewidth ’ ,2 )
12 hold on
13 plot ( dist , as , ’ -. r ’ , ’ Linewidth ’ ,3 )
14 plot ( dist , ang (: ,1) , ’ Linewidth ’ ,2)
15 plot ( dist , ang (: ,2: end ) , ’ -- ’)
16 plot ( dist , zeros ( b . no_rx_positions ,1) , ’ -k ’)
17 hold off ; xlim ([0 , len ]) ; grid on
18 title ( ’ Elevation of Arrival ’) ; xlabel ( ’ Distance from start point [ m ] ’) ; ylabel ( ’ Angle [ deg ] ’)
19 legend ( ’ Requested AS ’ , ’ Actual AS ’ , ’ LOS angle ’ , ’ NLOS angles ’)

Elevation of Arrival
100
Requested AS
Actual AS
50 LOS angle
NLOS angles
Angle [deg]

-50

-100
0 10 20 30 40 50
Distance from start point [m]

Azimuth of Departure QuaDRiGa calculates the exact positions of the scattering clusters. However, this
is not always possible. For example, when the path delay is very short and the departure and arrival angles
have too large values, the cluster positions do not exist. In this case, QuaDRiGa uses a single-bounce model,
where the departure angles depend on the arrival angles. In this case, the angles of some clusters might
suddenly change. However, this happens only for spherical waves. You can deactivate the sperical waves by
setting ”l.simpar.use spherical waves = 0”. In this case, no cluster positions are calculated.
1 % C a l c u l a t e AS from the channel c o e f f i c i e n t s
2 mean_angle = angle ( sum ( pow _normali zed .* exp ( 1 j * b . AoD ) , 2 ) ) ;
3 ang = b . AoD - mean_angle * ones ( 1 , b . NumClusters ) ;
4 ang = angle ( exp ( 1 j * ang ) ) ;
5 as = sqrt ( sum ( p ow_norm alized .* ang .^2 ,2) - sum ( p ow_norma lized .* ang ,2) .^2 ) * 180/ pi ;
6
7 % Unwrap the angles to i l l u s t r a t e spatial c o n s i s t e n c y
8 ang_unwrapped = unwrap ( b . AoD ,1) *180/ pi ;
9
10 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
11 plot ( dist , b . asD ’ , ’ -k ’ , ’ Linewidth ’ ,2 )
12 hold on
13 plot ( dist , as , ’ -. r ’ , ’ Linewidth ’ ,3 )
14 plot ( dist , ang_unwrapped (: ,1) , ’ Linewidth ’ ,2)
15 plot ( dist , ang_unwrapped (: ,2: end ) , ’ -- ’)
16 plot ( dist , zeros ( b . no_rx_positions ,1) , ’ -k ’)
17 hold off ; xlim ([0 , len ]) ; grid on
18 title ( ’ Azimuth of Departure ’) ; xlabel ( ’ Distance from start point [ m ] ’) ; ylabel ( ’ Angle [ deg ] ’)
19 legend ( ’ Requested AS ’ , ’ Actual AS ’ , ’ LOS angle ’ , ’ NLOS angles ’)

Copyright: Fraunhofer Heinrich Hertz Institute 169


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Azimuth of Departure
300
Requested AS
Actual AS
200
LOS angle
NLOS angles

Angle [deg]
100

-100

-200
0 10 20 30 40 50
Distance from start point [m]

Elevation of Departure Elevation angles are bound between -90 and +90 degrees. The angles also do not
change rapidly except for the sudden changes when the model uses single-bounce propagation.
1 % C a l c u l a t e AS from the channel c o e f f i c i e n t s
2 mean_angle = angle ( sum ( pow _normali zed .* exp ( 1 j * b . EoD ) , 2 ) ) ;
3 ang = b . EoD - mean_angle * ones ( 1 , b . NumClusters ) ;
4 ang = angle ( exp ( 1 j * ang ) ) ;
5 as = sqrt ( sum ( p ow_norm alized .* ang .^2 ,2) - sum ( p ow_norma lized .* ang ,2) .^2 ) * 180/ pi ;
6
7 % Get angles in degres
8 ang = b . EoD *180/ pi ;
9
10 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
11 plot ( dist , b . esD ’ , ’ -k ’ , ’ Linewidth ’ ,2 )
12 hold on
13 plot ( dist , as , ’ -. r ’ , ’ Linewidth ’ ,3 )
14 plot ( dist , ang (: ,1) , ’ Linewidth ’ ,2)
15 plot ( dist , ang (: ,2: end ) , ’ -- ’)
16 plot ( dist , zeros ( b . no_rx_positions ,1) , ’ -k ’)
17 hold off ; xlim ([0 , len ]) ; grid on
18 title ( ’ Elevation of Departure ’) ; xlabel ( ’ Distance from start point [ m ] ’) ; ylabel ( ’ Angle [ deg ] ’)
19 legend ( ’ Requested AS ’ , ’ Actual AS ’ , ’ LOS angle ’ , ’ NLOS angles ’)

Elevation of Departure
15
Requested AS
10 Actual AS
LOS angle
NLOS angles
Angle [deg]

-5

-10

-15
0 10 20 30 40 50
Distance from start point [m]

Video The last plot shows an visualization of the cluster positions. The spatial consistency model ensures
that path delays, angles and power change smoothly with time. However, doe to this, all cluster appear to be
moving through the environment. When angles and delays change rapidly, cluster positions change rapidly
as well. Sometimes, the speed of the clusters exceed the speed of the MT by several order of magnitude.
This violates the WSS conditions which state, that for short time intervals, the cluster positions stay fixed.
Hence, a combination of drifting and spatial consistency is needed to achieve realistic channels. (You need
to run the code in the loop manually)
1 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Default Paper Size

Copyright: Fraunhofer Heinrich Hertz Institute 170


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

2 b . v is u a l i z e _ c l u s t e r s ;
3 if 0
4 for n = 1 : b . n o _r x_ po s it io ns
5 b . v i s u a l i z e _ c l u s t e r s (n ,[] ,0) ;
6 title ([ ’ Distance from start : ’ , num2str ( dist ( n ) , ’ %1.1 f ’ ) , ’ m ’ ])
7 axis ([ -100 100 -50 150])
8 drawnow
9 end
10 end

120
Tx-Position
Rx-Position
FBS
100 LBS
Tx-FBS (b)
Rx-LBS (a)
FBS-LBS (c)
80 LOS Path
Rx-Angle
y-coords in [m]

Tx-Angle

60

40

Rx

20

0 Tx
-20 0 20 40 60 80
x-coords in [m]

4.14 Dual Mobility

In order to support moving transmitters and receivers (e.g. for car-to-car or device-to-device communica-
tion), QuaDRiGa 2.2 has been extended to support tracks for the transmitter. This tutorial demonstrates
how to use the new feature. It covers the following topics:

• Set-up of a layout with two mobile transceivers (cars moving in opposite directions at different speeds)
and one fixed BS
• Plot of the coverage area of the fixed BS
• Calculation of the channels for BS-Car1, BS-Car2, and Car1-Car2
• Discussion of computational complexity
• Plot of the path-loss along the trajectory
• Calculation of the Doppler spectrum for the 3 links

An initial set of channel parameters is provided for the Urban-Device-to-Device scenario. Those have been
adopted from the Urban-Microcell scenario al low BS heights. However, new measurements are needed for
validating the assumptions.

Setting general parameters We set up some basic parameters such as center frequency and sample den-
sity. The minimum sample density (samples-per-half-wavelength) must be 1 for static transmitters and
2 for mobile transceivers. This ensures that the Doppler characteristics of the channel can be correctly
captured. During the generation of the channel coefficients, interpolation is used to get the correct sample
rate (samples-per-second). However, channel interpolation needs much less computing time. Increasing the

Copyright: Fraunhofer Heinrich Hertz Institute 171


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

sample density in the simulation parameters increases the accuracy (less interpolation artefacts) at the cost
of much longer simulation times.
1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 7.3]) % Default Paper Size
11
12 s = qd_simulation_parameters ; % New s i m u l a t i o n p a r a m e t e r s
13 s . c en t e r _ f r e q u e n c y = 2.4 e9 ; % 2.4 GHz center f r e q u e n c y
14 s . u s e _ a b s o l u t e _ d e l a y s = 1; % Include delay of the LOS path
15 s . s ample_d ensity = 2.1; % Minimum p o s s i b l e sample density

Defining the layout A new layout is created and the static transmitter is defined first. In QuaDRiGa 2.2,
each transmitter has a track. Static transmitters use zero-length tracks. However, it is possible to define a
custom orientation for the BS in the track object. Here, the BS is oriented to the north-east.
1 l = qd_layout ( s ) ; % New layout
2
3 t = qd_track ( ’ linear ’ , 0 , pi /4 ) ; % Static track facing north - east
4 t . i ni t i a l _ p o s i t i o n = [0;0;6]; % 6 m height
5 t . name = ’ BS ’; % Assign unique name
6
7 a = qd_arrayant ( ’3 gpp -3 d ’ , 8 , 4 , s . center_frequency , 4 , 3 ) ; % High gain antenna
8 a . coupling = ones (4 ,1) ; % Set h o r i z o n t a l c o u p l i n g
9 a . co m bi ne _ pa tt er n ; % Combine r a d i a t i o n pattern
10 a . n ormaliz e_gain ; % N o r m a l i z e gain
11
12 l . tx_track (1 ,1) = t ; % Assign static tx track
13 l . tx_array (1 ,1) = a ; % Tx array
14
15 % C a l c u l a t e antenna f o o t p r i n t
16 [ map , x_coords , y_coords ] = l . power_map ( ’3 GPP_38 .901 _UMi_LOS ’ , ’ quick ’ ,...
17 1 , -50 , 200 , -50 , 200 , 1.5 ) ;
18 P_db = 10* log10 ( map {1}) ; % LOS p a t h l o s s in dB

Next, we create the first mobile transceiver (Car1). It acts as a receiver for the signals from the ”BS”
and as a transmitter for ”Car2”. A linear track with 250 m length is created and the speed is set to 100
km/h. Hence, the channel is observed to 9 seconds. For the dual-mobility feature to work, all tracks in
the layout must have the same number of snapshots. By default, linear tracks only have a start and an
end-point. However, in order to assign segments and scenarios to the track, we need to create intermediate
positions. Here, we interpolate the track so that there is a point for each 10 ms, resulting in 901 ”snapshots”.
Segments are created along the track using the ”qd track.set secenrio” method. The default settings assign
a new segment roughly every 30 m. Since ”Car1” is also a transmitter for ”Car2”, the same track is used
as a transmitter track. However, segments are only defined for receiver tracks. Transmitter tracks ”inherit”
their segmentation from the receiver tracks during the channel generation. For example, if the receiver track
for ”Car2” defines a segment from snapshot 200 to snapshot 300, the corresponding snapshots 200 to 300
from the transmitter track are used.
1 t = qd_track ( ’ linear ’ , 250 , pi /4 ) ; % T r a j e c t o r y of Car 1 moving away from BS
2 t . set_speed ( 100/3.6 ) ; % Speed = 100 km / h
3 t . interpolate ( ’ time ’ ,10e -3 ,[] ,[] ,1) ; % I n t e r p o l a t e to to 10 ms grid
4 t . i ni t i a l _ p o s i t i o n = [6;0;1.5]; % Start p o s i t i o n
5 t . name = ’ Car1 ’; % Assign unique name
6
7 a = qd_arrayant ( ’ dipole ’) ; % Dipole antenna
8
9 l . rx_track (1 ,1) = t . copy ; % Assign Rx track 1
10 l . rx_track (1 ,1) . set_scenario ([] ,[] ,[]) ; % Create s e g m e n t s ( rx - track only )
11 l . rx_array (1 ,1) = a ; % Assign Rx array 1
12
13 l . tx_track (1 ,2) = t . copy ; % Assign Rx track 2

Copyright: Fraunhofer Heinrich Hertz Institute 172


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

14 l . tx_array (1 ,2) = a ; % Assign Rx array 2

The second mobile receiver ”Car2” receives both signals from the ”BS” and from ”Car1”. It travels at 80
km/h in the opposite direction of ”Car1”. The track length must be shorter due to the lower speed. As for
the first track, interpolation is used to obtain 901 snapshots along the track and a different set of segments
is created.
1 t = qd_track ( ’ linear ’ , 200 , -3* pi /4 ) ; % T r a j e c t o r y of Car 2 moving towards BS
2 t . set_speed ( 80/3.6 ) ; % Speed = 80 km / h
3 t . interpolate ( ’ time ’ ,10e -3 ,[] ,[] ,1) ; % I n t e r p o l a t e to 10 ms grid
4 t . i ni t i a l _ p o s i t i o n = [17 1;177;1. 5]; % Start p o s i t i o n
5 t . name = ’ Car2 ’; % Assign unique name
6
7 l . rx_track (1 ,2) = t ; % Assign Rx track 2
8 l . rx_track (1 ,2) . set_scenario ([] ,[] ,[]) ; % Create s e g m e n t s ( rx - track only )
9 l . rx_array (1 ,2) = a ; % Assign Rx array 2

Now, the scenarios are assigned. The BS-Car links use the default 3GPP Urban-Microcell parameters. For
Car-Car channels, we use initial Urban-Device-to-Device parameters. Those have not been confirmed by
measurements yet. Since ”Car1” acts as both, a transmitter and a receiver, we also need to remove the
”Car1-Car1” link from the channel list. Lastly, a plot of the scenario is created showing the BS coverge and
the trajectories.
1 l . set_scenario ( ’3 GPP_38 .901 _UMi ’ ,[] ,1 ,0 ,40) ; % Static t r a n s m i t t e r
2 l . set_scenario ( ’ QuaDRiGa_UD2D ’ , [] ,2 ,0 ,40) ; % Mobile t r a n c e i v e r s
3
4 l . visualize ([] ,[] ,0) ; % Show BS and MT p o s i t i o n s on the map
5 hold on ; imagesc ( x_coords , y_coords , P_db ) ; hold off % Plot the antenna f o o t p r i n t
6 axis ([ -50 , 200 , -50 , 200]) ;
7 caxis ( [ -80 -40] ) ; % Color range
8 colmap = colormap ;
9 colormap ( colmap *0.5 + 0.5 ) ; % Adjust colors to be " lighter "
10 set ( gca , ’ layer ’ , ’ top ’) % Show grid on top of the map
11 colorbar ( ’ south ’)
12 title ( ’ BS1 Path Gain ( LOS ) [ dB ] ’)

1 Setting TX LOS state correlation distance to 40 m

BS1 Path Gain (LOS) [dB]


200
Tx-Position
Tx-Antenna
Tx-Track
Rx-Position
150 Rx-Antenna
Rx-Track
y-coord in [m]

100

50

-80 -75 -70 -65 -60 -55 -50 -45 -40

-50
-50 0 50 100 150 200
x-coord in [m]

Calculate channel coefficients The following command calculates the channel coefficients once per mil-
lisecond. The status update is is shown on the command line. This involves the following steps:

Copyright: Fraunhofer Heinrich Hertz Institute 173


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

• Interpolation of the tracks to match the sample density. This avoids unnecessary computations but
makes sure, that the Doppler profile is completely captured. At 2.4 GHz carrier frequency, 250 m
track length, and a sample density of 2.1, 8407 snapshots are needed.
• Generation of channel builder objects and assigning track segments to builders.
• Generation of large and small-scale-fading parameters, including spatial consistency.
• Generation of drifting channel coefficients for each track-segment.
• Merging of channel segments, including modeling the birth and death of scattering clusters.
• Interpolation of channel coefficients to match the sample rate. This generates 9001 snapshots at the
output.
1 update_rate = 1e -3;
2 c = l . get_channels ( update_rate ) ;

1 Starting channel generation using QuaDRiGa v2 .2.0 -0


2 2 receivers , 2 transmitters , 1 frequency (2.4 GHz )
3 Channel observation time : 9 seconds
4 Interpolating tracks ( v = 27.7778 m /s , SR = 933.9795 samples /s , update factor = 0.934)
5 Generating channel builder objects - 4 builders , 25 channel segments
6 Initializing random generators
7 Generating parameters
8 SSF Corr . [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 2 seconds
9 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 208 seconds
10 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 23 seconds
11 Interpolate [ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o ] 3 seconds
12 Formatting output channels - 3 channel objects
13 Total runtime : 239 seconds

Path gain Now we plot the path-gain for the 3 generated channels. As Car1 moves away from the BS, its
PG decreases from roughly -40 dB to about -100 dB. Likewise, the PG of Car2 increases. The PG of the
Car1-Car2 channel starts at a low vale and increases until the cars pass each other at about 4.8 seconds
simulation time. Then, the PG decreases again.
1 time = ( 0 : c (1 ,1) . no_snap -1 ) * update_rate ; % Time axis in seconds
2 pg = [ c (1 ,1) . par . pg ; c (1 ,2) . par . pg ; c (1 ,3) . par . pg ]; % The path - gain values
3
4 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 4.5]) % Change paper Size
5 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
6 plot ( time , pg ’ , ’ - ’ , ’ Linewidth ’ ,2) % Plot target PG
7 title ( ’ Path Gain vs . Time ’) ;
8 xlabel ( ’ Time [ s ] ’) ; ylabel ( ’ Path Gain [ dB ] ’) ;
9 axis ([0 , max ( time ) , min ( pg (:) ) -3 , max ( pg (:) ) +3]) ; grid on ;
10 legend ( ’ BS - Car1 ’ , ’ BS - Car2 ’ , ’ Car1 - Car2 ’)

Path Gain vs. Time


BS - Car1
BS - Car2
-60
Car1 - Car2
Path Gain [dB]

-80

-100

-120

-140
0 1 2 3 4 5 6 7 8 9
Time [s]

Doppler Spectrum The next three plots show the Doppler spectrum of the three channels. For the BS-
Car1 link, the expected Doppler shift (car moving away from BS) is -445 Hz (2*v*fc/c). For BS-Car2, it is
355 Hz and for Car1-Car2 if goes from 800 to -800 Hz when the cars pass each other. Due to the multipath
propagation, additional Doppler components occur.

Copyright: Fraunhofer Heinrich Hertz Institute 174


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

1 w = 100; % Doppler a n a l y s i s windows size (100 ms )


2 BW = 100 e6 ; % Channel b a n d w i d t h (100 MHz )
3 N = 128; % Number of c a r r i e r s
4
5 Doppler_axis = -2*( (0: w -1) /( w -1) -0.5) / update_rate ; % The Doppler axis in Hz
6 time = ( 0 : c (1 ,1) . no_snap -1 ) * update_rate ;
7 Time_axis = time ( 1: w : end ) ; % Time axis in seconds
8
9 no_Doppler = floor ( numel ( time ) ./ w ) ; % Number of Doppler samples
10
11 for iC = 1 : 3 % Repe
12
13 D o p p l e r _ s p e c t ru m = zeros ( w , no_Doppler ) ; % P r e a l l o c a t e Memory
14 for n = 1 : floor ( numel ( time ) ./ w )
15 ind = (n -1) * w + 1 : n * w ; % S n a p s h o t indices
16 H = c (1 , iC ) . fr ( BW , N , ind ) ; % F r e q u e n c y r e s p o n s e of the channel
17 H = permute ( H ,[3 ,4 ,1 ,2] ) ; % Reorder d i m e n s i o n s
18 G = ifft2 ( H ) ; % 2 D IFFT
19 G = fftshift ( G ,2) ; % Center Doppler s p e c t r u m
20 D o p p l e r _ s p e c t r um ( : , n ) = 10* log10 ( sum ( abs ( G ) .^2 , 1 ) ’ ) ; % L o g r i t h m i c power
21 end
22
23 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
24 imagesc ( Time_axis , Doppler_axis , D o p p le r _ s p e c t r u m ) ; % Create images
25 colorbar
26 title ([ ’ Doppler Spectrum ’ , regexprep ( c (1 , iC ) . name , ’_ ’ , ’ - ’) ]) ;
27 xlabel ( ’ Time [ s ] ’) ; ylabel ( ’ Doppler shift [ Hz ] ’) ;
28 set ( gca , ’ Ydir ’ , ’ Normal ’) % Invert y axis
29 colormap jet
30 end

Doppler Spectrum BS-Car1


1000 -60
Doppler shift [Hz]

500 -80

-100
0
-120
-500
-140
-1000
0 2 4 6 8
Time [s]

Doppler Spectrum BS-Car2


1000
-60
Doppler shift [Hz]

500 -80

-100
0
-120

-500 -140

-160
-1000
0 2 4 6 8
Time [s]

Copyright: Fraunhofer Heinrich Hertz Institute 175


eMail: [email protected]
QuaDRiGa v2.2.0 4 TUTORIALS

Doppler Spectrum Car1-Car2


1000 -50

Doppler shift [Hz]


500

0 -100

-500

-150
-1000
0 2 4 6 8
Time [s]

Copyright: Fraunhofer Heinrich Hertz Institute 176


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

5 Model calibration

QuaDRiGa implements all essential components of the 3GPP-3D channel model [9]. In order to qualify as a
3GPP-3D compatible implementation, and thus being eligible to evaluate 3GPP standardization proposals,
the model needs to be calibrated. Individual implementations of the 3GPP contributors have to create
a set of metrics which show that the model implementation fulfills the 3GPP requirements. This section
summarizes the calibration steps and presents the results obtained from QuaDRiGa.

The 3GPP calibration consists of two phases, where the first phase tests the validity of the path-loss model
and the elevation angle modeling. The second phase then tests several metrics for the SSF model. The
simulation assumptions and results from different 3GPP partners are summarized in [70] and are listed in
Table 37.

Table 37: Simulation assumptions for 3GPP-3D calibration


Parameter Value
Scenario 3D-UMa 3D-UMi
Layout Hexagonal grid, 19 micro sites, 3 sectors per site
ISD 500 m 200 m
BS antenna height 25 m 10 m
Min. BS-MT 2D distance 35 m 10 m
MT indoor fraction 80 %
MT orientation Random rotation around z-axis, rz ∼ U(0, 360◦ )
General equation: hM T = 3(nf l − 1) + 1.5
MT height in meters Indoor users: nf l ∼ U(1, Nf l ) where Nf l ∼ U(4, 8)
Outdoor users: nf l = 1
Carrier frequency 2 GHz
System bandwidth 10 MHz, 50 Resource Blocks
MT attachment Strongest BS, based on path loss
Config 1: K=M=10, N=1, 0.5λ spacing, V-pol , 12◦ tilt
BS antenna (Phase 1)
Config 2: K=M=1, N=1, V-pol
MT antenna (Phase 1) Config 1/2: Isotropic antenna, V-pol
Config 1: K=1, M=2, N=2, 0.5λ spacing, V-pol
BS antenna (Phase 2)
Config 2: K=M=10, N=2, X-pol (±45◦ ), 0.5λ spacing, 12◦ tilt
Config 1: N=2, Isotropic antenna, V-pol
MT antenna (Phase 2)
Config 2: Isotropic antenna, X-pol (0◦ /90◦ )

5.1 3GPP 36.873 Phase 1 Calibration

This section performs the 3GPP calibration as described in 3GPP TR 36.873 V12.5.0, Section 8.2, Page
39 for the phase 1 of the calibration exercise. It is shown how the model is set up to obtain the required
results, how the output is processed and how the results compare with the 3GPP baseline. The purpose of
the phase 1 calibration is to show the correct working of the path-loss models, the antenna model, the user
placement in 3D coordinates.

Antenna setup The antenna model consists of a 2D planar array structure with M rows and N columns of
patch elements. Each element has an azimuth and elevation FWHM of 65 degree. The elements can either
be vertically polarized or cross-polarizes with plus/minus 45 degree polarization. In the latter, the number
of antenna ports is doubled. Optionally, vertically stacked elements can be coupled using fixed complex-
valued weights. In order to reduce computational complexity, effective antenna patterns are calculated in
QuaDRiGa that include the coupling and downtilt settings.

Copyright: Fraunhofer Heinrich Hertz Institute 177


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

3GPP uses two antenna configurations for the phase 1 calibration. The first defines a high-gain panel antenna
with 10 coupled elements in elevation and 12 degree electric down-tilt. Note: The 102 degree electrical tilt
in Table 8.2-1 refer to spheric coordinates, whereas QuaDRiGa uses geographic coordinates. The second
antenna is a patch antenna. Both are defined in 3GPP TR 36.873, Section 7.1, Page 17 and implemented
”qd arrayant.generate”.
1 clear all
2 close all
3
4 s = qd_simulation_parameters ; % Set general s i m u l a t i o n p a r a m e t e r s
5 s . c en t e r _ f r e q u e n c y = 2 e9 ; % 2 GHz center f r e q u e n c y
6 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bars
7
8 % Antenna c o n f i g u r a t i o n 1
9 % 10 e l e m e n t s in elevation , 1 element in azimuth , v e r t i c a l pol . , 12 deg downtilt , 0.5 lambda spacing
10 a1 = qd_arrayant ( ’3 gpp -3 d ’ , 10 , 1 , s . center_frequency , 4 , 12 , 0.5 ) ;
11 a1 . e l e m e n t _ p os i t i o n (1 ,:) = 0.5; % D i s t a n c e from pole
12 a1 . name = ’K = M =10 ’; % Antenna name
13
14 % Antenna c o n f i g u r a t i o n 2
15 % 1 element in elevation , 1 element in azimuth , v e r t i c a l pol .
16 a2 = qd_arrayant ( ’3 gpp -3 d ’ , 1 , 1 , s . center_frequency , 1 , 0 , 0.5 ) ;
17 a2 . e l e m e n t _ p os i t i o n (1 ,:) = 0.5; % D i s t a n c e from pole
18 a2 . name = ’K = M =1 ’; % Antenna name

QuaDRiGa Setup Here, the channel model is configured. The simulation assumptions are given in Table
8.2-1 in 3GPP TR 36.873 V12.5.0. 3GPP specifies to perform simulations for 3D-UMa and 3D-UMi. The
scenario parameters are given in Table 6.1, page 14. Combined with the two antenna configurations, there
are four simulation setups. Hence, we define 4 QuaDRIGa layouts. All 3GPP scenarios define a a hexagonal
grid with 19 sites and three sectors per site. This is implemented in ”qd layout.generate”, using the ”regular”
layout.
1 no_rx = 2000; % Number of MTs ( d i r e c t l y scales the s i m u l a t i o n time )
2 create_curves = 1:4; % The number of curves to create
3
4 s . u s e _ 3 G P P _ b a s e l i n e = 1; % Disable s p h e r i c a l waves and g e o m e t r i c p o l a r i z a t i o n
5
6 isd = [ 200 , 200 , 500 , 500 ]; % ISD in each layout
7 no_go_dist = [ 10 , 10 , 35 , 35 ]; % Min . UE - eNB 2 D d i s t a n c e
8
9 l (1 ,1) = qd_layout . generate ( ’ regular ’ , 19 , isd (1) , a2 ) ; % 200 m ISD , K = M =1
10 l (1 ,1) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
11 l (1 ,1) . tx_position (3 ,:) = 10; % 10 m BS height
12 l (1 ,1) . name = ’3D - UMi ( K = M =1) ’;
13
14 l (1 ,2) = qd_layout . generate ( ’ regular ’ , 19 , isd (2) , a1 ) ; % 200 m ISD , K = M =10
15 l (1 ,2) . tx_position (3 ,:) = 10; % 10 m BS height
16 l (1 ,2) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
17 l (1 ,2) . name = ’3D - UMi ( K = M =10) ’;
18
19 l (1 ,3) = qd_layout . generate ( ’ regular ’ , 19 , isd (3) , a2 ) ; % 500 m ISD , K = M =1
20 l (1 ,3) . tx_position (3 ,:) = 25; % 25 m BS height
21 l (1 ,3) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
22 l (1 ,3) . name = ’3D - UMa ( K = M =1) ’;
23
24 l (1 ,4) = qd_layout . generate ( ’ regular ’ , 19 , isd (4) , a1 ) ; % 500 m ISD , K = M =10
25 l (1 ,4) . tx_position (3 ,:) = 25; % 25 m BS height
26 l (1 ,4) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
27 l (1 ,4) . name = ’3D - UMa ( K = M =10) ’;
28
29 % Drop users in each layout
30 for il = create_curves
31 l (1 , il ) . no_rx = no_rx ; % Number of users
32 l (1 , il ) . r a n d o m i z e _ r x _ p o s i t i o n s ( 0.93* isd ( il ) , 1.5 , 1.5 , 0 ) ; % Random p o s i t i o n s in first ring
33
34 % Keep no - go d i s t a n c e
35 ind = find ( abs ( l (1 , il ) . rx_position (1 ,:) + 1 j * l (1 , il ) . rx_position (2 ,:) ) < no_go_dist ( il ) ) ;
36 while ~ isempty ( ind )
37 l (1 , il ) . r a n d o m i z e _ r x _ p o s i t i o n s ( 0.93* isd ( il ) , 1.5 , 1.5 , 0 , ind ) ;
38 ind = find ( abs ( l (1 , il ) . rx_position (1 ,:) + 1 j * l (1 , il ) . rx_position (2 ,:) ) < no_go_dist ( il ) ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 178


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

39 end
40
41 % Set random height of the users
42 floor = randi (5 ,1 , l (1 , il ) . no_rx ) + 3; % Number of floors in the b u i l d i n g
43 for n = 1 : l (1 , il ) . no_rx
44 floor ( n ) = randi ( floor ( n ) ) ; % Floor level of the UE
45 end
46 l (1 , il ) . rx_position (3 ,:) = 3*( floor -1) + 1.5; % Height in meters
47
48 % Set the s c e n a r i o and assign LOS p r o b a b i l i t i e s (80% of the users are inddor )
49 % " s e t _ s c e n a r i o " returns an i n d i c a t o r if the user is indoors (1) or o u t d o o r s (0)
50 switch il
51 case {1 ,2} % UMi
52 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_3D_UMi ’ ,[] ,[] ,0.8) ;
53 case {3 ,4} % UMa
54 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_3D_UMa ’ ,[] ,[] ,0.8) ;
55 end
56 l (1 , il ) . rx_position (3 ,~ indoor_rx ) = 1.5; % Set outdoor - users to 1.5 m height
57
58 % Set user antenna
59 l (1 , il ) . rx_array = qd_arrayant ( ’ omni ’) ; % Omni - Antenna , v e r t i c a l l y p o l a r i z e d
60 end

Generate channels Now, the required metric are generated by the model. The MT is always connected
to the strongest serving BS. The coupling loss describes the received power to this BS relative to 0 dBm
transmit power. Only the LOS path is considered. Other metrics are the geometry factor (GF) and the
zenith angle at the BS.
1 tic
2 pg_eff = zeros ( no_rx , 19*3 , 4 ) ; % E f f e c t i v e PG for each MT and BS
3 zod = zeros ( no_rx *19 , 4 ) ; % Zenith angles for each MT and BS site
4 for il = create_curves
5 coeff = zeros ( no_rx * 19 , 3 ) ; % Raw channel c o e f f i c i e n t s
6 name = cell ( no_rx * 19 , 1 ) ; % Name in the form " Tx_Rx "
7
8 b = l (1 , il ) . init_builder ; % I n i t i a l z e channel builder objects
9 gen_lsf_parameters ( b ); % Generat shadow fading
10 cf = g e t _ l o s _ c h a nn e l s ( b ) ; % Get the LOS channel c o e f f i c i e n t s only
11
12 cnt = 1; % Counter
13 sic = size ( b ) ;
14 for i_cb = 1 : numel ( b )
15 [ i1 , i2 ] = qf . qind2sub ( sic , i_cb ) ;
16 tx_name = [ ’ Tx ’ , num2str ( i2 , ’ %02 d ’) ]; % Tx name , e . g . " Tx01 "
17
18 if b ( i1 , i2 ) . no _r x_ p os it io n s > 1
19 tmp = b ( i1 , i2 ) . get_angles ; % 3 D angles btween BS and MT
20 zod ( cnt : cnt + b ( i1 , i2 ) . no_rx_positions -1 , il ) = 90 - tmp (3 ,:) ;
21 end
22
23 for i_mt = 1 : b ( i1 , i2 ) . no _r x_ p os it io n s
24 rx_name = b ( i1 , i2 ) . rx_track (1 , i_mt ) . name ; % Rx name , e . g . " Rx0001 "
25 name { cnt } = [ tx_name , ’_ ’ , rx_name ]; % Link name , e . g . " T x 0 1 _ R x 0 0 0 1 "
26 coeff ( cnt ,:) = cf ( i1 , i2 ) . coeff (1 ,: ,1 , i_mt ) ; % Channel c o e f f i c i e n t s
27 cnt = cnt + 1; % I n c r e a s e counter
28 end
29 end
30
31 [~ , ii ] = sort ( name ) ; % Get the correct order of the c h a n n e l s
32 zod (: , il ) = zod ( ii , il ) ; % Sort ZODs by name
33
34 tmp = reshape ( coeff ( ii ,:) , no_rx , 19 , 3 ) ; % Split the 3 sectors from each BS site
35 tmp = permute ( tmp , [1 ,3 ,2] ) ; % Reorder the c h a n n e l s
36 pg_eff (: ,: , il ) = reshape ( tmp , no_rx , [] ) ;
37 end
38 pg_eff = abs ( pg_eff ) .^2; % A m p l i t u d e --> Power
39 zod = reshape ( zod , no_rx , 19 , 4 ) ;
40 toc

1 Elapsed time is 106.073939 seconds .

Copyright: Fraunhofer Heinrich Hertz Institute 179


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

Coupling Loss The coupling loss is defined as the path gain of a MT to its serving BS, i.e. the strongest
BS seen by the MT. Here, the term BS refers to one sector of a 3-sector site. In the proposed layout, there
are 19 sites, each consisting of three BSs. MTs were placed in the first ring of interferers, i.e. around the
first site. The phase 1 calibration does not consider a SSF model, but includes the antenna patterns. Hence,
the results shown in the following figure were obtained by running the simulations with only one path (the
LOS path). The thick lines were obtained using the QuaDRiGa model, the thin dashed line are taken from
3GPP 36.873. They represent the median of all 3GPP calibration results. The QuaDRiGa results fit almost
perfectly. The remaining differences are well within the tolerances visible in the individual result curves.
1 calib_3GPP_ref_data ; % Load r e f e r e n c e data
2
3 legend_names = { l (1 ,1) . name , l (1 ,2) . name , l (1 ,3) . name , l (1 ,4) . name }; % Legend entries
4 line_col = { ’b ’ , ’r ’ , ’k ’ , ’m ’ }; % Color of the lines
5
6 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
7 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
8 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
9 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
10 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
11 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
12 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 6.6]) % Default Paper Size
13
14 % C a l c u l a t e the c o u p l i n g loss from the e f f e c t i v e PG
15 coupling_loss = zeros ( no_rx , 4 ) ;
16 for il = create_curves
17 coupling_loss (: , il ) = 10* log10 ( max ( pg_eff (: ,: , il ) ,[] ,2 ) ) ;
18 end
19
20 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
21 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
22
23 xm = -150; wx = 100; tx = 0.01; ty = 97;
24 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
25 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
26 for il = create_curves
27 ln ( end +1) = plot ( bins , 100* qf . acdf ( coupling_loss (: , il ) , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
28 plot ( cl36873a ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
29 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( coupling_loss (: , il ) ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
30 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( cl36873a ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
31 end
32
33 hold off ; grid on ; box on ;
34 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
35 xlabel ( ’ Coupling loss ( dB ) ’)
36 ylabel ( ’ CDF [%] ’)
37 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
38 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 180


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

100
QD. -96.8 -102.3 -110.1 -111.0
3GP -98.2 -103.0 -112.3 -112.3
90

80

70

60
CDF [%]

50

40

30

20 3D-UMi (K=M=1)
3D-UMi (K=M=10)
10 3D-UMa (K=M=1)
3D-UMa (K=M=10)
v.2.1.24-0
0
-150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50
Coupling loss (dB)

Geometry Factor The GF is a lower bound for the actual SINR. It is defined as the power ratio of the
serving BS and the sum power of all interfering BSs. The results in the following Figure agree well with the
3GPP calibrations curves.
1 % C a l c u l a t e the GF
2 gf = zeros ( no_rx , 4 ) ;
3 for il = create_curves
4 gf (: , il ) = 10* log10 ( max ( pg_eff (: ,: , il ) ,[] ,2 ) ./ ( sum ( pg_eff (: ,: , il ) ,2 ) -...
5 max ( pg_eff (: ,: , il ) ,[] ,2 ) ) ) ;
6 end
7
8 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
9 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
10
11 xm = -10; wx = 40; tx = 0.01; ty = 97;
12 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
13 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
14 for il = create_curves
15 ln ( end +1) = plot ( bins , 100* qf . acdf ( gf (: , il ) , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
16 plot ( gf36873a ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
17 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( gf (: , il ) ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
18 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( gf36873a ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
19 end
20
21 hold off ; grid on ; box on ;
22 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
23 xlabel ( ’ Geometry ( dB ) ’)
24 ylabel ( ’ CDF [%] ’)
25 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
26 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 181


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

100
QD. 6.4 8.0 4.9 8.3
3GP 6.4 8.1 4.9 8.4
90

80

70

60
CDF [%]

50

40

30

20 3D-UMi (K=M=1)
3D-UMi (K=M=10)
10 3D-UMa (K=M=1)
3D-UMa (K=M=10)
v.2.1.24-0
0
-10 -6 -2 2 6 10 14 18 22 26 30
Geometry (dB)

Evaluation: Zenith of Departure Angle The ZoD is calculated from the LOS path between the serving
BS and the MT position. The values in the follwing Figure prove that the model is a 3D model. Users are
placed on different floors and the serving BS is determined based on the power of the LOS path. Note that
this power value changes when different antenna patterns are used. Hence, the assignment of MTs to BSs
is different, depending on which antennas are used at the BS, which explains why the curves differ from
each other. The results obtained from QuaDRiGa agree almost perfectly with the 3GPP calibration curves
(tolerances are within 0.1 degree).
1 % D e t e r m i n e the serving site
2 zod_serving = zeros ( no_rx , 4 ) ;
3 for il = create_curves
4 [~ , serving ] = max ( pg_eff (: ,: , il ) ,[] ,2) ;
5 serving = ceil ( serving / 3 - 0.1 ) ;
6 for ir = 1 : no_rx
7 zod_serving ( ir , il ) = zod ( ir , serving ( ir ) , il ) ;
8 end
9 end
10
11 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
12 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
13
14 xm = 70; wx = 40; tx = 0.01; ty = 97;
15 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
16 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
17 for il = create_curves
18 ln ( end +1) = plot ( bins , 100* qf . acdf ( zod_serving (: , il ) , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
19 plot ( zod36873a ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
20 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( zod_serving (: , il ) ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
21 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( zod36873a ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
22 end
23
24 hold off ; grid on ; box on ;
25 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
26 xlabel ( ’ LOS ZOD ( deg ) ’)
27 ylabel ( ’ CDF [%] ’)
28 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
29 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 182


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

100
QD. 91.4 92.2 93.6 94.8
3GP 91.5 92.3 94.3 95.1
90

80

70

60
CDF [%]

50

40

30

20 3D-UMi (K=M=1)
3D-UMi (K=M=10)
10 3D-UMa (K=M=1)
3D-UMa (K=M=10)
v.2.1.24-0
0
70 74 78 82 86 90 94 98 102 106 110
LOS ZOD (deg)

5.2 3GPP 36.873 Phase 2 Calibration

This section performs the 3GPP calibration as described in 3GPP TR 36.873 V12.5.0, Section 8.2, Page 42
for the phase 2 of the calibration exercise. It is shown how the model is set up to obtain the required results,
how the output is processed and how the results compare with the 3GPP baseline.

Antenna setup 3GPP uses two antenna configurations for the phase 2 calibration. The first BS array
antenna is an 2x2 array of vertically polarized patch antennas (0.5 lambda spacing). The second antenna
is a high-gain panel antenna with 10 coupled elements in elevation and two plus/minus 45 degree polarized
columns. The electric downtilt is set to 12 degree. Note: The 102 degree electrical tilt in Table 8.2-2
refer to spheric coordinates, whereas QuaDRiGa uses geographic coordinates. The first MS antenna is an
two-element ULA with vertical polarization. The second antenna is an 0/90 degree cross-polarized array
antenna.
1 clear all
2 close all
3
4 s = qd_simulation_parameters ; % Set general s i m u l a t i o n p a r a m e t e r s
5 s . c en t e r _ f r e q u e n c y = 2 e9 ; % 2 GHz center f r e q u e n c y
6
7 % BS antenna c o n f i g u r a t i o n 1
8 % 2 e l e m e n t s in elevation , 2 e l e m e n t s in azimuth , v e r t i c a l pol . , 0.5 lambda spacing
9 a_bs_1 = qd_arrayant ( ’3 gpp -3 d ’ , 2 , 2 , s . center_frequency , 1 , 0 , 0.5 ) ;
10 a_bs_1 . e l e m e n t _ p o s i t i o n (1 ,:) = 0.5; % D i s t a n c e from pole
11 a_bs_1 . name = ’K =1 , M =2 ’; % Antenna name
12
13 % BS antenna c o n f i g u r a t i o n 2
14 % 10 e l e m e n t s in elevation , 2 element in azimuth , v e r t i c a l pol . , 12 deg downtilt , 0.5 lambda spacing
15 a_bs_2 = qd_arrayant ( ’3 gpp -3 d ’ , 10 , 2 , s . center_frequency , 6 , 12 , 0.5 ) ;
16 a_bs_2 . e l e m e n t _ p o s i t i o n (1 ,:) = 0.5; % D i s t a n c e from pole
17 a_bs_2 . name = ’K = M =10 ’; % Antenna name
18
19 % MT antenna c o n f i g u r a t i o n 1
20 % 1 element in elevation , 2 e l e m e n t s in azimuth , v e r t i c a l pol . , 0.5 lambda spacing
21 a_mt_1 = qd_arrayant ( ’ omni ’) ;
22 a_mt_1 . copy_element (1 ,2) ;
23 a_mt_1 . e l e m e n t _ p o s i t i o n (2 ,:) = [ -s . wavelength /2 , s . wavelength /2 ]*0.5;
24
25 % MT antenna c o n f i g u r a t i o n 2
26 % 1 element in elevation , 2 e l e m e n t s in azimuth , X - pol . 0/90 , 0.5 lambda spacing
27 a_mt_2 = qd_arrayant ( ’ omni ’) ;

Copyright: Fraunhofer Heinrich Hertz Institute 183


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

28 a_mt_2 . copy_element (1 ,2) ;


29 a_mt_2 . Fa (: ,: ,2) = 0;
30 a_mt_2 . Fb (: ,: ,2) = 1;

QuaDRiGa Setup Here, the channel model is configured. The simulation assumptions are given in Table
8.2-2 in 3GPP TR 36.873 V12.5.0. 3GPP specifies to perform simulations for 3D-UMa and 3D-UMi. The
scenario parameters are given in Table 6.1, page 14. Combined with the two antenna configurations, there
are four simulation setups. Hence, we define four QuaDRIGa layouts. All 3GPP scenarios define a a
hexagonal grid with 19 sites and three sectors per site. This is implemented in ”qd layout.generate”, using
the ”regular” layout.
1 no_rx = 2000; % Number of MTs ( d i r e c t l y scales the s i m u l a t i o n time )
2 create_curves = 1:4; % The number of curves to create
3
4 s . u s e _ 3 G P P _ b a s e l i n e = 1; % Disable s p h e r i c a l waves
5 s . s ho w _ p r o g r e s s _ b a r s = 0; % Enable / disable status display
6
7 isd = [ 200 , 200 , 500 , 500 ]; % ISD in each layout
8 no_go_dist = [ 10 , 10 , 35 , 35 ]; % Min . UE - eNB 2 D d i s t a n c e
9
10 l (1 ,1) = qd_layout . generate ( ’ regular ’ , 19 , isd (1) , a_bs_1 ) ; % 200 m ISD , K = M =1
11 l (1 ,1) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
12 l (1 ,1) . tx_position (3 ,:) = 10; % 10 m BS height
13 l (1 ,1) . name = ’3D - UMi ( K =1 , M =2) ’;
14
15 l (1 ,2) = qd_layout . generate ( ’ regular ’ , 19 , isd (2) , a_bs_2 ) ; % 200 m ISD , K = M =10
16 l (1 ,2) . tx_position (3 ,:) = 10; % 10 m BS height
17 l (1 ,2) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
18 l (1 ,2) . name = ’3D - UMi ( K = M =10) ’;
19
20 l (1 ,3) = qd_layout . generate ( ’ regular ’ , 19 , isd (3) , a_bs_1 ) ; % 500 m ISD , K = M =1
21 l (1 ,3) . tx_position (3 ,:) = 25; % 25 m BS height
22 l (1 ,3) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
23 l (1 ,3) . name = ’3D - UMa ( K =1 , M =2) ’;
24
25 l (1 ,4) = qd_layout . generate ( ’ regular ’ , 19 , isd (4) , a_bs_2 ) ; % 500 m ISD , K = M =10
26 l (1 ,4) . tx_position (3 ,:) = 25; % 25 m BS height
27 l (1 ,4) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
28 l (1 ,4) . name = ’3D - UMa ( K = M =10) ’;
29
30 % Dorp users in each layout
31 for il = create_curves
32 l (1 , il ) . no_rx = no_rx ; % Number of users
33 l (1 , il ) . r a n d o m i z e _ r x _ p o s i t i o n s ( 0.93* isd ( il ) ,1.5 ,1.5 ,0 ) ; % Random p o s i t i o n s in first ring
34
35 % Keep no - go d i s t a n c e
36 ind = find ( abs ( l (1 , il ) . rx_position (1 ,:) + 1 j * l (1 , il ) . rx_position (2 ,:) ) < no_go_dist ( il ) ) ;
37 while ~ isempty ( ind )
38 l (1 , il ) . r a n d o m i z e _ r x _ p o s i t i o n s ( 0.93* isd ( il ) , 1.5 , 1.5 , 0 , ind ) ;
39 ind = find ( abs ( l (1 , il ) . rx_position (1 ,:) + 1 j * l (1 , il ) . rx_position (2 ,:) ) < no_go_dist ( il ) ) ;
40 end
41
42 % Set random height of the users
43 floor = randi (5 ,1 , l (1 , il ) . no_rx ) + 3; % Number of floors in the b u i l d i n g
44 for n = 1 : l (1 , il ) . no_rx
45 floor ( n ) = randi ( floor ( n ) ) ; % Floor level of the UE
46 end
47 l (1 , il ) . rx_position (3 ,:) = 3*( floor -1) + 1.5; % Height in meters
48
49 % Set the s c e n a r i o and assign LOS p r o b a b i l i t i e s (80% of the users are inddor )
50 % " s e t _ s c e n a r i o " returns an i n d i c a t o r if the user is indoors (1) or o u t d o o r s (0)
51 switch il
52 case {1 ,2} % UMi
53 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_3D_UMi ’ ,[] ,[] ,0.8) ;
54
55 case {3 ,4} % UMa
56 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_3D_UMa ’ ,[] ,[] ,0.8) ;
57 end
58 l (1 , il ) . rx_position (3 ,~ indoor_rx ) = 1.5; % Set outdoor - users to 1.5 m height
59
60 switch il % Set user antenna

Copyright: Fraunhofer Heinrich Hertz Institute 184


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

61 case {1 ,3} % ULA


62 l (1 , il ) . rx_array = a_mt_1 ;
63 case {2 ,4} % X - POL
64 l (1 , il ) . rx_array = a_mt_2 ;
65 end
66 end

Generate channels Channels are now generated using the default QuaDRiGa method (phase 1 only used
the LOS path). This will take quite some time.
1 tic % Time the s i m u l a t i o n s
2 clear c
3 for il = create_curves
4 cl = l (1 , il ) . get_channels ; % Generate channels
5 nEl = l (1 , il ) . tx_array (1 ,1) . no_elements / 3; % Number of e l e m e n t s per sector
6 nEl = { 1: nEl , nEl +1:2* nEl , 2* nEl +1:3* nEl }; % Element indices per sector
7 c (: ,: , il ) = split_tx ( cl , nEl ) ; % Split c h a n n e l s from each sector
8 end
9 toc

1 Elapsed time is 2145.225497 seconds .

Coupling Loss In the second phase of the calibration, the SSF model is enabled. Hence, all NLOS paths
are included in the evaluations. For this reason, the coupling loss changes compared to phase 1. Multiple
paths are now differently weighted by the antenna pattern, depending on the departure angles at the BS.
The path gain is calculated by averaging the power of all sublinks of the MIMO channel matrix. As for phase
1, the coupling loss is the path gain of the serving BS. MTs are assigned to BSs based on the maximum
path gain value.
1 calib_3GPP_ref_data ; % Load r e f e r e n c e data
2
3 legend_names = { l (1 ,1) . name , l (1 ,2) . name , l (1 ,3) . name , l (1 ,4) . name }; % Legend entries
4 line_col = { ’b ’ , ’r ’ , ’k ’ , ’m ’ }; % Color of the lines
5
6 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
7 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
8 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
9 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
10 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
11 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
12 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 6.6]) % Default Paper Size
13
14 pg_eff = zeros ( no_rx , 19*3 , 4 ) ; % C a l c u l a t e the e f f e c t i v e path gain from the c h a n n e l s
15 for il = create_curves
16 % Get the number of MIMO sob - c h a n n e l s in the channel matrix
17 no_mimo_links = l (1 , il ) . tx_array (1 ,1) . no_elements / 3 * l (1 , il ) . rx_array (1 ,1) . no_elements ;
18 for ir = 1 : no_rx % Extract e f f e c t i v e PG vor each BS - MT link
19 for it = 1 : 19*3
20 pg_eff ( ir , it , il ) = sum ( abs ( c ( ir , it , il ) . coeff (:) ) .^2 ) / no_mimo_links ;
21 end
22 end
23 end
24
25 coupling_loss = zeros ( no_rx , 4 ) ; % C a l c u l a t e the c o u p l i n g loss from the e f f e c t i v e PG
26 for il = create_curves
27 coupling_loss (: , il ) = 10* log10 ( max ( pg_eff (: ,: , il ) ,[] ,2 ) ) ;
28 end
29
30 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
31 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
32
33 xm = -150; wx = 100; tx = 0.01; ty = 97;
34 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
35 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
36 for il = create_curves
37 ln ( end +1) = plot ( bins , 100* qf . acdf ( coupling_loss (: , il ) , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
38 plot ( cl36873b ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
39 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( coupling_loss (: , il ) ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
40 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( cl36873b ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;

Copyright: Fraunhofer Heinrich Hertz Institute 185


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

41 end
42
43 hold off ; grid on ; box on ;
44 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
45 xlabel ( ’ Coupling loss ( dB ) ’)
46 ylabel ( ’ CDF [%] ’)
47 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
48 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

100
QD. -97.1 -98.8 -111.3 -110.9
3GP -98.0 -98.4 -112.2 -110.9
90

80

70

60
CDF [%]

50

40

30

20 3D-UMi (K=1,M=2)
3D-UMi (K=M=10)
10 3D-UMa (K=1,M=2)
3D-UMa (K=M=10)
v.2.2.0-0
0
-150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50
Coupling loss (dB)

Wideband SINR The wideband SINR is essentially the same as the GF. However, the 3GPP model uses
the RSRP values for the calculation of this metric. The calculation method is described in 3GPP TR 36.873
V12.5.0 in Section 8.1 on Page 38. Essentially, the RSRP values describe the average received power (over
all antenna elements at the receiver) for each transmit antenna port. Hence, in the phase 2 calibration,
there are 4 RSRP values, one for each transmit antenna. The wideband SINR is the GF calculated from
the first RSRP value, i.e. the average power for the first transmit antenna port.
1 % C a l c u l a t e the RSRP value from the first t r a n s m i t antenna
2 rsrp_p0 = zeros ( no_rx , 19*3 , 4 ) ;
3 for il = create_curves
4 for ir = 1 : no_rx
5 for it = 1 : 19*3
6 tmp = c ( ir , it , il ) . coeff (: ,1 ,:) ; % C o e f f i c i e n t s from first Tx antenna
7 rsrp_p0 ( ir , it , il ) = sum ( abs ( tmp (:) ) .^2 ) / 2; % Divide by 2 Rx a n t e n n a s
8 end
9 end
10 end
11
12 % C a l c u l a t e w i d e b a n d SINR
13 sinr = zeros ( no_rx , 4 ) ;
14 for il = create_curves
15 sinr (: , il ) = 10* log10 ( max ( rsrp_p0 (: ,: , il ) ,[] ,2 ) ./ ...
16 ( sum ( rsrp_p0 (: ,: , il ) ,2 ) - max ( rsrp_p0 (: ,: , il ) ,[] ,2 ) ) ) ;
17 end
18
19 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
20 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
21
22 xm = -10; wx = 40; tx = 0.01; ty = 97;
23 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
24 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
25 for il = create_curves
26 ln ( end +1) = plot ( bins , 100* qf . acdf ( sinr (: , il ) , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
27 plot ( sinr36873b ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
28 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( sinr (: , il ) ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
29 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( sinr36873b ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;

Copyright: Fraunhofer Heinrich Hertz Institute 186


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

30 end
31
32 hold off ; grid on ; box on ;
33 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
34 xlabel ( ’ Wideband SINR ( dB ) ’)
35 ylabel ( ’ CDF [%] ’)
36 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
37 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

100
QD. 3.4 3.8 2.3 3.3
3GP 3.6 4.3 2.6 4.7
90

80

70

60
CDF [%]

50

40

30

20 3D-UMi (K=1,M=2)
3D-UMi (K=M=10)
10 3D-UMa (K=1,M=2)
3D-UMa (K=M=10)
v.2.2.0-0
0
-10 -6 -2 2 6 10 14 18 22 26 30
Wideband SINR (dB)

Zenith of Departure Spread The zenith of departure spread is calculated without the influence of the
antenna patterns. Only the raw value before weighting the path powers with the antenna gain is used. This
is not immediately clear from 3GPP TR 36.873, because the calculation method is not specified. However,
a high gain pattern, such as used for the K=M=10 cases, would significantly decrease the angular spread
compared to the low-gain patterns (K=1, M=2) since may paths get less power due to the weighting with
the antenna pattern. Hence, we conclude that the angular spreads are calculated without influence of the
antenna patterns. Unfortunately, 3GPP also does not define how the angular spread is calculated. Here,
we extract the angles and the path powers from the QuaDRiGa SSF model and calculate the RMS angular
spread as

L
!
X
φ̄ = arg Pl · exp (jφl )
l=1
[∗] 
φl = φl − φ̄ + π mod 2π − π
v !2
L L
u
u1 X  2 1 X
[∗] [∗]
σφ = t · Pl · φl − · Pl · φl
P P
l=1 l=1

where φl is the raw departure or arrival angle of a path obtained from the model, φ̄ is the mean angle of all
[∗]
paths belonging to a CIR, and φl is the angle where the mean angle is equal to 0 degree. Pl is the power
of a path, P is the total power in the CIR, and L is the number of paths.

To gain some information about the expected values, we can use the formulas in 3GPP TR 36.873, page 37.
Most of the users are in NLOS conditions and 80 percent of them are situated indoors. Simulation results
show that the average distance between the MT and the serving BS is 0.65 times the ISD. Also, the average
height for the indoor users is 9 m. With those values, the expected median ZSD for this case are:

Copyright: Fraunhofer Heinrich Hertz Institute 187


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

µZSD (UMa, NLOS, O2I) = 10−2.1(d2D /1000)−0.01(hM T −1.5)+0.9 ≈ 1.4◦


µZSD (UMi, NLOS, O2I) = 10−2.1(d2D /1000)+0.01·max(hM T −hBS ,0)+0.9 ≈ 4.4◦

Results in the figure show that the median ZOD values for the 3GPP calibration are around 4 degree for
UMi and 2 degree for UMa. However, QuaDRiGa produces smaller values of 3 degree for UMi and 1.7
degree for UMa.
1 zsd = zeros ( no_rx , 4 ) ;
2 for il = create_curves
3 for ir = 1 : no_rx
4 [~ , it ] = max ( pg_eff ( ir ,: , il ) ,[] ,2) ; % D e t e r m i n e the serving BS
5 eod = c ( ir , it , il ) . par . EoD_cb * pi /180; % EoD angle in [ rad ]
6 pow = c ( ir , it , il ) . par . pow_cb ; % N o r m a l i z e d power w / o antenna
7 zsd ( ir , il ) = qf . c a l c _ a n g u l a r _ s p r e a d s ( eod , pow ) ; % ZSD = ESD in [ rad ]
8 end
9 end
10 zsd = zsd * 180 / pi ; % Convert to [ deg ]
11
12 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
13 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
14
15 xm = 0; wx = 50; tx = 0.51; ty = 77;
16 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
17 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
18 for il = create_curves
19 ln ( end +1) = plot ( bins , 100* qf . acdf ( zsd (: , il ) , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
20 plot ( zsb36873b ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
21 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( zsd (: , il ) ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
22 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( zsb36873b ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
23 end
24
25 hold off ; grid on ; box on ;
26 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
27 xlabel ( ’ ZSD ( deg ) ’)
28 ylabel ( ’ CDF [%] ’)
29 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
30 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

100

90

80
QD. 3.2 3.6 1.3 1.7
3GP 3.7 4.5 1.8 2.5
70

60
CDF [%]

50

40

30

20 3D-UMi (K=1,M=2)
3D-UMi (K=M=10)
10 3D-UMa (K=1,M=2)
3D-UMa (K=M=10)
v.2.2.0-0
0
0 5 10 15 20 25 30 35 40 45 50
ZSD (deg)

Zenith of Arrival Spread The ZSA is calculated in the same way as the ZSD. It is notable here, that the
for all O2I scenarios, identical values were proposed for the ZSA in 3GPP TR 36.873. The median value
is given as 10.2 degree. Since 80 percent of the MTs are indoors, the median value should be around 10.2

Copyright: Fraunhofer Heinrich Hertz Institute 188


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

for all scenarios and antenna configurations. Surprisingly, the results show differences in the median ZSA,
depending on the antenna and scenario settings for both, the 3GPP-3D reference curves and the QuaDRiGa
results. The reason for this is currently subject to speculation. As for the ZSD, QuaDRiGa tends to predict
slightly lower median values compared to the 3GPP-3D reference.
1 zsa = zeros ( no_rx , 4 ) ;
2 for il = create_curves
3 for ir = 1 : no_rx
4 [~ , it ] = max ( pg_eff ( ir ,: , il ) ,[] ,2) ; % D e t e r m i n e the serving BS
5 eod = c ( ir , it , il ) . par . EoA_cb * pi /180; % EoD angle in [ rad ]
6 pow = c ( ir , it , il ) . par . pow_cb ; % N o r m a l i z e d power w / o antenna
7 zsa ( ir , il ) = qf . c a l c _ a n g u l a r _ s p r e a d s ( eod , pow ) ; % ZSD = ESD in [ rad ]
8 end
9 end
10 zsa = zsa * 180 / pi ; % Convert to [ deg ]
11
12 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
13 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
14
15 xm = 0; wx = 50; tx = 0.51; ty = 77;
16 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
17 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
18 for il = create_curves
19 ln ( end +1) = plot ( bins , 100* qf . acdf ( zsa (: , il ) , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
20 plot ( zsa36873b ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
21 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( zsa (: , il ) ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
22 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( zsa36873b ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
23 end
24
25 hold off ; grid on ; box on ;
26 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
27 xlabel ( ’ ZSA ( deg ) ’)
28 ylabel ( ’ CDF [%] ’)
29 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
30 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

100

90

80
QD. 7.3 8.9 11.8 11.7
3GP 9.0 9.9 11.7 12.4
70

60
CDF [%]

50

40

30

20 3D-UMi (K=1,M=2)
3D-UMi (K=M=10)
10 3D-UMa (K=1,M=2)
3D-UMa (K=M=10)
v.2.2.0-0
0
0 5 10 15 20 25 30 35 40 45 50
ZSA (deg)

Largest and smallest singular values The singular values of a MIMO channel matrix describe how many
parallel spatial data streams can be transmitted to one user and what the individual capacity of each streams
is. The simulation settings propose two settings: One with four vertically polarized antennas at the BS and
two vertically polarized antennas at the receiver (configuration 1), and one with two cross-polarized high-
gain an antennas at the BS and an ideal cross-polarized array antenna at the receiver (configuration 2).
Both configurations result in a 2x4 MIMO channel. Hence, the channel has two singular values and supports

Copyright: Fraunhofer Heinrich Hertz Institute 189


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

at most two streams. The 3GPP-3D report does not mention, how the singular values are calculated from
the channel matrix. It was only discussed internally. The method is as follows:

• The results are reported for the channel matrix of the serving BS. The serving BS is determined at
the MT by the highest received power of all BS in the layout.
• The calculations are done in the frequency domain. The bandwidth is set to 10 MHz, which is further
split into 50 resource blocks (RBs) of 200 kHz bandwidth, each. Each RB can further be divided inton
sub-carriers. However, for the QuaDRiGa results, we only used one subcarrier per RB.
• The singular values are reported for channels without path-gain, but with antenna patterns included.
Hence, one needs to extract the path-gain at the MT position from the channel model and % normalize
the channel matrix accordingly, i.e.
H[raw]
H= √
100.1·P GdB
• The “singular values” are calculated for each RB by an Eigen-value decomposition of the receive
covariance matrix as
n
!
RB
1 X
s1,2 = · eig Hn HH
n
nRB
n=1

for one single carrier, the relationship between the eigenvalues of the covariance matrix and the singular
values of the channel matrix is given by
2
s1,2 = eig Hn HH

n = {svd (H)}

• Results are presented in logarithmic scale, i.e. as 10 · log10 (s1,2 ).


1 sv = zeros ( 2 ,50 , no_rx ,4 ) ;
2 for il = create_curves
3 for ir = 1 : no_rx
4 [~ , it ] = max ( pg_eff ( ir ,: , il ) ,[] ,2) ; % D e t e r m i n e the serving BS
5
6 % Frequency - Domain channel matrix @ 50 RBs , 10 MHz
7 H = c ( ir , it , il ) . fr ( 10 e6 , 50 ) ;
8
9 % Get the PG without antenna pattern . This is stored in c . par . p g _ p a r s e t .
10 pg = c ( ir , it , il ) . par . pg_parset ; % in [ dB ]
11 H = H ./ sqrt (10.^(0.1* pg ) ) ; % N o r m a l i z e channel matrix
12
13 for m = 1: size (H ,3)
14 sv (: ,m , ir , il ) = svd ( H (: ,: , m ) ) .^2;
15 end % NOTE : eig ( H (: ,: , m ) * H (: ,: , m ) ’ ) == svd ( H (: ,: , m ) ) .^2
16 end
17 end
18
19 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
20 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
21
22 xm = -5; wx = 40; tx = 0.01; ty = 97;
23 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
24 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
25 for il = create_curves
26 sv_max = 10* log10 ( reshape ( sv (1 ,: ,: , il ) ,[] ,1) ) ;
27 ln ( end +1) = plot ( bins , 100* qf . acdf ( sv_max , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
28 plot ( sv1_36873b ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
29 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( sv_max ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
30 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( sv1_36873b ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
31 end
32
33 hold off ; grid on ; box on ;
34 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
35 xlabel ( ’ Largest singular value (10 log10 ) ’)
36 ylabel ( ’ CDF [%] ’)
37 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
38 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 190


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

100
QD. 12.7 12.2 12.8 13.7
3GP 12.5 13.8 12.6 15.9
90

80

70

60
CDF [%]

50

40

30

20 3D-UMi (K=1,M=2)
3D-UMi (K=M=10)
10 3D-UMa (K=1,M=2)
3D-UMa (K=M=10)
v.2.2.0-0
0
-5 -1 3 7 11 15 19 23 27 31 35
Largest singular value (10log10)

The generated figure shows the distribution of the largest singular value. For the results with co-polar
antennas (the blue and black curve), there is an almost perfect match between QuaDRiGa and the 3GPP
calibration curves. The results for the cross-polar antennas (red and magenta line) show some differences.
However, the results from individual partners in R1-143469-2014also show a significant spread in this case.
Median results for the UMi scenario (red curve) ranged from 9 to 15 dB. QuaDRiGa predicts 10.6 dB, which
is still well within the reported range.

Smallest singular value The results for the smallest singular value are shown in the following figure. Here,
QuaDRiGa performs very close to the median results reported in R1-143469-2014.
1 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
2 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
3
4 xm = -20; wx = 40; tx = 0.01; ty = 97;
5 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
6 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
7 for il = create_curves
8 sv_min = 10* log10 ( reshape ( sv (2 ,: ,: , il ) ,[] ,1) ) ;
9 ln ( end +1) = plot ( bins , 100* qf . acdf ( sv_min , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
10 plot ( sv2_36873b ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
11 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( sv_min ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
12 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( sv2_36873b ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
13 end
14
15 hold off ; grid on ; box on ;
16 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
17 xlabel ( ’ Smallest singular value (10 log10 ) ’)
18 ylabel ( ’ CDF [%] ’)
19 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
20 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 191


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

100
QD. -1.0 6.0 -0.6 7.2
3GP -2.3 6.0 -2.0 7.5
90

80

70

60
CDF [%]

50

40

30

20 3D-UMi (K=1,M=2)
3D-UMi (K=M=10)
10 3D-UMa (K=1,M=2)
3D-UMa (K=M=10)
v.2.2.0-0
0
-20 -16 -12 -8 -4 0 4 8 12 16 20
Smallest singular value (10log10)

Ratio of singular values Probably a more important measure than the singular values themselves is the
ratio between the singular values, which is calculated as
 
s1
SR = 10 · log10
s2
q
This measure is closely linked to the condition number of the channel matrix C = ss12 . The larger this
number is, the more difficult it is to invert the matrix H. However, inverting this matrix is required in order
to separate the two data streams at the receiver.
1 figure ( ’ Position ’ ,[ 50 , 550 , 950 , 600]) ;
2 axes ( ’ position ’ ,[0.09 0.12 0.88 0.86]) ; hold on ;
3
4 xm = 0; wx = 40; tx = 0.51; ty = 37;
5 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
6 ln = []; bins = ( -0.1:0.01:1.1) * wx + xm ;
7 for il = create_curves
8 sv_rat = 10* log10 ( reshape ( sv (1 ,: ,: , il ) ./ sv (2 ,: ,: , il ) ,[] ,1) ) ;
9 ln ( end +1) = plot ( bins , 100* qf . acdf ( sv_rat , bins ) ,[ ’ - ’ , line_col { il }] , ’ Linewidth ’ ,2) ;
10 plot ( svR_36873b ( il ,:) , 0:5:100 ,[ ’ -- ’ , line_col { il }] , ’ Linewidth ’ ,1 )
11 text (( tx +0.1* il ) * wx + xm , ty , num2str ( median ( sv_rat ) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
12 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( svR_36873b ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;
13 end
14
15 hold off ; grid on ; box on ;
16 set ( gca , ’ YTick ’ ,0:10:100) ; set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
17 xlabel ( ’ Ratio of singular values (10 log10 ) ’)
18 ylabel ( ’ CDF [%] ’)
19 legend ( ln , legend_names ( create_curves ) , ’ Location ’ , ’ SouthEast ’)
20 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 192


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

100

90

80

70

60
CDF [%]

50

40
QD. 13.4 5.6 13.2 6.0
3GP 14.4 6.7 14.3 7.1
30

20 3D-UMi (K=1,M=2)
3D-UMi (K=M=10)
10 3D-UMa (K=1,M=2)
3D-UMa (K=M=10)
v.2.2.0-0
0
0 4 8 12 16 20 24 28 32 36 40
Ratio of singular values (10log10)

As can be seen, the ratio is much higher for the co-polar antenna configuration (blue and black curve). For
cross-polar channels, the ratio is about one order of magnitude lower, since an additional degree of freedom
is provided by the second polarization. Results from QuaDRiGa generally agree well. However, there is
one exception for the 3D-UMa cross-polar case, where QuaDRiGa predicts a SV-ratio of 6.1 dB. The lowest
reported value in R1-143469-2014 is 6.3 dB.

5.3 3GPP 38.901 Large Scale Calibration

This section performs the 3GPP calibration as described in 3GPP TR 38.901 V14.1.0, Section 7.8.1, Page
74 for the large scale calibration. It is shown how the model is set up to obtain the required results,
how the output is processed and how the results compare with the 3GPP baseline. The purpose of this
calibration is to show the correct working of the path-loss models, the antenna model, the user placement
in 3D coordinates.

Antenna setup 3GPP uses a high-gain panel antenna with 10 coupled elements in elevation and 12 degree
electric down-tilt for UMa and UMi scenarios. Indoor scenarios use 20 degree downtilt. Note: The 102 or
110 degree electrical tilt in Table 7.8-1 refer to spheric coordinates, whereas QuaDRiGa uses geographic
coordinates.
1 close all
2 clear all
3
4 % Antenna c o n f i g u r a t i o n 1 ( UMa and UMi )
5 % 10 e l e m e n t s in elevation , 1 element in azimuth , v e r t i c a l pol . , 12 deg downtilt , 0.5 lambda spacing
6 a1 = qd_arrayant ( ’3 gpp -3 d ’ , 10 , 1 , [] , 4 , 12 , 0.5 ) ;
7 a1 . e l e m e n t _ p os i t i o n (1 ,:) = 0.5; % D i s t a n c e from pole in [ m ]
8
9 % Antenna c o n f i g u r a t i o n 1 ( Indoor )
10 % 10 e l e m e n t s in elevation , 1 element in azimuth , v e r t i c a l pol . , 20 deg downtilt , 0.5 lambda spacing
11 a2 = qd_arrayant ( ’3 gpp -3 d ’ , 10 , 1 , [] , 4 , 20 , 0.5 ) ;
12 a2 . e l e m e n t _ p os i t i o n (1 ,:) = 0.2; % D i s t a n c e from pole in [ m ]

QuaDRiGa Setup Here, the channel model is configured. The simulation assumptions are given in Table
7.8.1 in 3GPP TR 38.901 V14.1.0. 3GPP specifies to perform simulations for UMa, UMi and Indoor at 3
frequencies: 6 GHz, 30 GHz and 70 GHz. The scenario parameters for UMa and UMi are given in Table
7.2-1, page 20. Hence, we define three QuaDRIGa layouts. UMa and UMi use a hexagonal grid with 19

Copyright: Fraunhofer Heinrich Hertz Institute 193


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

sites and three sectors per site. This is implemented in ”qd layout.generate”, using the ”regular” layout.
The indoor scenario layout is speciefied in Table 7.2-2.
1 no_rx = 2000; % Number of MTs ( d i r e c t l y scales the s i m u l a t i o n time )
2 s el ec t _s ce na r io = 1:3; % S c e n a r i o : 1 = UMi , 2 = UMa , 3 = Indoor
3 s el ec t _f eq ue n cy = 1:3; % F r e q u e n c y : 1 = 6 GHz , 2 = 30 GHz , 4 = 70 GHz
4
5 s = qd_simulation_parameters ; % Set general s i m u l a t i o n p a r a m e t e r s
6 s . c en t e r _ f r e q u e n c y = [ 6 e9 , 30 e9 , 70 e9 ]; % Set center f r e q u e n c i e s for the s i m u l a t i o n s
7 s . c en t e r _ f r e q u e n c y = s . c e n t e r _ f r e q u e n c y ( s el ec t _f eq ue n cy ) ;
8 no_freq = numel ( s . c e n t e r _ f r e q u e nc y ) ;
9
10 s . u s e _ 3 G P P _ b a s e l i n e = 1; % Disable s p h e r i c a l waves
11 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bar
12
13 isd = [ 200 , 500 , 20 ]; % ISD in each layout
14 no_go_dist = [ 10 , 35 , 0 ]; % Min . UE - eNB 2 D d i s t a n c e
15
16 l (1 ,1) = qd_layout . generate ( ’ regular ’ , 19 , isd (1) , a1 ) ;
17 l (1 ,1) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
18 l (1 ,1) . tx_position (3 ,:) = 10; % 10 m BS height
19 l (1 ,1) . name = ’ UMi ’;
20
21 l (1 ,2) = qd_layout . generate ( ’ regular ’ , 19 , isd (2) , a1 ) ;
22 l (1 ,2) . tx_position (3 ,:) = 25; % 25 m BS height
23 l (1 ,2) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
24 l (1 ,2) . name = ’ UMa ’;
25
26 l (1 ,3) = qd_layout . generate ( ’ indoor ’ , [2 ,6] , isd (3) , a2 , 3 , 30) ;
27 l (1 ,3) . tx_position (3 ,:) = 3; % 3 m BS height
28 l (1 ,3) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
29 l (1 ,3) . name = ’ Indoor Open Office ’;
30
31 for il = se le c t_ sc en a ri o % Dorp users in each layout
32 l (1 , il ) . no_rx = no_rx ; % Number of users
33 if il == 3
34 ind = true ( 1 , no_rx ) ; % Indoor p l a c e m e n t
35 while any ( ind )
36 l (1 , il ) . r a n d o m i z e _ r x _ p o s i t i o n s ( sqrt (60^2+25^2) , 1 , 1 , 0 , ind ) ;
37 ind = abs ( l (1 , il ) . rx_position (1 ,:) ) > 60 | abs ( l (1 , il ) . rx_position (2 ,:) ) > 25;
38 end
39 else
40 ind = true ( 1 , no_rx ) ; % UMa / UMi p l a c e m e n t
41 while any ( ind )
42 l (1 , il ) . r a n d o m i z e _ r x _ p o s i t i o n s ( 0.93* isd ( il ) , 1.5 , 1.5 , 0 , ind ) ;
43 ind = sqrt ( l (1 , il ) . rx_position (1 ,:) .^2 + l (1 , il ) . rx_position (2 ,:) .^2) < no_go_dist ( il ) ;
44 end
45 floor = randi (5 ,1 , l (1 , il ) . no_rx ) + 3; % Number of floors in the b u i l d i n g
46 for n = 1 : l (1 , il ) . no_rx
47 floor ( n ) = randi ( floor ( n ) ) ; % Floor level of the UE
48 end
49 l (1 , il ) . rx_position (3 ,:) = 3*( floor -1) + 1.5; % Height in meters
50 end
51 switch il % Set the s c e n a r i o and assign LOS p r o b a b i l i t i e s (80% of the users are indoor )
52 case 1
53 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_38 .901 _UMi ’ ,[] ,[] ,0.8) ;
54 l (1 , il ) . rx_position (3 ,~ indoor_rx ) = 1.5; % Set outdoor - users to 1.5 m height
55 case 2
56 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_38 .901 _UMa ’ ,[] ,[] ,0.8) ;
57 l (1 , il ) . rx_position (3 ,~ indoor_rx ) = 1.5; % Set outdoor - users to 1.5 m height
58 case 3
59 l (1 , il ) . set_scenario ( ’3 GPP_38 .901 _ I n d o o r _ O p e n _ O f f i c e ’) ;
60 end
61 l (1 , il ) . rx_array = qd_arrayant ( ’ omni ’) ; % Omni - Antenna , v e r t i c a l l y p o l a r i z e d
62 end

1 Warning : Multi - frequency simulations are not compatible with the 3 GPP baseline
2 model . Path parameters will be uncorrellated .

Generate channels The following code generates the channel coefficients. However, by default, QuaDRiGa
always uses the full small-scale-fading model as well as spatial consistency. These two features are disabled
by setting the number of paths to 1 and the decorrelation distance for the SSF (SC lambda) to 0 m.

Copyright: Fraunhofer Heinrich Hertz Institute 194


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

1 tic
2 pg_eff = cell ( 1 ,3 ) ;
3 for il = se le c t_ sc en a ri o
4 pg_eff { il } = zeros ( no_rx , l (1 , il ) . no_tx *3 , no_freq ) ;
5 b = l (1 , il ) . init_builder ; % Generate builders
6
7 sic = size ( b ) ;
8 for ib = 1 : numel ( b )
9 [ i1 , i2 ] = qf . qind2sub ( sic , ib ) ;
10 scenpar = b ( i1 , i2 ) . scenpar ; % Read s c e n a r i o p a r a m e t e r s
11 scenpar . NumClusters = 1; % Only LOS path , disable SSF model
12 scenpar . SC_lambda = 0; % Disable spatial c o n s i s t e n c y of SSF
13 b ( i1 , i2 ) . s c en pa r_ n oc he c k = scenpar ; % Save p a r a m e t e r s without check ( faster )
14 end
15
16 b = split_multi_freq ( b ); % Split the b u i l d e r s for m u l t i p l e f r e q u e n c i e s
17 gen_ paramete rs ( b ) ; % G e n e r a t e LSF ( SF ) and SSF ( LOS path only )
18 cm = get_channels ( b ) ; % Generate channels
19 cm = split_tx ( cm , {1 ,2 ,3} ) ; % Split sectors
20 cm = qf . reshapeo ( cm , [ no_rx , l (1 , il ) . no_tx *3 , no_freq ] ) ;
21
22 for ir = 1 : no_rx % Extract e f f e c t i v e PG vor each BS - MT link
23 for it = 1 : l (1 , il ) . no_tx *3
24 for iF = 1 : no_freq
25 pg_eff { il }( ir , it , iF ) = abs ( cm ( ir , it , iF ) . coeff ) .^2;
26 end
27 end
28 end
29 end
30 toc

1 Elapsed time is 1294.425458 seconds .

Coupling Loss The coupling loss is defined as the path gain of a MT to its serving BS, i.e. the strongest BS
seen by the MT. The thick lines were obtained using the QuaDRiGa model, the thin dashed line are taken
from 3GPP R1-165974. They represent the median of all 3GPP calibration results. Results agree well for
UMi and Indoor Open Office. However, there are some significant differences in the UMa calibration curves.
This is probably due to the fact that the original calibration was done using the parameters from 3GPP
38.900 v14.0.0 (2016-06). The parameters for UMa-LOS have changed in 3GPP 38.901 v14.1.0 (2017-06).
1 calib_3GPP_ref_data ; % Load r e f e r e n c e data
2
3 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
4 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
6 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
8 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
9 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 6.6]) % Default Paper Size
10
11 legend_names = { ’6 GHz ’ , ’ 30 GHz ’ , ’ 70 GHz ’ };
12 line_col = { ’b ’ , ’r ’ , ’k ’ }; % Color of the lines
13
14 figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ;
15 for il = se le c t_ sc en a ri o
16 cl = zeros ( no_rx , 3 ) ; % C a l c u l a t e the c o u p l i n g loss from the e f f e c t i v e PG
17 for iF = 1 : no_freq
18 cl (: , iF ) = 10* log10 ( max ( pg_eff { il }(: ,: , iF ) ,[] ,2 ) ) ;
19 end
20 if il == 3
21 figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ;
22 axes ( ’ position ’ ,[0.3 , 0.12 0.44 0.81]) ; hold on ;
23 xm = -105; wx = 70; tx = 0.01; ty = 97;
24 else
25 xm = -210; wx = 150; tx = 0.01; ty = 97;
26 axes ( ’ position ’ ,[0.06+( il -1) *0.48 0.12 0.44 0.81]) ; hold on ;
27 end
28 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
29 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
30 for iF = 1 : no_freq

Copyright: Fraunhofer Heinrich Hertz Institute 195


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

31 iFs = se l ec t_ fe q ue nc y ( iF ) ;
32 ln ( end +1) = plot ( bins , 100* qf . acdf ( cl (: , iF ) , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
33 plot ( cl38900a ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
34 text (( tx +0.12* iF ) * wx + xm , ty , num2str ( median ( cl (: , iF ) ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
35 text (( tx +0.12* iF ) * wx + xm , ty -4 , num2str ( cl38900a ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
36 end
37 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
38 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
39 xlabel ( ’ Coupling loss ( dB ) ’)
40 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
41 title ( l (1 , il ) . name )
42 legend ( ln , legend_names ( s e le ct _f e qu en cy ) , ’ Location ’ , ’ SouthEast ’)
43 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
44 end

UMi UMa
100 100
QD. -111.1 -132.4 -150.6 QD. -120.5 -140.9 -162.2
3GP -112.2 -132.4 -149.1 3GP -120.3 -140.1 -156.6
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 20
6 GHz 6 GHz
10 30 GHz 10 30 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-210 -195 -180 -165 -150 -135 -120 -105 -90 -75 -60 -210 -195 -180 -165 -150 -135 -120 -105 -90 -75 -60
Coupling loss (dB) Coupling loss (dB)

Indoor Open Office


100
QD. -59.6 -73.0 -81.4
3GP -59.3 -73.3 -80.7
90

80

70

60
CDF [%]

50

40

30

20
6 GHz
10 30 GHz
70 GHz
v.2.1.25-0
0
-105 -98 -91 -84 -77 -70 -63 -56 -49 -42 -35
Coupling loss (dB)

Geometry Factor The GF is a lower bound for the actual SINR. It is defined as the power ratio of the
serving BS and the sum power of all interfering BSs. The results in the following Figure agree well with the
3GPP calibrations curves.

Copyright: Fraunhofer Heinrich Hertz Institute 196


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

1 figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ;


2 for il = se le c t_ sc en a ri o
3 gf = zeros ( no_rx , 3 ) ;
4 for iF = 1 : no_freq
5 gf (: , iF ) = 10* log10 ( max ( pg_eff { il }(: ,: , iF ) ,[] ,2 ) ./ ( sum ( pg_eff { il }(: ,: , iF ) ,2 ) -...
6 max ( pg_eff { il }(: ,: , iF ) ,[] ,2 ) ) ) ;
7 end
8 if il == 3
9 figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ;
10 axes ( ’ position ’ ,[0.3 , 0.12 0.44 0.81]) ; hold on ;
11 else
12 axes ( ’ position ’ ,[0.06+( il -1) *0.48 0.12 0.44 0.81]) ; hold on ;
13 end
14 xm = -10; wx = 40; tx = 0.01; ty = 97;
15 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
16 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
17 for iF = 1: no_freq
18 iFs = se l ec t_ fe q ue nc y ( iF ) ;
19 ln ( end +1) = plot ( bins , 100* qf . acdf ( gf (: , iF ) , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
20 plot ( gf38900a ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
21 text (( tx +0.1* iF ) * wx + xm , ty , num2str ( median ( gf (: , iF ) ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
22 text (( tx +0.1* iF ) * wx + xm , ty -4 , num2str ( gf38900a ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
23 end
24 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
25 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
26 xlabel ( ’ Geometry ( dB ) ’)
27 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
28 title ( l (1 , il ) . name )
29 legend ( ln , legend_names ( s e le ct _f e qu en cy ) , ’ Location ’ , ’ SouthEast ’)
30 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
31 end

UMi UMa
100 100
QD. 7.9 8.1 8.9 QD. 7.6 8.0 8.1
3GP 7.3 7.5 7.5 3GP 8.6 8.6 8.5
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 20
6 GHz 6 GHz
10 30 GHz 10 30 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-10 -6 -2 2 6 10 14 18 22 26 30 -10 -6 -2 2 6 10 14 18 22 26 30
Geometry (dB) Geometry (dB)

Copyright: Fraunhofer Heinrich Hertz Institute 197


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

Indoor Open Office


100
QD. 3.5 3.8 3.4
3GP 3.0 3.1 3.1
90

80

70

60

CDF [%]
50

40

30

20
6 GHz
10 30 GHz
70 GHz
v.2.1.25-0
0
-10 -6 -2 2 6 10 14 18 22 26 30
Geometry (dB)

5.4 3GPP 38.901 Full Calibration

This section performs the 3GPP calibration as described in 3GPP TR 38.901 V14.1.0, Section 7.8.2, Page
75 for the full calibration. It is shown how the model is set up to obtain the required results, how the
output is processed and how the results compare with the 3GPP baseline. The 3GPP calibration reference
results were published in the TDOC R1-165975 in August 2016. These results were obtained using model
parameters from 3GPP TR 38.900 v14.0.0 (2016-06). Unfortunately, some parameters were changed in the
year following the the publication of the results and therefore, different calibration results will be obtained
when using the parameters from 38.901 V14.1.0 which are included in QuaDRiGa.

Antenna setup 3GPP uses a nested panel antenna. One panel consists of 16 dual-polarized antenna
elements (+/- 45 degree polarization) with 0.5 lambda element spacing. The panel is duplicated along the
y-axis. In order to reuse the same antenna object for all four frequencies in the simulation, we do not specify
a carrier frequency. In this case the model assumes that the element positions are given in multiples of the
wavelength. The method ”combine pattern” calculates the array response with respect to the phase-center
of the antenna, i.e. the phase in the antenna pattern then includes the element positions in the array. The
effective element positions are set to 0 and the same same antenna can be used for multiple frequencies.
1 close all
2 clear all
3
4 % The mapping f u n c t i o n of antenna e l e m e n t s to CRS port (0 degree panning angle )
5 port_mapping = [ 1 ,0;0 ,1 ; 1 ,0;0 ,1 ;1 ,0;0 ,1 ;1 ,0;0 ,1 ];
6 port_mapping = [ port_mapping , zeros ( 8 ,2 ) ; zeros ( 8 ,2 ) , port_mapping ] / 2;
7
8 % BS antenna c o n f i g u r a t i o n 1 ( UMa and UMi ) , 12 degree d o w n t i l t
9 aBS = qd_arrayant ( ’3 gpp - mmw ’ , 4 , 4 , [] , 6 , 12 , 0.5 , 1 , 2 , 2.5 , 2.5 ) ;
10 aBS . coupling = port_mapping ; % Assign port mapping
11 aBS . co mb i ne _p at t er n ; % C a l c u l a t e array r e s p o n s e
12 aBS . e l e m e n t _ p o s i t i o n (1 ,:) = 0.5; % D i s t a n c e from pole in [ m ]
13
14 % BS antenna c o n f i g u r a t i o n 1 ( Indoor ) , 20 degree d o w n t i l t
15 aBSi = qd_arrayant ( ’3 gpp - mmw ’ , 4 , 4 , [] , 6 , 20 , 0.5 , 1 , 2 , 2.5 , 2.5 ) ;
16 aBSi . coupling = port_mapping ; % Assign port mapping
17 aBSi . co mb i ne _p at t er n ; % C a l c u l a t e array r e s p o n s e
18 aBSi . e l e m e n t _ p o s i t i o n (1 ,:) = 0.2; % D i s t a n c e from pole in [ m ]
19
20 % BS antenna c o n f i g u r a t i o n 2 ( UMa , UMi , Indoor )
21 a2 = qd_arrayant ( ’3 gpp -3 d ’ , 2 , 2 , [] , 1 , [] , 0.5 ) ;
22 a2 . c o mb in e_ p at te rn ; % C a l c u l a t e array r e s p o n s e

Copyright: Fraunhofer Heinrich Hertz Institute 198


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

23 a2 . e l e m e n t _ p os i t i o n (1 ,:) = 0.5; % D i s t a n c e from pole in [ m ]


24
25 append_array ( aBS , a2 ) ; % C o n c a t e n a t e arrays for both c o n f i g u r a t i o n s
26 append_array ( aBSi , a2 ) ;
27
28 aMT = qd_arrayant ( ’ omni ’) ; % MT antenna c o n f i g u r a t i o n
29 aMT . copy_element (1 ,2) ;
30 aMT . Fa (: ,: ,2) = 0;
31 aMT . Fb (: ,: ,2) = 1;

QuaDRiGa Setup Here, the channel model is configured. The simulation assumptions are given in Table
7.8-2 in 3GPP TR 38.901 V14.1.0. 3GPP specifies to perform simulations for UMa, UMi and Indoor at four
frequencies: 6 GHz, 30 GHz, 60 GHz and 70 GHz. Hence, we define three QuaDRIGa layouts. UMa and
UMi use a hexagonal grid with 19 sites and three sectors per site. The scenario parameters for UMa and
UMi are given in Table 7.2-1, page 20. This is implemented in ”qd layout.generate”, using the ”regular”
layout. The indoor scenario layout is specified in Table 7.2-2 and implemented using the ”indoor” layout.
3GPP defines two different approaches for the LOS probability for InH users (page 27). Here we assume
that ”open office” should be used.
1 no_rx = 2000; % Number of MTs ( d i r e c t l y scales the s i m u l a t i o n time )
2 s el ec t _s ce na r io = 1:3; % S c e n a r i o : 1 = UMi , 2 = UMa , 3 = Indoor
3 s el ec t _f eq ue n cy = 1:4; % Freq .: 1 = 6 GHz , 2 = 30 GHz , 3 = 60 GHz , 4 = 70 GHz
4
5 s = qd_simulation_parameters ; % Set general s i m u l a t i o n p a r a m e t e r s
6 s . c en t e r _ f r e q u e n c y = [ 6 e9 , 30 e9 , 60 e9 , 70 e9 ]; % Set center f r e q u e n c i e s for the s i m u l a t i o n s
7 s . c en t e r _ f r e q u e n c y = s . c e n t e r _ f r e q u e n c y ( s el ec t _f eq ue n cy ) ;
8 no_freq = numel ( s . c e n t e r _ f r e q u e nc y ) ;
9
10 s . u s e _ 3 G P P _ b a s e l i n e = 1; % Disable s p h e r i c a l waves
11 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bar
12
13 isd = [ 200 , 500 , 20 ]; % ISD in each layout
14 no_go_dist = [ 10 , 35 , 0 ]; % Min . UE - eNB 2 D d i s t a n c e
15
16 l (1 ,1) = qd_layout . generate ( ’ regular ’ , 19 , isd (1) , aBS ) ;
17 l (1 ,1) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
18 l (1 ,1) . tx_position (3 ,:) = 10; % 10 m BS height
19 l (1 ,1) . name = ’ UMi ’;
20
21 l (1 ,2) = qd_layout . generate ( ’ regular ’ , 19 , isd (2) , aBS ) ;
22 l (1 ,2) . tx_position (3 ,:) = 25; % 12 m BS height
23 l (1 ,2) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
24 l (1 ,2) . name = ’ UMa ’;
25
26 l (1 ,3) = qd_layout . generate ( ’ indoor ’ , [2 ,6] , isd (3) , aBSi , 3 , 30) ;
27 l (1 ,3) . tx_position (3 ,:) = 3; % 3 m BS height
28 l (1 ,3) . simpar = s ; % Set s i m u l a t i o n p a r a m e t e r s
29 l (1 ,3) . name = ’ InH ’;
30
31 for il = se le c t_ sc en a ri o % Drop users in each layout
32 l (1 , il ) . no_rx = no_rx ; % Number of users
33 if il == 3
34 ind = true ( 1 , no_rx ) ; % Indoor p l a c e m e n t
35 while any ( ind )
36 l (1 , il ) . r a n d o m i z e _ r x _ p o s i t i o n s ( sqrt (60^2+25^2) , 1 , 1 , 0 , ind ) ;
37 ind = abs ( l (1 , il ) . rx_position (1 ,:) ) > 60 | abs ( l (1 , il ) . rx_position (2 ,:) ) > 25;
38 end
39 else
40 ind = true ( 1 , no_rx ) ; % UMa / UMi p l a c e m e n t
41 while any ( ind )
42 l (1 , il ) . r a n d o m i z e _ r x _ p o s i t i o n s ( 0.93* isd ( il ) , 1.5 , 1.5 , 0 , ind ) ;
43 ind = sqrt ( l (1 , il ) . rx_position (1 ,:) .^2 + l (1 , il ) . rx_position (2 ,:) .^2) < no_go_dist ( il ) ;
44 end
45 floor = randi (5 ,1 , l (1 , il ) . no_rx ) + 3; % Number of floors in the b u i l d i n g
46 for n = 1 : l (1 , il ) . no_rx
47 floor ( n ) = randi ( floor ( n ) ) ; % Floor level of the UE
48 end
49 l (1 , il ) . rx_position (3 ,:) = 3*( floor -1) + 1.5; % Height in meters
50 end
51 switch il % Set the s c e n a r i o and assign LOS p r o b a b i l i t i e s (80% of the users are indoor )

Copyright: Fraunhofer Heinrich Hertz Institute 199


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

52 case 1
53 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_38 .901 _UMi ’ ,[] ,[] ,0.8) ;
54 l (1 , il ) . rx_position (3 ,~ indoor_rx ) = 1.5; % Set outdoor - users to 1.5 m height
55 case 2
56 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_38 .901 _UMa ’ ,[] ,[] ,0.8) ;
57 l (1 , il ) . rx_position (3 ,~ indoor_rx ) = 1.5; % Set outdoor - users to 1.5 m height
58 case 3
59 l (1 , il ) . set_scenario ( ’3 GPP_38 .901 _ I n d o o r _ O p e n _ O f f i c e ’) ;
60 end
61 l (1 , il ) . rx_array = aMT ; % MT antenna setting
62 end

1 Warning : Multi - frequency simulations are not compatible with the 3 GPP baseline
2 model . Path parameters will be uncorrellated .

Generate channels The following code generates the channel coefficients. The calibration case assumes
that no spatial consistency for the SSF is used. Hence, we deactivate the feature by setting the decorrelation
distance of the SSF parameters ”SC lambda” to 0. The method ”split multi freq” separates the builder
objects so that each builder creates channels for only one frequency. If you call ”split multi freq” before any
LSF and SSF parameters are generated as it is done the the following code, then LSF parameters (e.g. SF,
DS, AS) will be uncorrelated for each frequency. If you call ”gen lsf parameters” before ”split multi freq”,
then all LSF parameters will be fully correlated. However, frequency dependent averages and variances still
apply. If you call ”gen lsf parameters” and ”gen ssf parameters” before ”split multi freq”, then SSF will
also correlated, i.e. the same paths will be seen at each frequency. Correlated SSF for multi-frequency
simulations is an additional feature of the 3GPP model (see Section 7.6.5, pp 57 of TR 38.901 V14.1.0).
1 tic
2 clear c
3 for il = se le c t_ sc en a ri o
4 b = l (1 , il ) . init_builder ; % Generate builders
5
6 sic = size ( b ) ;
7 for ib = 1 : numel ( b )
8 [ i1 , i2 ] = qf . qind2sub ( sic , ib ) ;
9 scenpar = b ( i1 , i2 ) . scenpar ; % Read s c e n a r i o p a r a m e t e r s
10 scenpar . SC_lambda = 0; % Disable spatial c o n s i s t e n c y of SSF
11 b ( i1 , i2 ) . s c en pa r_ n oc he c k = scenpar ; % Save p a r a m e t e r s without check ( faster )
12 end
13
14 b = split_multi_freq ( b ); % Split the b u i l d e r s for m u l t i p l e f r e q u e n c i e s
15 gen_ paramete rs ( b ) ; % G e n e r a t e LSF and SSF p a r a m e t e r s ( u n c o r r e l a t e d )
16 cm = get_channels ( b ) ; % Generate channels
17
18 cs = split_tx ( cm , {1:4 ,9:12 ,17:20} ) ; % Split sectors for Antenna c o n f i g u r a t i o n 1
19 c {1 , il } = qf . reshapeo ( cs , [ no_rx , l (1 , il ) . no_tx *3 , no_freq ] ) ;
20 cs = split_tx ( cm , {5:8 ,13:16 ,21:24} ) ; % Split sectors for Antenna c o n f i g u r a t i o n 2
21 c {2 , il } = qf . reshapeo ( cs , [ no_rx , l (1 , il ) . no_tx *3 , no_freq ] ) ;
22 end
23 toc

1 Elapsed time is 7775.092647 seconds .

Coupling Loss The coupling loss is defined as the path gain of a MT to its serving BS, i.e. the strongest
BS seen by the MT. The thick lines were obtained using the QuaDRiGa model, the thin dashed line are
taken from 3GPP R1-165975. They represent the median of all 3GPP calibration results. Results agree
well for UMi and Indoor Open Office. However, there are some differences in the UMa calibration curves.
This is due to the fact that the 3GPP reference curves were generated using parameters from 3GPP 38.900
v14.0.0 (2016-06). The parameters for UMa-LOS have changed in 3GPP 38.901 v14.1.0 (2017-06).
1 calib_3GPP_ref_data ; % Load r e f e r e n c e data
2
3 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
4 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
6 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type

Copyright: Fraunhofer Heinrich Hertz Institute 200


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

7 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n


8 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
9 set (0 , ’ D e f a u l t F i g u r e P a p e r S i z e ’ ,[14.5 6.6]) % Default Paper Size
10
11 legend_names = { ’6 GHz ’ , ’ 30 GHz ’ , ’ 60 GHz ’ , ’ 70 GHz ’ };
12 line_col = { ’b ’ , ’r ’ , ’m ’ , ’k ’ }; % Color of the lines
13
14 for il = se le c t_ sc en a ri o % Scenario
15 figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ; % New figure
16 pg_eff = []; cl = []; % Clear v a r i a b l e s
17 if il < 3; xm = -210; wx = 150; tx = 0.01; ty = 97; end ; % UMa and UMi
18 if il == 3; xm = -105; wx = 70; tx = 0.01; ty = 97; end ; % InH
19 for ic = 1:2 % Configuration
20 axes ( ’ position ’ ,[0.06+( ic -1) *0.48 0.12 0.44 0.81]) ; hold on ; % New sub - figure
21 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ; % Result text
22 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
23 for iF = 1 : no_freq % Frequency
24 for ir = 1 : no_rx % Receiver
25 for it = 1 : size ( c { ic , il } ,2) % Calc . path gain
26 pg_eff ( it ) = sum ( abs ( c { ic , il }( ir , it , iF ) . coeff (:) ) .^2) / 8;
27 end
28 cl ( ir ) = 10* log10 ( max ( pg_eff ) ) ; % Calc . c o u p l i n g loss
29 end
30 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
31 ln ( end +1) = plot ( bins , 100* qf . acdf ( cl , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
32 plot ( cl38900b ( iFs ,: , il , ic ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
33 text ( tX , ty , num2str ( median ( cl ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
34 text ( tX , ty -4 , num2str ( cl38900b ( iFs ,10 , il , ic ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
35 end
36 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ; % Decorations
37 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
38 xlabel ( ’ Coupling loss ( dB ) ’) ; title ([ l (1 , il ) . name , ’ - Config ’ , num2str ( ic ) ] ) ;
39 if ic ==1; ylabel ( ’ CDF [%] ’) ; end ;
40 legend ( ln , legend_names ( s e le ct _f e qu en cy ) , ’ Location ’ , ’ SouthEast ’) ;
41 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
42 end
43 end

UMi - Config 1 UMi - Config 2


100 100
QD. -105.6 -125.2 -139.3 -143.3 QD. -109.8 -129.5 -144.2 -147.3
3GP -106.2 -125.7 -139.0 -142.7 3GP -109.6 -129.4 -142.5 -145.8
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-210 -195 -180 -165 -150 -135 -120 -105 -90 -75 -60 -210 -195 -180 -165 -150 -135 -120 -105 -90 -75 -60
Coupling loss (dB) Coupling loss (dB)

Copyright: Fraunhofer Heinrich Hertz Institute 201


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

UMa - Config 1 UMa - Config 2


100 100
QD. -117.5 -138.0 -151.7 -156.7 QD. -122.3 -142.9 -156.8 -161.5
3GP -118.0 -137.3 -150.4 -153.8 3GP -122.9 -142.4 -155.6 -159.4
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-210 -195 -180 -165 -150 -135 -120 -105 -90 -75 -60 -210 -195 -180 -165 -150 -135 -120 -105 -90 -75 -60
Coupling loss (dB) Coupling loss (dB)

InH - Config 1 InH - Config 2


100 100
QD. -58.2 -72.5 -78.2 -79.6 QD. -62.6 -77.1 -83.0 -84.3
3GP -58.3 -71.8 -77.8 -79.1 3GP -62.9 -76.9 -82.9 -84.2
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-105 -98 -91 -84 -77 -70 -63 -56 -49 -42 -35 -105 -98 -91 -84 -77 -70 -63 -56 -49 -42 -35
Coupling loss (dB) Coupling loss (dB)

Wide-band SINR The wide-band SINR is essentially the same as the GF. However, the 3GPP model uses
the RSRP values for the calculation of this metric. The calculation method is described in 3GPP TR 36.873
V12.5.0 in Section 8.1 on Page 38. Essentially, the RSRP values describe the average received power (over
all antenna elements at the receiver) for each transmit antenna port. Hence, there are 4 RSRP values, one
for each transmit antenna. The wideband SINR is the GF calculated from the first RSRP value, i.e. the
average power for the first transmit antenna port.
1 for il = se le c t_ sc en a ri o % Scenario
2 figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ;
3 rsrp_p0 = []; cl = [];
4 if il ==1 || il ==2; xm = -10; wx = 40; tx = 0.01; ty = 97; end ;
5 if il ==3; xm = -10; wx = 25; tx = 0.01; ty = 97; end ;
6 for ic = 1 : 2 % Configuration
7 axes ( ’ position ’ ,[0.06+( ic -1) *0.48 0.12 0.44 0.81]) ; hold on ;
8 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
9 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
10 for iF = 1 : no_freq % Frequency
11 for ir = 1 : no_rx % Calc . c o u p l i n g loss
12 for it = 1 : size ( c { ic , il } ,2)
13 tmp = c { ic , il }( ir , it , iF ) . coeff (: ,1 ,:) ; % Coeff . from first Tx ant .

Copyright: Fraunhofer Heinrich Hertz Institute 202


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

14 rsrp_p0 ( it ) = sum ( abs ( tmp (:) ) .^2) / 2; % Divide by 2 Rx ant .


15 end
16 sinr ( ir ) = 10* log10 ( max ( rsrp_p0 ) /( sum ( rsrp_p0 ) - max ( rsrp_p0 ) ) ) ;
17 end
18 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
19 ln ( end +1) = plot ( bins , 100* qf . acdf ( sinr , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
20 plot ( sinr38900 ( iFs ,: , il , ic ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
21 text ( tX , ty , num2str ( median ( sinr ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
22 text ( tX , ty -4 , num2str ( sinr38900 ( iFs ,10 , il , ic ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
23 end
24 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
25 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
26 xlabel ( ’ Wideband SINR ( dB ) ’) ; title ([ l (1 , il ) . name , ’ - Config ’ , num2str ( ic ) ] ) ;
27 if ic ==1; ylabel ( ’ CDF [%] ’) ; end ;
28 legend ( ln , legend_names ( s e le ct _f e qu en cy ) , ’ Location ’ , ’ SouthEast ’) ;
29 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
30 end
31 end

UMi - Config 1 UMi - Config 2


100 100
QD. 3.9 4.9 4.9 5.2 QD. 3.0 3.6 3.6 3.7
3GP 3.5 3.6 3.7 3.8 3GP 2.5 2.6 2.7 2.7
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-10 -6 -2 2 6 10 14 18 22 26 30 -10 -6 -2 2 6 10 14 18 22 26 30
Wideband SINR (dB) Wideband SINR (dB)

UMa - Config 1 UMa - Config 2


100 100
QD. 3.7 3.4 3.9 3.4 QD. 2.7 2.3 2.7 2.5
3GP 4.4 4.3 4.4 4.2 3GP 2.9 2.9 3.0 2.9
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-10 -6 -2 2 6 10 14 18 22 26 30 -10 -6 -2 2 6 10 14 18 22 26 30
Wideband SINR (dB) Wideband SINR (dB)

Copyright: Fraunhofer Heinrich Hertz Institute 203


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

InH - Config 1 InH - Config 2


100 100
QD. 1.2 0.5 0.8 0.5 QD. -0.8 -1.4 -1.3 -1.5
3GP 1.4 0.9 0.9 0.8 3GP -1.1 -1.5 -1.5 -1.4
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-10 -7.5 -5 -2.5 0 2.5 5 7.5 10 12.5 15 -10 -7.5 -5 -2.5 0 2.5 5 7.5 10 12.5 15
Wideband SINR (dB) Wideband SINR (dB)

Delay Spread The following plots show the delay spread without antenna patterns for the serving BS,
i.e. only the multi-path components are generated by the SSF model, but the paths are not weights by the
antenna patterns. For the UMi and UMa scenarios, 80% of the users are indoors. Hence, the results are
dominated by the O2I parameters, which are not frequency dependent and are identical for LOS or NLOS
propagation of the outdoor link. The green curve therefore shows the O2I distributions of the DS. One can
see that the results for UMi and UMa are very similar.
1 legend_ref = { ’ O2I only ’ , ’ O2I only ’ , ’ InH LOS ’ };
2
3 ref_O2I = 10.^( randn (1 ,10000) *0.32 -6.62 ) *1 e9 ;
4 mu = ( -7.692 -0.01 * log10 (1+ s . center_frequency ’/1 e9 ) ) ;
5 ref_InH = 10.^( 0.18* randn ( no_freq ,10000) + mu * ones (1 ,10000) ) *1 e9 ;
6 for il = se le c t_ sc en a ri o % Scenario
7 pg_eff = []; ds = []; ds_tmp = [];
8 if il == 1 || il == 3; figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ; end ; tx = 0.41; ty = 47;
9 if il == 1; axes ( ’ position ’ ,[0.06 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 1000; end ;
10 if il == 2; axes ( ’ position ’ ,[0.54 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 1000; end ;
11 if il == 3; axes ( ’ position ’ ,[0.30 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 80; end ;
12 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
13 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
14 for iF = 1 : no_freq % Frequency
15 for ir = 1 : no_rx % Calc . c o u p l i n g loss
16 for it = 1 : size ( c {1 , il } ,2)
17 pg_eff ( it ) = sum ( abs ( c {1 , il }( ir , it , iF ) . coeff (:) ) .^2) / 8;
18 ds_tmp ( it ) = c {1 , il }( ir , it , iF ) . par . ds_cb ;
19 end
20 [~ , ii ] = max ( pg_eff ) ; ds ( ir ) = ds_tmp ( ii ) *1 e9 ;
21 end
22 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
23 ln ( end +1) = plot ( bins , 100* qf . acdf ( ds , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
24 plot ( ds38900 ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
25 text ( tX , ty , num2str ( median ( ds ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
26 text ( tX , ty -4 , num2str ( ds38900 ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
27 if il ==3; plot ( bins ,100* qf . acdf ( ref_InH ( iF ,:) , bins ) , ’ -. ’ , ’ Color ’ , line_col { iFs }) ; end ;
28 end
29 if il <3; ln ( end +1) = plot ( bins ,100* qf . acdf ( ref_O2I , bins ) , ’ -. ’ , ’ Color ’ ,[0 .5 0] , ’ Linewidth ’ ,2) ; end ;
30 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
31 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
32 xlabel ( ’ Delay Spread ( nsec ) ’) ; title ([ l (1 , il ) . name ] ) ;
33 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
34 legend ( ln ,{ legend_names { se le c t_ fe qu e nc y } , legend_ref { il }} , ’ Location ’ , ’ SouthEast ’) ;
35 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
36 end

1 Warning : Ignoring extra legend entries .

Copyright: Fraunhofer Heinrich Hertz Institute 204


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

UMi UMa
100 100

90 90

80 80

70 70

60 60
CDF [%]

50 50
QD. 176.4 142.0 151.3 156.9 QD. 182.2 179.1 162.6 163.7
3GP 196.6 195.0 193.8 196.1 3GP 230.9 224.1 219.9 220.6
40 40

30 30
6 GHz 6 GHz
20 30 GHz 20 30 GHz
60 GHz 60 GHz
10 70 GHz 10 70 GHz
O2I only O2I only
v.2.1.25-0 v.2.1.25-0
0 0
0 100 200 300 400 500 600 700 800 900 1000 0 100 200 300 400 500 600 700 800 900 1000
Delay Spread (nsec) Delay Spread (nsec)

InH
100

90

80

70

60
CDF [%]

50
QD. 9.6 10.8 9.3 9.3
3GP 15.8 16.0 15.6 15.3
40

30

20 6 GHz
30 GHz
10 60 GHz
70 GHz
v.2.1.25-0
0
0 8 16 24 32 40 48 56 64 72 80
Delay Spread (nsec)

For the InH case, parameters changed in TR 38.901. The original parameterization in 3GPP TR 38.900
V14.0.0 included some significant dependence of the STD of the DS on the carrier frequency. This was
removed in TR 38.901. In addition, due to the open office LOS probabilities and the UE attachment to the
strongest BS, there are 98% of the users in LOS conditions. Hence, the results heavily depend on the LOS
DS, which is shown for the four frequencies are dashed-dotted thin lines. One can observe, that the DS
values for the serving BS are always smaller compared to the expected values from the LOS distributions.
This comes from the negative correlation of the DS with the SF (-0.8 for InH-LOS). If the link has a high
SF, it also has a low DS. However, if the SF is high, the BS gets selected for the UE attachment. As a
result, DS values for the serving BS are always smaller compared to the average LOS-DS from all BS.

Azimuth Angle Spread of Departure The next plot shows the ASD. The same assumptions as for the DS
apply, i.e. no antenna patterns, UE attachment to the strongest BS, O2I-dominance for UMa and UMi and
LOS dominance for InH. Results agree well for UMa and UMi.
1 ref_O2I = 10.^( randn (1 ,10000) *0.42 +1.25 ) ;
2 ref_InH = 10.^( randn (1 ,10000) *0.18 +1.60 ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 205


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

3 for il = se le c t_ sc en a ri o % Scenario
4 pg_eff = []; asd = []; asd_tmp = [];
5 if il == 1 || il == 3; figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ; end ; tx = 0.01; ty = 97;
6 if il == 1; axes ( ’ position ’ ,[0.06 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 80; end ;
7 if il == 2; axes ( ’ position ’ ,[0.54 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 80; end ;
8 if il == 3; axes ( ’ position ’ ,[0.30 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 80; end ;
9 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
10 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
11 for iF = 1 : no_freq % Frequency
12 for ir = 1 : no_rx % Calc . c o u p l i n g loss
13 for it = 1 : size ( c {1 , il } ,2)
14 pg_eff ( it ) = sum ( abs ( c {1 , il }( ir , it , iF ) . coeff (:) ) .^2) / 8;
15 asd_tmp ( it ) = c {1 , il }( ir , it , iF ) . par . asD_cb ;
16 end
17 [~ , ii ] = max ( pg_eff ) ; asd ( ir ) = asd_tmp ( ii ) ;
18 end
19 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
20 ln ( end +1) = plot ( bins , 100* qf . acdf ( asd , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
21 plot ( asd38900 ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
22 text ( tX , ty , num2str ( median ( asd ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
23 text ( tX , ty -4 , num2str ( asd38900 ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
24 end
25 if il <3; ln ( end +1) = plot ( bins ,100* qf . acdf ( ref_O2I , bins ) , ’ -. ’ , ’ Color ’ ,[0 .5 0] , ’ Linewidth ’ ,2) ; end ;
26 if il ==3; ln ( end +1) = plot ( bins ,100* qf . acdf ( ref_InH , bins ) , ’ -. ’ , ’ Color ’ ,[0 .5 0] , ’ Linewidth ’ ,2) ; end ;
27 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
28 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
29 xlabel ( ’ ASD ( degrees ) ’) ; title ([ l (1 , il ) . name ] ) ;
30 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
31 legend ( ln ,{ legend_names { se le c t_ fe qu e nc y } , legend_ref { il }} , ’ Location ’ , ’ SouthEast ’) ;
32 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
33 end

UMi UMa
100 100
QD. 18.9 17.4 19.3 18.7 QD. 19.7 19.8 19.5 18.9
3GP 19.7 19.2 18.8 18.8 3GP 20.2 20.2 20.0 19.9
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30
6 GHz 6 GHz
20 30 GHz 20 30 GHz
60 GHz 60 GHz
10 70 GHz 10 70 GHz
O2I only O2I only
v.2.1.25-0 v.2.1.25-0
0 0
0 8 16 24 32 40 48 56 64 72 80 0 8 16 24 32 40 48 56 64 72 80
ASD (degrees) ASD (degrees)

Copyright: Fraunhofer Heinrich Hertz Institute 206


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

InH
100
QD. 30.2 32.9 30.5 32.3
3GP 35.3 35.8 36.1 36.0
90

80

70

60

CDF [%]
50

40

30
6 GHz
20 30 GHz
60 GHz
10 70 GHz
InH LOS
v.2.1.25-0
0
0 8 16 24 32 40 48 56 64 72 80
ASD (degrees)

For the InH results, the green curve shows the expected results when only taking the parameters for the
LOS-ASD into account. One can see that the results obtained from the model are much lower. This can
have two reasons. First, the ASD is negatively correlated with the SF (-0.4). Hence, BSs with a high SF are
more likely to become the serving BSs which leads to decreased ASD values for the serving link. Second,
the maximum achievable angular spread depends on the KF. The average KF in the indoor LOS scenario
is 7 dB. In this case, the maximal achievable azimuth spread is around 50 degree. However, the positive
correlation between SF and KF (+0.5) leads to increased KF values for the serving link. As a result, the
median ASD for the serving link gets reduced to roughly 30 degree compared to the 40 degree that would
be expected from the InH-LOS parameters.

Elevation / Zenith Angle Spread of Departure The next plot shows the ESD / ZSD. The same as-
sumptions as for the DS and ASD apply, i.e. no antenna patterns, UE attachment to the strongest BS,
O2I-dominance for UMa and UMi and LOS dominance for InH. Results agree well for UMi and UMa as well
as for the higher Frequencies for InH.
1 mu = (2.228 - 1.43 * log10 (1+ s . center_frequency ’/1 e9 ) ) ;
2 sig = (0.3 + 0.13 * log10 (1+ s . center_frequency ’/1 e9 ) ) ;
3 ref_InH = 10.^( sig * randn (1 ,10000) + mu * ones (1 ,10000) ) ;
4 for il = se le c t_ sc en a ri o % Scenario
5 pg_eff = []; esd = []; esd_tmp = [];
6 if il == 1 || il == 3; figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ; end ; tx = 0.41; ty = 37;
7 if il == 1; axes ( ’ position ’ ,[0.06 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 6; end ;
8 if il == 2; axes ( ’ position ’ ,[0.54 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 15; end ;
9 if il == 3; axes ( ’ position ’ ,[0.30 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 30; end ;
10 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
11 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
12 for iF = 1 : no_freq % Frequency
13 for ir = 1 : no_rx % Calc . c o u p l i n g loss
14 for it = 1 : size ( c {1 , il } ,2)
15 pg_eff ( it ) = sum ( abs ( c {1 , il }( ir , it , iF ) . coeff (:) ) .^2) / 8;
16 esd_tmp ( it ) = c {1 , il }( ir , it , iF ) . par . esD_cb ;
17 end
18 [~ , ii ] = max ( pg_eff ) ; esd ( ir ) = esd_tmp ( ii ) ;
19 end
20 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
21 ln ( end +1) = plot ( bins , 100* qf . acdf ( esd , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
22 plot ( zsd38900 ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
23 text ( tX , ty , num2str ( median ( esd ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
24 text ( tX , ty -4 , num2str ( zsd38900 ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
25 if il ==3; plot ( bins ,100* qf . acdf ( ref_InH ( iF ,:) , bins ) , ’ -. ’ , ’ Color ’ , line_col { iFs }) ; end ;
26 end
27 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;

Copyright: Fraunhofer Heinrich Hertz Institute 207


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

28 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;


29 xlabel ( ’ ZSD ( degrees ) ’) ; title ([ l (1 , il ) . name ] ) ;
30 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
31 legend ( ln , legend_names ( s e le ct _f e qu en cy ) , ’ Location ’ , ’ SouthEast ’) ;
32 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
33 end

UMi UMa
100 100

90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40
QD. 0.7 0.8 0.8 0.7 QD. 1.7 1.7 1.5 1.3
3GP 0.9 0.9 0.9 0.9 3GP 1.9 1.9 1.9 1.9
30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
0 0.6 1.2 1.8 2.4 3 3.6 4.2 4.8 5.4 6 0 1.5 3 4.5 6 7.5 9 10.5 12 13.5 15
ZSD (degrees) ZSD (degrees)

InH
100

90

80

70

60
CDF [%]

50

40
QD. 9.4 1.6 0.8 0.7
3GP 11.2 1.5 0.6 0.5
30

20 6 GHz
30 GHz
10 60 GHz
70 GHz
v.2.1.25-0
0
0 3 6 9 12 15 18 21 24 27 30
ZSD (degrees)

InH at 6 GHz shows some differences for the same reason, the ASD was smaller then expected. The ZSD at
lower frequencies can have values above 30 degrees. However, with a KF of 7 dB, the maximum achievable
ZSD is around 30 degree. Due to the correlation between SF and KF, the serving link gets even higher KF
values and, as a consequence, lower angular spreads.

Azimuth Angle Spread of Arrival The next plot shows the ASA. The same assumptions as for the DS
apply, i.e. no antenna patterns, UE attachment to the strongest BS, O2I-dominance for UMa and UMi and
LOS dominance for InH. Results agree well for UMa and UMi. For InH, the ASA parameters changed from
TR 38.900 to 38.901. Hence, different results are obtained at the output of the model compared to the

Copyright: Fraunhofer Heinrich Hertz Institute 208


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

3GPP calibration reference. At 6 GHz, where the largest ASAs are achieved for InH-LOS, the upper limit
for the angle spread is reached due to the correlations of ASA vs. SF (-0.5) and SF vs. KF (+0.5).
1 ref_O2I = 10.^( randn (1 ,10000) *0.16 +1.76 ) ;
2 mu = (1.781 - 0.19 * log10 (1+ s . center_frequency ’/1 e9 ) ) ;
3 sig = (0.119 + 0.12 * log10 (1+ s . center_frequency ’/1 e9 ) ) ;
4 ref_InH = 10.^( sig * randn (1 ,10000) + mu * ones (1 ,10000) ) ;
5 for il = se le c t_ sc en a ri o % Scenario
6 pg_eff = []; asa = []; asa_tmp = [];
7 if il == 1 || il == 3; figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ; end ; tx = 0.01; ty = 97;
8 if il == 1; axes ( ’ position ’ ,[0.06 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 100; end ;
9 if il == 2; axes ( ’ position ’ ,[0.54 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 100; end ;
10 if il == 3; axes ( ’ position ’ ,[0.30 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 80; end ;
11 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
12 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
13 for iF = 1 : no_freq % Frequency
14 for ir = 1 : no_rx % Calc . c o u p l i n g loss
15 for it = 1 : size ( c {1 , il } ,2)
16 pg_eff ( it ) = sum ( abs ( c {1 , il }( ir , it , iF ) . coeff (:) ) .^2) / 8;
17 asa_tmp ( it ) = c {1 , il }( ir , it , iF ) . par . asA_parset ;
18 end
19 [~ , ii ] = max ( pg_eff ) ; asa ( ir ) = asa_tmp ( ii ) ;
20 end
21 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
22 ln ( end +1) = plot ( bins , 100* qf . acdf ( asa , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
23 plot ( asa38900 ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
24 text ( tX , ty , num2str ( median ( asa ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
25 text ( tX , ty -4 , num2str ( asa38900 ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
26 if il ==3; plot ( bins ,100* qf . acdf ( ref_InH ( iF ,:) , bins ) , ’ -. ’ , ’ Color ’ , line_col { iFs }) ; end ;
27 end
28 if il <3; ln ( end +1) = plot ( bins ,100* qf . acdf ( ref_O2I , bins ) , ’ -. ’ , ’ Color ’ ,[0 .5 0] , ’ Linewidth ’ ,2) ; end ;
29 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
30 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
31 xlabel ( ’ ASA ( degrees ) ’) ; title ([ l (1 , il ) . name ] ) ;
32 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
33 legend ( ln ,{ legend_names { se le c t_ fe qu e nc y } , legend_ref { il }} , ’ Location ’ , ’ SouthEast ’) ;
34 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
35 end

1 Warning : Ignoring extra legend entries .

UMi UMa
100 100
QD. 56.3 54.3 55.9 54.0 QD. 60.9 55.9 55.8 54.9
3GP 60.3 60.4 59.8 59.8 3GP 62.8 60.2 58.9 57.6
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30
6 GHz 6 GHz
20 30 GHz 20 30 GHz
60 GHz 60 GHz
10 70 GHz 10 70 GHz
O2I only O2I only
v.2.1.25-0 v.2.1.25-0
0 0
0 10 20 30 40 50 60 70 80 90 100 0 10 20 30 40 50 60 70 80 90 100
ASA (degrees) ASA (degrees)

Copyright: Fraunhofer Heinrich Hertz Institute 209


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

InH
100
QD. 33.4 26.1 24.4 22.7
3GP 46.2 35.4 31.7 30.3
90

80

70

60

CDF [%]
50

40

30

20 6 GHz
30 GHz
10 60 GHz
70 GHz
v.2.1.25-0
0
0 8 16 24 32 40 48 56 64 72 80
ASA (degrees)

Elevation / Zenith Angle Spread of Arrival The next plot shows the ESD / ZSD results. Again, UMi and
UMa results agree well since mostly, O2I parameters apply (green curve). For InH, the 3GPP parameters
changed from TR 38.900 to 38.901. Hence, different results are obtained at the output of the model compared
to the 3GPP calibration reference.
1 ref_O2I = 10.^( randn (1 ,10000) *0.43 +1.01 ) ;
2 mu = (1.44 - 0.26 * log10 (1+ s . center_frequency ’/1 e9 ) ) ;
3 sig = (0.264 - 0.04 * log10 (1+ s . center_frequency ’/1 e9 ) ) ;
4 ref_InH = 10.^( sig * randn (1 ,10000) + mu * ones (1 ,10000) ) ;
5 for il = se le c t_ sc en a ri o % Scenario
6 pg_eff = []; esa = []; esa_tmp = [];
7 if il == 1 || il == 3; figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ; end ; tx = 0.01; ty = 97;
8 if il == 1; axes ( ’ position ’ ,[0.06 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 50; end ;
9 if il == 2; axes ( ’ position ’ ,[0.54 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 50; end ;
10 if il == 3; axes ( ’ position ’ ,[0.30 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 25; end ;
11 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
12 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
13 for iF = 1 : no_freq % Frequency
14 for ir = 1 : no_rx % Calc . c o u p l i n g loss
15 for it = 1 : size ( c {1 , il } ,2)
16 pg_eff ( it ) = sum ( abs ( c {1 , il }( ir , it , iF ) . coeff (:) ) .^2) / 8;
17 esa_tmp ( it ) = c {1 , il }( ir , it , iF ) . par . esA_cb ;
18 end
19 [~ , ii ] = max ( pg_eff ) ; esa ( ir ) = esa_tmp ( ii ) ;
20 end
21 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
22 ln ( end +1) = plot ( bins , 100* qf . acdf ( esa , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
23 plot ( zsa38900 ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
24 text ( tX , ty , num2str ( median ( esa ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
25 text ( tX , ty -4 , num2str ( zsa38900 ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
26 if il ==3; plot ( bins ,100* qf . acdf ( ref_InH ( iF ,:) , bins ) , ’ -. ’ , ’ Color ’ , line_col { iFs }) ; end ;
27 end
28 if il <3; ln ( end +1) = plot ( bins ,100* qf . acdf ( ref_O2I , bins ) , ’ -. ’ , ’ Color ’ ,[0 .5 0] , ’ Linewidth ’ ,2) ; end ;
29 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
30 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
31 xlabel ( ’ ZSA ( degrees ) ’) ; title ([ l (1 , il ) . name ] ) ;
32 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
33 legend ( ln ,{ legend_names { se le c t_ fe qu e nc y } , legend_ref { il }} , ’ Location ’ , ’ SouthEast ’) ;
34 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
35 end

1 Warning : Ignoring extra legend entries .

Copyright: Fraunhofer Heinrich Hertz Institute 210


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

UMi UMa
100 100
QD. 8.0 8.9 8.9 7.9 QD. 11.1 9.4 9.5 8.9
3GP 11.1 10.8 10.7 10.7 3GP 12.9 12.0 11.6 11.5
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30
6 GHz 6 GHz
20 30 GHz 20 30 GHz
60 GHz 60 GHz
10 70 GHz 10 70 GHz
O2I only O2I only
v.2.1.25-0 v.2.1.25-0
0 0
0 5 10 15 20 25 30 35 40 45 50 0 5 10 15 20 25 30 35 40 45 50
ZSA (degrees) ZSA (degrees)

InH
100
QD. 13.5 10.9 9.9 9.3
3GP 11.8 8.1 6.7 6.4
90

80

70

60
CDF [%]

50

40

30

20 6 GHz
30 GHz
10 60 GHz
70 GHz
v.2.1.25-0
0
0 2.5 5 7.5 10 12.5 15 17.5 20 22.5 25
ZSA (degrees)

First Singular Value (Configuration 2) The singular values of a MIMO channel matrix describe how many
parallel spatial data streams can be transmitted to one user and what the individual capacity of each streams
is. The antenna configuration results in a 2x4 MIMO channel. Hence, the channel has two singular values
and supports at most two streams. The singular values are calculated as follows:

• The results are reported for the channel matrix of the serving BS.
• The calculations are done in the frequency domain. The bandwidth is set to 20 MHz (at 6 GHz) or
100 MHz (above 6 GHz), which is further split into 50 resource blocks (RBs).
• The singular values are reported for channels without path-gain, but with antenna patterns included.
• The singular values are calculated for each RB by an Eigenvalue decomposition of the receive covariance
matrix as
n
!
RB
1 X
H
s1,2 = · eig Hn Hn
nRB
n=1

• Results are presented in logarithmic scale, i.e. as 10 · log10 (s1,2 ).

Copyright: Fraunhofer Heinrich Hertz Institute 211


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

Results for the first singular value agree perfectly for UMi and UMa. Only minor differences can be seen
for InH.
1 clear sv % C a l c u l a t e s i n g u l a r values
2 BW = [20 ,100 ,100 ,100]*1 e6 ; % B a n d w i d t h for each
3 for il = se le c t_ sc en a ri o
4 sv { il } = zeros ( 2 ,50 , no_rx ,4 ) ;
5 pg_eff = [];
6 for iF = 1 : no_freq
7 for ir = 1 : no_rx
8 for it = 1 : size ( c {2 , il } ,2)
9 pg_eff ( it ) = sum ( abs ( c {2 , il }( ir , it , iF ) . coeff (:) ) .^2) / 8;
10 end
11 [~ , it ] = max ( pg_eff ) ; % Select serving BS
12 H = c {2 , il }( ir , it , iF ) . fr ( BW ( iF ) , 50 ) ;
13 pg = c {2 , il }( ir , it , iF ) . par . pg_parset ;
14 H = H ./ sqrt (10.^(0.1* pg ) ) ; % N o r m a l i z e channel matrix
15 for m = 1: size (H ,3)
16 sv { il }(: , m , ir , iF ) = svd ( H (: ,: , m ) ) .^2;
17 end % NOTE : eig ( H (: ,: , m ) * H (: ,: , m ) ’ ) == svd ( H (: ,: , m ) ) .^2
18 end
19 end
20 end
21
22 for il = se le c t_ sc en a ri o % Scenario
23 pg_eff = []; esa = []; esa_tmp = [];
24 if il == 1 || il == 3; figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ; end ; tx = 0.01; ty = 97;
25 if il == 1; axes ( ’ position ’ ,[0.06 0.12 0.44 0.81]) ; hold on ; xm = -10; wx = 30; end ;
26 if il == 2; axes ( ’ position ’ ,[0.54 0.12 0.44 0.81]) ; hold on ; xm = -10; wx = 30; end ;
27 if il == 3; axes ( ’ position ’ ,[0.30 0.12 0.44 0.81]) ; hold on ; xm = -10; wx = 30; end ;
28 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
29 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
30 for iF = 1 : no_freq % Frequency
31 sv_max = 10* log10 ( reshape ( sv { il }(1 ,: ,: , iF ) ,[] ,1) ) ;
32 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
33 ln ( end +1) = plot ( bins , 100* qf . acdf ( sv_max , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
34 plot ( sv1_38900 ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
35 text ( tX , ty , num2str ( median ( sv_max ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
36 text ( tX , ty -4 , num2str ( sv1_38900 ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
37 end
38 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
39 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
40 xlabel ( ’ 10 log10 ( 1 st singular value ) ’) ; title ([ l (1 , il ) . name ] ) ;
41 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
42 legend ( ln , legend_names ( s e le ct _f e qu en cy ) , ’ Location ’ , ’ SouthEast ’) ;
43 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
44 end

UMi UMa
100 100
QD. 10.6 10.7 10.7 10.7 QD. 10.3 10.3 10.4 10.5
3GP 10.6 10.6 10.6 10.6 3GP 10.5 10.4 10.4 10.4
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-10 -7 -4 -1 2 5 8 11 14 17 20 -10 -7 -4 -1 2 5 8 11 14 17 20
10log10( 1st singular value ) 10log10( 1st singular value )

Copyright: Fraunhofer Heinrich Hertz Institute 212


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

InH
100
QD. 11.0 11.1 11.4 11.2
3GP 10.4 10.5 10.4 10.5
90

80

70

60

CDF [%]
50

40

30

20 6 GHz
30 GHz
10 60 GHz
70 GHz
v.2.1.25-0
0
-10 -7 -4 -1 2 5 8 11 14 17 20
10log10( 1st singular value )

Second Singular Value (Configuration 2) Results are slightly larger for UMi and UMa indicating a slightly
higher channel capacity as reported by the average 3GPP results. However, the results presented here are
still well within the range of the results reported by different partners in R1-165975. For InH, the larger
differences are probably due to the changed parameterization TR 38.901.
1 for il = se le c t_ sc en a ri o % Scenario
2 pg_eff = []; esa = []; esa_tmp = [];
3 if il == 1 || il == 3; figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ; end ; tx = 0.01; ty = 97;
4 if il == 1; axes ( ’ position ’ ,[0.06 0.12 0.44 0.81]) ; hold on ; xm = -30; wx = 40; end ;
5 if il == 2; axes ( ’ position ’ ,[0.54 0.12 0.44 0.81]) ; hold on ; xm = -30; wx = 40; end ;
6 if il == 3; axes ( ’ position ’ ,[0.30 0.12 0.44 0.81]) ; hold on ; xm = -50; wx = 50; end ;
7 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
8 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
9 for iF = 1 : no_freq % Frequency
10 sv_min = 10* log10 ( reshape ( sv { il }(2 ,: ,: , iF ) ,[] ,1) ) ;
11 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
12 ln ( end +1) = plot ( bins , 100* qf . acdf ( sv_min , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
13 plot ( sv2_38900 ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
14 text ( tX , ty , num2str ( median ( sv_min ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
15 text ( tX , ty -4 , num2str ( sv2_38900 ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
16 end
17 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
18 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
19 xlabel ( ’ 10 log10 ( 2 nd singular value ) ’) ; title ([ l (1 , il ) . name ] ) ;
20 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
21 legend ( ln , legend_names ( s e le ct _f e qu en cy ) , ’ Location ’ , ’ SouthEast ’) ;
22 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
23 end

Copyright: Fraunhofer Heinrich Hertz Institute 213


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

UMi UMa
100 100
QD. -4.3 -4.4 -4.3 -4.2 QD. -3.9 -3.8 -3.9 -4.0
3GP -6.4 -6.2 -6.3 -6.2 3GP -5.5 -5.2 -5.3 -5.3
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
-30 -26 -22 -18 -14 -10 -6 -2 2 6 10 -30 -26 -22 -18 -14 -10 -6 -2 2 6 10
10log10( 2nd singular value ) 10log10( 2nd singular value )

InH
100
QD. -17.0 -16.2 -17.3 -17.3
3GP -19.3 -20.3 -21.1 -21.1
90

80

70

60
CDF [%]

50

40

30

20 6 GHz
30 GHz
10 60 GHz
70 GHz
v.2.1.25-0
0
-50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0
10log10( 2nd singular value )

Ratio of Singular Values (Configuration 2) Probably a more important measure than the singular values
themselves is the ratio between the singular values, which is calculated as
 
s1
SR = 10 · log10
s2
q
This measure is closely linked to the condition number of the channel matrix C = ss12 . The larger this
number is, the more difficult it is to invert the matrix H. However, inverting this matrix is required in order
to separate the two data streams at the receiver. Due to the larger second SV our results are better (lower
values are better) that the 3GPP baseline for UMa and UMi. The InH cannot be discussed properly due to
the changed parameterization TR 38.901.
1 for il = se le c t_ sc en a ri o % Scenario
2 pg_eff = []; esa = []; esa_tmp = [];
3 if il == 1 || il == 3; figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ; end ; tx = 0.01; ty = 97;
4 if il == 1; axes ( ’ position ’ ,[0.06 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 40; end ;
5 if il == 2; axes ( ’ position ’ ,[0.54 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 40; end ;
6 if il == 3; axes ( ’ position ’ ,[0.30 0.12 0.44 0.81]) ; hold on ; xm = 0; wx = 60; end ;

Copyright: Fraunhofer Heinrich Hertz Institute 214


eMail: [email protected]
QuaDRiGa v2.2.0 5 MODEL CALIBRATION

7 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;
8 ln = []; bins = ( -0.1:0.005:1.1) * wx + xm ;
9 for iF = 1 : no_freq % Frequency
10 sv_rat = 10* log10 ( reshape ( sv { il }(1 ,: ,: , iF ) ./ sv { il }(2 ,: ,: , iF ) ,[] ,1) ) ;
11 iFs = se l ec t_ fe q ue nc y ( iF ) ; tX = ( tx +0.12* iF ) * wx + xm ;
12 ln ( end +1) = plot ( bins , 100* qf . acdf ( sv_rat , bins ) ,[ ’ - ’ , line_col { iFs }] , ’ Linewidth ’ ,2) ;
13 plot ( svR_38900 ( iFs ,: , il ) , 5:5:95 ,[ ’+ - - ’ , line_col { iFs }] , ’ Linewidth ’ ,1 )
14 text ( tX , ty , num2str ( median ( sv_rat ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
15 text ( tX , ty -4 , num2str ( svR_38900 ( iFs ,10 , il ) , ’ %1.1 f ’) , ’ Color ’ , line_col { iFs }) ;
16 end
17 hold off ; grid on ; box on ; set ( gca , ’ YTick ’ ,0:10:100) ;
18 set ( gca , ’ XTick ’ , xm : wx /10 : xm + wx ) ; axis ([ xm xm + wx 0 100]) ;
19 xlabel ( ’ 10 log10 ( ratio singular values ) ’) ; title ([ l (1 , il ) . name ] ) ;
20 if il ==1 || il ==3; ylabel ( ’ CDF [%] ’) ; end ;
21 legend ( ln , legend_names ( s e le ct _f e qu en cy ) , ’ Location ’ , ’ SouthEast ’) ;
22 text ( 0.01* wx + xm , 3 , [ ’v . ’ , q d _ s i m u l a t i o n _ p a r a m e t e r s . version ] ) ;
23 end

UMi UMa
100 100
QD. 14.8 15.0 14.9 14.9 QD. 14.1 14.0 14.3 14.4
3GP 16.8 16.6 16.7 16.7 3GP 15.8 15.6 15.6 15.6
90 90

80 80

70 70

60 60
CDF [%]

50 50

40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
70 GHz 70 GHz
v.2.1.25-0 v.2.1.25-0
0 0
0 4 8 12 16 20 24 28 32 36 40 0 4 8 12 16 20 24 28 32 36 40
10log10( ratio singular values ) 10log10( ratio singular values )

InH
100
QD. 27.6 26.7 28.2 28.0
3GP 29.3 30.4 31.1 31.2
90

80

70

60
CDF [%]

50

40

30

20 6 GHz
30 GHz
10 60 GHz
70 GHz
v.2.1.25-0
0
0 6 12 18 24 30 36 42 48 54 60
10log10( ratio singular values )

Copyright: Fraunhofer Heinrich Hertz Institute 215


eMail: [email protected]

You might also like