Quadriga Documentation v2.6.1-0

Download as pdf or txt
Download as pdf or txt
You are on page 1of 260
At a glance
Powered by AI
QuaDRiGa is a 3D multi-cell channel model that enables the time evolution of radio channels for virtual field trials. It was developed by the Fraunhofer Heinrich Hertz Institute and supports both stationary and non-stationary reception conditions.

QuaDRiGa is used to generate realistic radio channel impulse responses for various scenarios including urban, rural, indoor and satellite channels. It can be used to simulate MIMO channels and performs virtual channel sounding.

Funding sources that supported QuaDRiGa included the European Space Agency (ESA), the German Federal Ministry of Economics and Technology, the European Commission under FP7 and Horizon 2020, the GreenTouch consortium, Celtic-Plus and several national collaborative projects in Germany.

Quasi Deterministic Radio Channel Generator

User Manual and Documentation

Document Revision: v2.6.1


July 12, 2021

Fraunhofer Heinrich Hertz Institute


Wireless Communications and Networks
Einsteinufer 37, 10587 Berlin, Germany
e-mail: quadriga@hhi.fraunhofer.de
http://www.quadriga-channel-model.de
https://github.com/fraunhoferhhi/QuaDRiGa
QuaDRiGa v2.6.1

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

• 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”

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

• the Celtic-Plus funded project REICOVAIR


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

• the European Commission co-funded the project 5G-ALLSTAR as an Integrated Project under the Horizon
2020 Programme for research and development
https://5g-allstar.eu

• the German Federal Ministry of Education and Research (BMBF) in the national collaborative project PräKIpio
https://www.praekipio.de

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.6.1, 2021.

Copyright: Fraunhofer Heinrich Hertz Institute 2


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 Contents

Contents

1 Introduction and Overview 10


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

2 Software Structure 22
2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Description of Classes, Properties, and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.1 Class “qd simulation parameters” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.2 Class “qd arrayant” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.3 Class “qd track” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.2.4 Class “qd layout” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2.5 Class “qd satellite” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.2.6 Class “qd builder” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.2.7 Class “qd sos” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.2.8 Class “qd channel” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.2.9 QuaDRiGa package functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
2.3 Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
2.4 Description of the Parameter Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.5 Scenario Specific Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
2.6 Data Exchange Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
2.6.1 QuaDRiGa Array Antenna Exchange Format (QDANT) . . . . . . . . . . . . . . . . . 103
2.6.2 QuaDRiGa Layout Exchange Format (KML) . . . . . . . . . . . . . . . . . . . . . . . 105

3 Technical Documentation 112


3.1 Spatially Consistent Channel Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.1.1 The Sum of Sinusoids Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.1.2 3-D Approximation of Arbitrary ACFs . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.1.3 Device-to-Device Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3.2 Large-Scale Fading Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3.3 Multi-Frequency Small-Scale Fading Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.3.1 Communication Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.3.2 Initial Delays and Angles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.3.3 Initial Path Powers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
3.3.4 Applying K-Factor, Delay Spread and Angle Spreads . . . . . . . . . . . . . . . . . . . 127
3.3.5 Subpaths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.4 Drifting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.5 Antennas and Polarization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
3.5.1 Relation between the Polarization Model and the Jones Calculus . . . . . . . . . . . . 135
3.5.2 Changing the Orientation of Antennas . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.5.3 Constructing the Polarization Transfer Matrix . . . . . . . . . . . . . . . . . . . . . . 138
3.6 Combining Sub-Paths into Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
3.7 Path Gain, Shadow Fading and K-Factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
3.8 Transitions between Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
3.9 Ground Reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
3.9.1 Path-Powers and Path-Delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

Copyright: Fraunhofer Heinrich Hertz Institute 3


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 List of Figures

3.9.2 Departure and Arrival Elevation Angles . . . . . . . . . . . . . . . . . . . . . . . . . . 145


3.9.3 Polarization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
3.9.4 Reflection Coefficient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
3.10 Model for Satellite Orbital Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
3.11 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

4 Tutorials 153
4.1 The Most Common Mistake: Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
4.2 Typical driving course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.3 Effects of the Antenna-Orientation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
4.4 Drifting Phases and Delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
4.5 Geometric Polarization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.6 Pairing and segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
4.7 Network Setup and Parameter Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
4.8 Time Evolution and Scenario Transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
4.9 Applying Varying Speeds (Channel Interpolation) . . . . . . . . . . . . . . . . . . . . . . . . . 182
4.10 Resimulating a Measured Scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
4.11 Multi-frequency simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
4.12 Ground reflection simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
4.13 Spatial consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
4.14 Dual Mobility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

5 Model calibration 208


5.1 3GPP 36.873 Phase 1 Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
5.2 3GPP 36.873 Phase 2 Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
5.3 3GPP 38.901 Large Scale Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
5.4 3GPP 38.901 Full Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
5.5 3GPP 38.821 NTN Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

List of Figures

1 Evolution of GSCMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Simplified overview of the modeling approach used in QuaDRiGa . . . . . . . . . . . . . . . . . 13
3 Typical driving course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 UML class diagram of the model software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5 Channel parameters and their transformations . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6 QuaDRiGa Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7 Steps for the calculation of time-evolving channel coefficients . . . . . . . . . . . . . . . . . . 113
8 Principle of the generation of channel coefficients based on correlated LSPs . . . . . . . . . . 121
9 Illustration of the communication model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
10 Scatterer positions and arrival angles (single-bounce model) . . . . . . . . . . . . . . . . . . . 131
11 Scatterer positions and arrival angles (multi-bounce model) . . . . . . . . . . . . . . . . . . . 132
12 Example patterns for a dipole antenna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
13 Illustration of the overlapping area used for calculating the transitions between segments . . . 143
14 Illustration of the snapshot coupling in dual-mobility simulations . . . . . . . . . . . . . . . . 144
15 Illustration of the angles and vectors used for the calculations . . . . . . . . . . . . . . . . . . 145
16 Values of the reflection coefficients for  = 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
17 Diagram illustrating various terms in relation to satellite orbits . . . . . . . . . . . . . . . . . 150

Copyright: Fraunhofer Heinrich Hertz Institute 4


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 List of Acronyms

List of Tables

1 QuaDRiGa System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10


2 System Compatibility Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Large scale parameter distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
21 Parameter sets provided together with the standard software . . . . . . . . . . . . . . . . . . 101
25 Achievable delay and angular spread values . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
26 Offset Angle of the mth Sub-Path from [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
27 Electrical Properties of the Environment, 6-100 GHz [5] . . . . . . . . . . . . . . . . . . . . . 148
28 Constants required for orbit prediction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
29 Simulation assumptions for 3GPP-3D calibration . . . . . . . . . . . . . . . . . . . . . . . . . 208

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
ATOA absolute time of arrival
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
FSPL free-space path loss
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
LEO low Earth orbit
LHCP left hand circular polarized
LOS line of sight

Copyright: Fraunhofer Heinrich Hertz Institute 5


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 List of Acronyms

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
NTN non-terrestrial network
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
RMS root mean square
RX receiver
SC spatial consistency
SCM spatial channel model
SF shadow fading
SISO single input single output
SOS sum-of-sinusoids
SSF small-scale-fading
SSG state sequence generator
SSP small-scale-parameter
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

Copyright: Fraunhofer Heinrich Hertz Institute 6


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 Glossary

Glossary

base station (BS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113


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.
cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139, 142
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
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) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
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) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
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) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Synonym for path.
path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141, 143
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130, 139
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Synonym for cluster.
scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
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.
segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114, 130
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.

Copyright: Fraunhofer Heinrich Hertz Institute 7


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 List of Symbols

sub-path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129, 141


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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113, 130
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Synonym for mobile terminal.

List of Symbols

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


γ Polarization rotation angle for the linear NLOS polarization in [rad] . . . . . . . . . . 139, 140
λ Wavelength in units of [m] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114, 132
φ Azimuth angle in [rad]. φ can be used for φd or φa . . . . . . . . . . . . . . 103, 117, 134, 135
φa Azimuth angle of arrival (AoA) in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
φd Azimuth angle of departure (AoD) in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . 129
φ̂ The offset angle between the path angle φ of the mth sub-path in [degree] . . . . . . . . . 129
ψ Phase of a path in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132, 141
ρ Correlation coefficient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116, 122
στ The RMS delay spread in units of [s] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
τ Delay of a MPC in units of [s] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131, 132
θ Elevation angle in [rad]. θ can be used for θd or θa . . . . . . . . . . . . . . 103, 117, 134, 135
ϑ Polarization rotation angle in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
θa Elevation angle of arrival (EoA) in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
θd Elevation angle of departure (EoD) in [rad] . . . . . . . . . . . . . . . . . . . . . . . . . . 129
a Vector pointing from the position of the LBS to the RX position . . . . . . . . . . . . . . 131
B Bandwidth in units of [Hz] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
c Speed of Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131, 132
c Representation of the departure or arrival angle in Cartesian coordinates . . . . . . . . . . 136
cφ The scenario-dependent cluster-wise RMS angular spread in [degree] . . . . . . . . . . . . 129
d Length of a propagation path in [m] . . . . . . . . . . . . . . . . . . . . . . . . . . . 131, 141
dλ Decorrelation distance in [m] where the autocorrelation falls below e−1 . . . . . . . . . 96, 116
er,s Vector from the RX position to RX antenna element r at snapshot s . . . . . . . . . . . . 131
F Polarimetric antenna response . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135, 137, 140
fS Sampling Rate in [samples per meter] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
fT Sampling Rate in [samples per second] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
g Channel coefficient in time domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
J Jones vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
k Model parameter value, usually as a function of location or time . . . . . . . . . . . . . . 116
l Path index, l ∈ {1, 2, ..., L} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130, 131
m Sub-path index, m ∈ {1, 2, ..., M } . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129, 130
N Normal distribution N (µ, σ 2 ) with mean µ and STD σ . . . . . . . . . . . . . . 116, 139, 140
r Receive antenna index; r ∈ {1, 2, ..., nr } . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
R Rotation matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136, 137
r Vector pointing from the TX position to the RX position . . . . . . . . . . . . . . . . 131, 134
s Snapshot index s ∈ {1, 2, ..., S} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
t Transmit antenna index; t ∈ {1, 2, ..., nt } . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Copyright: Fraunhofer Heinrich Hertz Institute 8


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 List of Symbols

U Continuous uniform distribution U(a, b) with minimum a and maximum b . . . . . . . . . 135


v Speed in [m/s] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Z A random variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

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 9


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 1 INTRODUCTION AND OVERVIEW

1 Introduction and Overview

1.1 Installation and System Requirements

QuaDRiGa v2.6.1 requires MATLAB or Octave. The installation does not require any changes to your
system settings. If you would like to use QuaDRiGa, 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
Min. required MATLAB version 7.13 (R2011b)
Min. required Octave version 5.2
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 20.04 R2011b (7.13) 64 bit 2.6.0 works
R2020b (9.9) 64 bit 2.6.0 works
Octave 5.2.0 64 bit 2.6.0 works
Octave 6.2.0 64 bit 2.6.0 works
Windows 10 R2011b (7.13) 64 bit 2.6.0 works
Octave 5.2.0 64 bit 2.6.0 works
Octave 6.2.0 64 bit 2.6.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.

Copyright: Fraunhofer Heinrich Hertz Institute 10


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 1 INTRODUCTION AND OVERVIEW

Open-Source
Members only
v1.0 v1.2 v1.4 v2.0 v2.2 v2.4
Model guidlines

WINNER-I WINNER-II WINNER+ METIS mmMAGIC


SCM-E
5G-ALLSTAR

36.873 38.901 36.777


ITU-R M.2135
25.996 3GPP 37.885
IMT-Advanced
38.811

20 20 20 20 20 20 20 20 20 2 2 2 2 2 2 2 2 2
03 04 05 06 07 08 09 10 11 012 013 014 015 016 017 018 019 020

Figure 1: Evolution of GSCMs

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
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 11


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 12


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 13


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 14


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 user. Normally, the param-
eters are extracted from channel measurements. A detailed description of the model steps can be found
Section 3. A typical simulation run then contains the following steps:

1. Configuring 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 15


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 1 INTRODUCTION AND OVERVIEW

3. The trajectory describes the position of the MT. For each segment of the trajectory, scattering 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 up (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 16


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 a propagation 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 17


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 4.9. 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 18


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 19


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.6.1


Coordinate system TR 36.873 v12.5.0, Sec. 5.1, Page 7 Global coordinate system: Same as 3GPP.
TR 38.901 v16.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 v16.1.0, Sec. 7.3, Page 22 ’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 v16.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 v16.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 v16.1.0, Sec. 7.4.2, Page 30 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 v16.1.0, Sec. 7.4.3, Page 31 38.901 models implemented in ’qd layout.gen o2i loss’
O2I car TR 38.901 v16.1.0, Sec. 7.4.3.2, Page 32 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 v16.1.0, Sec. 7.4.4, Page 32 ’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 20


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 1 INTRODUCTION AND OVERVIEW

Feature 3GPP Specification QuaDRiGa v2.6.1


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 v16.1.0, Sec. 7.5, Page 33
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 v16.1.0, Page 39, Step 10 default, but can be enabled by:
qd simulation parameters.use 3GPP baseline = 1

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.6.1
Oxygen absorption TR 38.901 v16.1.0, Sec. 7.6.1, Page 51 Not implemented
Large bandwidth TR 38.901 v16.1.0, Sec. 7.6.2, Page 52 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 v16.1.0, Sec. 7.6.3.1, Page 54 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 v16.1.0, Sec. 7.6.3.2, Page 54 QuaDRiGa uses drifting (see Section 3.4) for UT
UT mobility 3GPP defines two procedures (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 v16.1.0, Sec. 7.6.3.3, Page 58 Implemented as optional feature in
LOS/NLOS/indoor ’qd layout.set scenario’ for selected scenarios.
states and O2I
parameters
Blockage TR 38.901 v16.1.0, Sec. 7.6.3, Page 60 Not implemented
Multi-frequency TR 38.901 v16.1.0, Sec. 7.6.5, Page 65 Alternative channel generation method is implemented
simulations and enabled by default. See tutorial
’multi frequency simulations’ for details.
Time-varying TR 38.901 v16.1.0, Sec. 7.6.6, Page 68 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 v16.1.0, Sec. 7.6.7, Page 68 Implemented. Can be controlled by the property
’orientation’ of the ’qd track’ class.
Explicit ground TR 38.901 v16.1.0, Sec. 7.6.8, Page 68 Implemented with minor modification. See [13] and
reflection model tutorial ’ground reflection’ for details.
Absolute time of TR 38.901 v16.1.0, Sec. 7.6.8, Page 71 Implemented. Can be controlled in the scenario
arrival parameter settings or configuration files using the
variables ’absTOA mu’, ’absTOA sigma’ or
’absTOA lambda’.
Dual mobility TR 38.901 v16.1.0, Sec. 7.6.8, Page 72 Dual mobility is available in QuaDRiGa. However, the
implementation differs significantly from the 3GPP
approach. See ’dual mobility tutorial’ for details.

Channel models for link-level evaluations

Channel models for link-level evaluations (TDL and CDL) are implemented in QuaDRiGa. They can be
directly generated using the channel builder. See ’builder.gen cdl model’ for a list of implemented TDL and
CDL models as well as available options.

Copyright: Fraunhofer Heinrich Hertz Institute 21


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 parameters 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 = copy( a )”.

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

“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 satellite” implements satellite orbital motion models.
“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 22


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

<<control>>
qd_builder
1
+name
+simpar
1
#no_freq
#no_rx_positions
1
#dual_mobility
+tx_position
+rx_track
+tx_array
1 1...* +rx_positions
<<input>> <<input>> +tx_track
qd_simulation_parameters qd_arrayant +rx_array
+scenario
+sample_density +name +scenpar
+samples_per_meter +center_frequency +plpar
+center_frequency +elevation_grid #lsp_vals
+use_3GPP_baseline +azimuth_grid #lsp_xcorr_chk
+use_absolute_delays +no_elements +lsp_xcorr
+use_random_initial_phase 1 +element_position +sos
+show_progress_bars +Fa +path_sos
+autocorrelation_function +Fb +xpr_sos
#version +coupling +pin_sos
#speed_of_light #no_az +clst_dl_sos
#wavelength #no_el +gr_sos
+checksum() #is_wrapped +absTOA_sos
+copy() +append_array() +subpath_coupling
+has_gpu() +beam_explorer() +ds
+set_speed() +calc_beamwidth() +kf
+calc_element_position() +sf
+calc_gain() +asD
+calc_phase_diff() +asA
1...* +combine_pattern() +esD
<<input>> +copy(): array +esA
qd_track +copy_element() +xpr
+double() +gr_epsilon_r
+name
+generate(): static +absTOA_offset
+no_snapshots
+import_pattern() +NumClusters
+initial_position
+interpolate() +NumSubPaths
+positions
+normalize_gain() uses +taus
+orientation
+rotate_pattern() +gain
+movement_profile
+set_grid(): array +pow
+no_segments
+single() +AoD
+segment_index
+sub_array() +AoA
+scenario
+visualize() +EoD
+par
1...* +wrap_grid() +EoA
#closed
+xml_read() +xprmat
+add_segment(): array +xml_write() +pin
+calc_orientation(): array 1...* +fbs_pos
+checksum() +lbs_pos
+copy(): array
+add_paths()
+correct_overlap(): array 1
+add_sdc()
+generate(): static <<input>> +check_dual_mobility(): array
+get_length(): array
+get_subtrack()
qd_layout +check_los()
+copy()
+interpolate() +name
1 +gen_cdl_model()
+interpolate_positions(): array +simpar <<control>>
+gen_fbs_lbs()
+set_scenario(): array +update_rate qd_sos +gen_lsf_from_ssf()
+set_speed(): array +ReferenceCoord
+name +gen_lsf_parameters()
+split_segment(): array +no_tx
1 +distribution +gen_parameters(): array
+no_rx
+dist_decorr +gen_ssf_from_scatterers()
+tx_name
#dimensions +gen_ssf_parameters()
+tx_position
#no_coefficients +get_angles()
+tx_array 1
creates #dist +get_channels(): array
+tx_track
#acf +get_distances()
+rx_name
#sos_freq +get_los_channels(): array
+rx_position
#sos_phase +get_lsp_map()
+rx_array
#sos_amp +get_pl()
+rx_track
+acf_2d() +get_sf_profile()
+pairing uses
<<input>> +acf_approx() 1...* +init_sos()
#dual_mobility
qd_satellite +acf_estimate() +set_scenario_table()
#no_links
+acfi() +split_multi_freq(): array
+name +copy() +split_rx()
+gen_o2i_loss() +calc_mse()
+station_keeping +supported_scenarios(): static
+generate(): static +copy(): array
+epoch +visualize_clusters()
+get_channels() +generate(): static
+sat_name +write_conf_file()
+get_channels_seg() +init(): array
+n_satellites
+init_builder() +load(): static
+semimajor_axis
+kml2layout() +map() creates
+eccentricity
+layout2kml() +rand(): static
+inclination
+power_map() +randi(): static
+lon_asc_node
+randomize_rx_positions() +randn(): static
+arg_periapsis <<output>>
+set_pairing() +remove_bias()
+true_anomaly
+save() qd_channel
#orbit_period +set_satallite_pos()
+set_scenario() +set_acf() +name
+generate(): static +val() +version
+init_tracks() +visualize()
+center_frequency
+orbit_predictor() +coeff
+read_tle() +delay
+ue_perspective() +par
+visualize_earth() Underlined +initial_position
+visualize_lonlat() methods use +tx_position
+visualize_orbit() "qd_builder" +rx_position
#no_rxant
#no_txant
#no_path
#no_snap
+individual_delays
+combine_tx_rx()
merges with
+copy(): array
+fr()
+interpolate()
+hdf5_load()
+hdf5_save()
orders construction of
+merge()
+quantize_delays()
+split_rx()
+split_snap()
+split_tx()
+swap_tx_rx()

Figure 4: UML class diagram of the model software.

Copyright: Fraunhofer Heinrich Hertz Institute 23


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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:

qd arrayant.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 arrayant ( 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 implements the access to class-properties and methods somewhat different. Line 3 fails because linear
indexing of object arrays is not supported. 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 24


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 be 1 (single mobility) or 2 (dual mobility). For smaller
values, interpolation of the channel for variable speed is not possible. On the other hand, high values
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)
• Disable Spatial Consistency for Small-Scale Fading (Disable)
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 25


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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

h = checksum
Calling object Single object
Description Calculates a checksum of all parameters to identify changes in the simulation settings
Output h The checksum (uint64 number).

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]

Copyright: Fraunhofer Heinrich Hertz Institute 26


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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 object


center frequency Center frequency in [Hz]
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 π.
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.
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.
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
is wrapped Indicator if the array is wrapped

Copyright: Fraunhofer Heinrich Hertz Institute 27


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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 an-
tenna, 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 ]

[ beamwidth az, beamwidth el, az point ang, el point ang ] = calc beamwidth ( i element, thres dB )
Calling object Single object
Description Calculates the beam width for each antenna element in [deg]
This method calculates the beamwidth in azimuth and elevation direction as well as the pointing angles
of each element of the array antenna. Interpolation is used to achieve a higher precision as provided by
the sampling angle grid.
Input i element A list of element indices. Default: 1 ... no elements
thres dB The threshold in dB (Default: 3 dB, equivalent to FWHM)
Output beamwidth az The azimuth beamwidth for each element in [deg]
beamwidth el The elevation beamwidth for each element in [deg]
az point ang The azimuth pointing angle for the main beam in [deg]
el point ang The elevation pointing angle for the main beam in [deg]

Copyright: Fraunhofer Heinrich Hertz Institute 28


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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])

[ 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.

phase diff = calc phase diff ( threshold )


Calling object Single object
Description Calculates the maximum phase difference of neighboring entries in the radiation pattern
The antenna radiation pattern is described by a field pattern containing the directive gain and
phase. This pattern is sampled at a fixed angular grid in polar-spheric coordinates. An impor-
tant step for the channel generation is the interpolation of the field patterns, which is performed by
qd qrrayant.interpolate. However, since the entries in the field pattern are generally complex-valued,
different interpolation methods can be used: linear interpolation interpolates the real and imaginary
parts independently. Spherical linear interpolation interpolates the phase using constant-speed motion
along a unit-radius circle arc. The latter is more accurate - especially when the phase differs signifi-
cantly between the two entries. On the other side, linear interpolation is more efficient and reasonably
accurate for small differences in phase (up to 15 degrees). In order to assess, which interpolation should
be used, the method calc phase diff calculate the maximum phase difference within the field pattern.
The interpolate function then applies the appropriate method.
Input threshold The maximum power difference in dB relative to the power in the direction of
maximum radiation for which the phase difference is calculated. This prevents
entries in the field patter that have very little directive power from being considered
for the phase difference calculation. Default value: 20 dB
Output phase diff A vector containing the maximum phase difference in degree for each element of
the array antenna

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.

Copyright: Fraunhofer Heinrich Hertz Institute 29


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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

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.

double
Calling object Object array
Description Set all properties to double precision

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.
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)

Copyright: Fraunhofer Heinrich Hertz Institute 30


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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)
Ein - Number of beams for as defined by 3GPP TR38.821 (Default: 1)
Fin - Beam separation in degrees (Default: FWHM width)
Gin - Satellite Tx max Gain in (dBi)

xpol Two elements with ideal isotropic patterns (vertical polarization). The second
element is slanted by 90°.
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.
testarray An array antenna with near-optimal angular resolution for testing the spatial prop-
erties of the channel model. This antenna can be used either as a transmit or receive
antenna. The generated channel coefficients can be used by ’qf.calc angels’ to
obtain the departure and arrival angles of clusters. The first 28 elements sample
the whole sphere in vertical polarization. Element 29 is ideally horizontally polar-
ized to calculate the XPR per path. Elements 30 and 31 are circularly polarized
to obtain the XPR for circular and elliptic polarization.
Ain - Angular sampling resolution in [deg] - Default is 1 degree

Copyright: Fraunhofer Heinrich Hertz Institute 31


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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.

qd arrayant.import pattern ( fVi, fHi , azimuth grid , elevation grid )


Calling object None (static method)
Description Converts antenna field patterns into a QuaDRiGa array object
This function converts any antenna field pattern into a QuaDRiGa antenna array object. The angle
grid is adjusted automatically to the range supported by QuaDRiGa.
Input fVi The field pattern(s) for the vertical polarization given in spherical coordinates.
The first dimension corresponds to the elevation angle. The second dimension is
for the azimuth angle. The third dimension belongs to the element number. The
default resolution is 1 degree. Hence, the default size of fVi is ¡181x361x1¿. If a
different resolution is given or a different angular sampling is given, the optional
variables ”azimuth grid” and ”elevation grid” must be defined.
fHi The field pattern(s) for the horizontal polarization given in spherical coordinates.
”fHi” can be empty if no horizontal response is given. If it is given, then ”fHi”
must have the same size as ”fVi”.
azimuth grid A vector specifying the azimuth sampling points of the patterns in units of radians.
This value only needs to be defined if the patterns do not have the default size or
angular sapling grid. Values outside the [-pi,pi] range will be converted and the
patterns will adjusted accordingly.
elevation grid A vector specifying the elevation sampling points of the patterns in units of radians
(typically raging from -pi/2 to pi/2). This value only needs to be defined if the
patterns do not have the default size.

[ V, H, dist, azimuth, elevation ] = interpolate ( azimuth, elevation, i element, orientation, threshold, use gpu )
Calling object Single object
Description Interpolates the array antenna field patterns
This function interpolates the polarimetric antenna field patterns for a given set of azimuth and el-
evation angles. Interpolation of the antenna field patterns is very computing intensive. It must be
performed several thousands of times during a simulation run. Therefore, the function implements two
interpolation methods: 2D linear interpolation and spheric interpolation. Linear interpolation is used
for real-valued field patterns and for complex-valued field pattern that have a small phase-variation
between neighboring elements. However, linear interpolation performs very poorly when there is a large
phase difference between two neighboring samples of the pattern. In this case, spheric interpolation is
used.

Copyright: Fraunhofer Heinrich Hertz Institute 32


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

Input azimuth A vector of azimuth angles in [rad]. The default dimensions are: [ 1, no ang ]. It is
possible to provide a different angle for each element of the array antenna. In this
case, the dimensions are [ no elements, no ang ], where ’no elements’ corresponds
to the number of entries in ’i element’ or the number of elements in the array
antenna if ’i element’ is not given.
elevation A vector of elevation angles in [rad]. The dimensions are: [ 1, no ang ] or in case
of per-element angles [ no elements, no ang ].
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.
Dimensions: [ 1, no elements ]
orientation This (optional) 3-element vector describes the orientation of the array antenna.
The The first value describes the ”bank angle”, the second value describes the
”tilt angle”, (positive values point upwards), the third value describes the bearing
or ”heading angle”, in mathematic sense. East corresponds to 0, and the angles
increase counter-clockwise, so north is 90 degrees, south is -90 degree, and west is
180 degree. All values are given in [rad]. By default, the orientation is [0;0;0], i.e.
the broadside of the antenna points at the horizon towards the East.
threshold The maximum phase difference in [deg] between two neighboring entries in the
antenna field pattern for which linear interpolation is allowed. Linear interpolation
is much faster, but also inaccurate for large phase offsets. By default, a 0 degree
threshold is used, i.e., spheric polarization is used for all complex-valued patterns.
use gpu Enables or disables (default) GPU acceleration. This requires a compatible GPU
and the ”Parallel Computing Toolbox” for MATLAB. In Octave, GPU acceleration
is available through the ”ocl”-package (https://octave.sourceforge.io/ocl).
Output V The interpolated vertical field pattern (E-θ-component).
Dimensions: [ no elements, no ang ]
H The interpolated horizontal field pattern (E-φ-component).
Dimensions: [ no elements, no ang ]
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. Dimensions: [ no elements, no ang ]
azimuth The azimuth angles in [rad] for the local antenna coordinate system, i.e., after
applying the ’orientation’. If no orientation vector is given, these angles are
identical to the input azimuth angles.
elevation The elevation angles in [rad] for the local antenna coordinate system, i.e., after
applying the ’orientation’. If no orientation vector is given, these angles are
identical to the input elevation angles.

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

Copyright: Fraunhofer Heinrich Hertz Institute 33


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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 string ’x’,’y’, ’z’, or ’xyz’. In case of ’xyz’, three
rotations are performed: one around the ’x’ axis, followed by one around the ’y’
axis and around the ’z’ axis. In this case, the input ’deg’ must be a 3-element
vector containing the 3 rotation angles.
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 pat-
tern or polarization. Possible values are:
• 0: Rotate both (pattern+polarization) - default
• 1: Rotate only pattern
• 2: Rotate only polarization
• 3: Same as (0), but without grid interpolation

mse = set grid ( azimuth grid, elevation grid, use interpolate )


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.

single
Calling object Object array
Description Set all properties to single precision to increase computation performance

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 34


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 antennas
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 35


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 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 36


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 call-
ing ”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 2-element vector of real numbers. The first value is the minimum distance in
meters to an existing point on a track at which no new point is created, but the
scenario is assigned to the existing point (default = 0.1 m). The second value
describes the maximum distance between ”pos” and the track line (default = 2
m).
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 ( roll, pitch, yaw )


Calling object Object array
Description Calculates the orientation of the mobile device
This function can be used to change the orientation of the mobile device. If no input variable is provided,
this function calculates the orientation based on the positions and stores the output in the orientation
property of the qd track object. For this calculation, it is assumed that the receive array antenna is
fixed on a car and the car moves along the track, i.e., the antenna turns with the car when the car is
changing direction. This needs to be accounted for when generating the channel coefficients.
If there is at least one input variable given, the device orientation is changed by the given values.
For example: you can can calculate the orientation by calling the method without arguments. This
would fix the antenna orientation such that the antennna broadside always points into the direction
of movement. A second call to the function with a given pitch angle of e.g., 90 degree would tilt the
antenna up. All values are given in [rad]. Note that by default, QuaDRiGa antennas face east (roll =
0, pitch = 0, yaw = 0).
Input roll The first value describes the ”roll angle” in [rad], 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).
The default value is 0.
pitch The second value describes the ”pitch angle” in [rad], i.e. the vertical (tilt) angle
relative to the horizontal plane; positive rotation is up. If this value is not given,
it is calculated from the snapshot positions.

Copyright: Fraunhofer Heinrich Hertz Institute 37


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

yaw The third value describes the bearing or ”yaw angle”, in mathematic sense. Values
must be given in [rad]. East corresponds to 0, and the angles increase counter-
clockwise, so north is 90 degrees, south is -90 degree, and west is 180 degree. If
this value is not given, it is calculated from the snapshot positions.

h = checksum
Calling object Object array
Description Calculates a checksum of all tracks to identify changes in the simulation settings
Output h The checksum (uint64 number).

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)

Copyright: Fraunhofer Heinrich Hertz Institute 38


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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

[ 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.

Copyright: Fraunhofer Heinrich Hertz Institute 39


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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).
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’)

Copyright: Fraunhofer Heinrich Hertz Institute 40


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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.

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

Copyright: Fraunhofer Heinrich Hertz Institute 41


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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
ReferenceCoord Reference coordiantes for KML read/write
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.
dual mobility Indicator if the layout contains moving transmitters
no links Number of links for which channel coefficients are created (read only)

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.

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 ( method, low loss fraction, SC lambda, max indoor distance )
Calling object Single object
Description Generates the outdoor-to-indoor penetration loss
This method generates the outdoor-to-indoor (O2I) penetration loss in [dB] for the 3GPP 38.901 or
the mmMAGIC channel 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 method String selecting the indoor pathloss model. Two models are implemented:
the 3GPP model ’3GPP 38.901’ as described in 3GPP TR 38.901 v14.1.0, Sec.
7.4.3, Page 27 and the ’mmMAGIC’ model as described in H2020-ICT-671650-
mmMAGIC/D2.2, Sec. 4.3.

Copyright: Fraunhofer Heinrich Hertz Institute 42


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

[ h channel, h builder ] = get channels ( check parfiles, overlap, algorithm, init builder )
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 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.
init builder If set to true, the channel builders are initialized but no channels are generated.
Output h channel A vector ’qd channel’ objects.
h builder A vector of ’qd builder’ objects.

[ h channel, h builder ] = get channels seg ( tx, rx, seg, freq, overlap )
Calling object Single object
Description Returns the channel coefficients for a single TX-RX link
This method can be used to obtain the channel coefficients for a single TX-RX link. Thus, the channel
model can be run in ”streaming-mode”, where updates are provided on the fly. This can significantly
reduce the memory requirements for long time-sequences or large numbers of BSs or MTs. The random-
number generators are initialized for the entire simulation setup, ensuring full spatial consistency.
Caching is used to avoid multiple calculation of the same overlapping regions, e.g. when calculating
segments one by one.
Any changes made to the layout after calling ”get channels” or ”get channels seg” will reset the
pre-initialized parameters. In this case, the generated channel coefficient will be different for the same
TX-RX link. A warning message will be shown in the command prompt.
Input tx The index of the transmitter (e.g. the BS)
rx The index of the receiver, or track (e.g. the MT)
seg The segment indices on the track. If it is not provided or empty, the entire track is
returned. It is also possible to concatenate successive segments, i.e.: [1:3] or [3:5],
etc.

Copyright: Fraunhofer Heinrich Hertz Institute 44


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

freq The frequency index in case of multi-frequency simulations. If it is not


provided or empty, channels are generated for all frequencies defined in
”h layout.simpar.center frequency”
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).
Output h channel The channel for the requested segment. In multi-frequency mode, a vector
’qd channel’ objects is returned.
h builder The ’qd builder’ objects for the entire simulation.

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 one 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.
ForceRefCoord 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. If this value is
given, any value provided in the KML file is ignored.

Copyright: Fraunhofer Heinrich Hertz Institute 45


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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.
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.
absolute altitude Boolean value (optional). By default (0), heights are stored relative to the ground
height. If set to true, heights are stored relative to sea level.

[ 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 (linear scale relative to ’tx power’) 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.

Copyright: Fraunhofer Heinrich Hertz Institute 46


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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 (logarithmic scale in [dBm] or [dBW]) 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.
i freq The frequency index in case of multi-frequency simulations. Default: 1
Output map A cell array containing the power map for each tx array in the layout. The power
values are in linear scale relative ’tx power’ and have the dimensions
[ n y coords , n x coords , n rx elements , n tx elements ]. If tx-powers are given
in [dBm], the power values in the map will be in [mW]. If tx-powers are given in
[dBW], the power values in the map will be in [W].
x coords Vector with the x-coordinates of the map in [m]
y coords Vector with the y-coordinates of the map in [m]

randomize rx positions ( max dist, min height, max height, track length, rx ind, min dist, orientation )
Calling object Single object
Description Generates random RX positions and tracks
This method places the users in the layout at random positions. Users are placed uniformly in the area
defined by ’max dist’ and ’min dist’. Each user will be assigned a linear track with random direction
unless a fixed orientation is provided as input argument. 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]. Scalar value, default 50 m
min height The minimum user height in [m]. Scalar value, default 1.5 m
max height The maximum user height in [m]. Scalar value, default 1.5 m
track length The length of the linear track in [m]. Scalar value, default 1 m
rx ind A vector containing the receiver indices for which the positions should be generated.
Default: All receivers
min dist The minimum distance from the layout center in [m]. Scalar value, default 0 m
orientation The fixed heading angle (direction of movement) in [rad] for all user terminals in
mathematic sense (0 points east, pi/2 points north). Scalar value. If no orientation
is provided, all tracks get assigned with a random heading angle.
Alternatively, the orientation can be described by a 3-element vector: 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. Pos-
itive 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 ”heading an-
gle”. The bank and tilt angles are only used to orient the antenna of the MT.
The heading angle is used for both, the antenna orientation and the movement
direction.

Copyright: Fraunhofer Heinrich Hertz Institute 47


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

[ 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 48


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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
• 5G-ALLSTAR DenseUrban (Satellite)
• 5G-ALLSTAR Urban (Satellite)
• 5G-ALLSTAR Suburban (Satellite)
• 5G-ALLSTAR Rural (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 position.
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

Copyright: Fraunhofer Heinrich Hertz Institute 49


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

2.2.5 Class “qd satellite”

This class contains all functions to generate and load satellite constellations. Based on the defined constella-
tion tracks can be generated to be used with the QuaDRiGa channel model. The satellite orbit description
is based on the ITU Recommendation ITU-R S.1503-3 (01/2018), ”Functional description to be used in de-
veloping software tools for determining conformity of non-geostationary-satellite orbit fixed-satellite service
systems or networks with limits contained in Article 22 of the Radio Regulations”.

Properties

name Name of the ’qd satellite’ object


station keeping Enable or disable (default) station keeping
There are minor launch errors and perturbations that would make the orbit drift unless station keeping
was used to ensure the track ground repeats. An important aspect to station keeping is to simulate
multiple passes of the non-GSO satellite through an earth station’s main beam with slightly different
crossing directions. As changing the position within the plane does not affect this, then the main
parameter to vary is the longitude of the ascending node. Setting this property to 1 assumes perfect
station keeping and deactivates orbit drift. Default: 0 (no station keeping).
epoch Common epoch for all satellites in days since Jan 1, 0000
sat name Cell array containing the satellite names
n satellites Number of satellites (read only)
semimajor axis Semimajor axis (a) in [km]
is equal to the sum of the periapsis and apoapsis distances divided by two. For circular orbits, the
semimajor axis is the distance between the centers of the bodies, not the distance of the bodies from
the center of mass.
eccentricity The orbital eccentricity (e) of a satellite
is the parameter that determines the amount by which its orbit around the Earth deviates from a
perfect circle. eccentricity = 0 yields in a circular orbit, 0 < eccentricity < 1 yields an elliptical
orbit.
inclination Orbital inclination (i) in [degree]
measures the tilt of a satellites orbit around the earth. It is expressed as the angle between Earths
equatorial plane and the orbital plane or axis of direction of the satellite.
lon asc node Longitude of the ascending node (Omega) in [degree]
horizontally orients the ascending node of the ellipse (where the orbit passes upward through the
equatorial plane) with respect to the reference frame’s vernal point. As the orbit is fixed in inertial
space while the Earth rotates, a time reference for which this angle is valid must be given. In this
case it is the start of the simulation or the epoch datetime (if provided).
arg periapsis Argument of periapsis (omega) in [degree]
defines the orientation of the ellipse in the orbital plane, as an angle measured from the ascending
node to the periapsis (the closest point the satellite comes to the Earth).
true anomaly True anomaly (v) in [degree]
defines the position of the satellite along the ellipse at a specific time (the ”epoch”).
orbit period Orbital period in [seconds] (read only)

Methods
h qd satellite = qd satellite ( constellation, Ain, Bin, Cin, Din, Ein, Fin )
Calling object None (constructor)
Description Creates a new ’qd satellite’ object.
The constructor creates new satellite constellations with a number of S satellites. The input parameter
’constellation’ defines the constellation type. Additional parameters are specific to the constellation.
They are defined by the following list. If no input is specified, an empty object is created.

Copyright: Fraunhofer Heinrich Hertz Institute 50


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

Constellation custom A custom constellation. All input parameters must be given as vectors having the
dimensions [ 1 x S ].
Ain - Semimajor axis in [km]; Default: 42164 km, GEO orbit
Bin - Orbital eccentricity [0-1]; Default: 0
Cin - Orbital inclination in [degree]; Default: 0
Din - Longitude of the ascending node in [degree]; Default: 0
Ein - Argument of periapsis in [degree]; Default: 0
Fin - True anomaly in [degree]; Default: 0

gso A constellation of equally spaced geostationary satellites.


Ain - Number of satellites S; Scalar variable; Default: 3
Bin - Phase offset of the first satellite in [degree]; Scalar variable

walker-delta Walker-Delta pattern constellation is used for a global coverage of the Earth’s
surface by a minimum number of satellites in circular orbits. A Walker-Delta
pattern contains of total of ’S’ satellites in ’p’ orbital planes with ’t=S/p’ satellites
in each orbital plane. All orbital planes are assumed to be in same inclination
with reference to the equator. The phase difference between satellites in adjacent
plane is defined as the angle in the direction of motion from the ascending node to
the nearest satellite at a time when a satellite in the next most westerly plane is
at its ascending node. In order for all of the orbit planes to have the same phase
difference with each other, the phase difference between adjacent satellites must
be a multiple of ’f*360/S’, where ’f’ can be an integer between 0 to p-1.
Ain - Semimajor axis for all satellites in [km]; Scalar variable
Bin - Orbital inclination in [degree]; Scalar variable
Cin - Number of orbital planes ’p’; Scalar variable
Din - Number of satellites per plane ’t’; Scalar variable
Ein - Phase difference in [degree]; Scalar variable

Output h qd satellite Handle to the created ’qd satellite’ object.

h qd track = init tracks ( ue pos, t, i sat, only visible )


Calling object Single object
Description Creates qd track objects containing the satellite positions in local coordinates
The QuaDRiGa reference coordinate system is defined by Cartesian (x,y,z) coordinates. Hence, local
QuaDRiGa coordinates do not take the curvature of the Earth into account. This method attaches a
tangential plane at the UE positions given by geographic coordinates (longitude, latitude). The origin
(0,0,0) of the local QuaDRiGa coordinates is is placed at the UE position and the satellite coordinates
at time ’t’ are transformed into local coordinates. The ’qd track’ object can be used as ’tx track’ in
a ’qd layout’ object.
Input ue pos A two-element vector defining the origin of the tangential plane on the surface of
the Earth in geographic coordinates (latitude,longitude) in [degree]
t Vector containing the T time points in seconds relative to the epoch (simulation
start). Alternatively, it is possible to use the current clock-time by providing a
string describing the clock offset relative to UTC time, e.g. ’utc+02’ stands for
Central European Summer Time (CEST).
i sat Vector containing the S satellite indices for which the orbit should be predicted
(optional). By default, all satellites are used.
only visible If set to true (default), the output contains only satellites where at least one part
of the orbital trajectory is above the horizon.
Output h qd track A vector of ’qd track’ object handles containing the satellite trajectories for each
visible satellite.

[ xyzI, xyzR, r, lat, lonI, lonR, pq ] = orbit predictor ( t, i sat )


Calling object Single object
Description Non-GSO satellite orbit predictor
Given the orbital elements given by the qd satellite’ object, standard orbit mechanics are used to
predict the position of the satellite at future times.

Copyright: Fraunhofer Heinrich Hertz Institute 51


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

Input t Vector containing the T time points in seconds relative to the epoch (simulation
start). Alternatively, it is possible to use the current clock-time by providing a
string describing the clock offset relative to UTC time, e.g. ’utc+02’ stands for
Central European Summer Time (CEST).
i sat Vector containing the S satellite indices for which the orbit should be predicted
(optional). By default, all satellites are used.
Output xyzI Positions of the satellite in Cartesian coordinates (inertial, non-rotating reference
frame); Values are in [km]; Dimensions: [ 3 x T x S ].
xyzR Positions of the satellite in Cartesian coordinates (rotating reference frame taking
Earths rotation into account); Values are in [km]; Dimensions: [ 3 x T x S ]
r Distance from center of Earth to the satellite in [km]. Dimensions: [ T x S ]
lat Geographic latitude in [degree]. Dimensions: [ T x S ]
lonI Geographic longitude in [degree] (inertial, non-rotating reference frame). Dimen-
sions: [ T x S ]
lonR Geographic longitude in [degree] (rotating reference frame taking Earths rotation
into account). Dimensions: [T x S ]
pq The position of the satellite within the orbital plane in (P, Q) coordinates; Values
are in [km]; Dimensions: [ 2 x T x S ]

h qd satellite = qd satellite.read tle ( filename )


Calling object None (static method)
Description Reads orbital elements from two-line element sets
A two-line element set (TLE) is a data format encoding a list of orbital elements of an Earth-orbiting
object for a given point in time, the epoch. The format was originally intended for punch cards, encoding
a set of elements on two standard 80-column cards. This format was eventually replaced by text files
with each set of elements written to two 70-column ASCII lines. The United States Air Force tracks
all detectable objects in Earth orbit, creating a corresponding TLE for each object, and makes publicly
available TLEs for many of the space objects on the website Space Track (http://celestrak.com). The
TLE format is a de facto standard for distribution of an Earth-orbiting object’s orbital elements.
Input filename Filename of the text-file containing the TLE data.
Output h qd satellite Handle to the created ’qd satellite’ object.

Copyright: Fraunhofer Heinrich Hertz Institute 52


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

[ xyzU, visible, orientation ] = ue perspective ( ue pos, t, i sat )


Calling object Single object
Description Predicts the satellite positions and orientation in local QuaDRiGa coordinates
The QuaDRiGa reference coordinate system is defined by Cartesian (x,y,z) coordinates. This method
attaches a tangential plane at the UE positions given by geographic coordinates (longitude, latitude).
The origin (0,0,0) of the local QuaDRiGa coordinates is is placed at the UE position and the satellite
coordinates at time t are transformed into local coordinates. The satellite is oriented such that the
x-axis of its local coordinate system points into the direction of flight and its z-axis points to the center
of the Earth (for circular orbits). Hence, it rotates at a constant rate of one revolution per orbit. This
orientation is transformed into local QuaDRiGa coordinates as well.
Input ue pos A two-element vector describing defining origin of the tangential plane on the
surface of the Earth in geographic coordinates (latitude,longitude) in [degree]
t Vector containing the T time points in seconds relative to the epoch (simulation
start). Alternatively, it is possible to use the current clock-time by providing a
string describing the clock offset relative to UTC time, e.g. ’utc+02’ stands for
Central European Summer Time (CEST).
i sat Vector containing the S satellite indices for which the orbit should be predicted
(optional). By default, all satellites are used.
Output xyzU Positions of the satellite in local QuaDRiGa coordinates (relative to the tangential
plane, including Earths rotation); Values are in [km]; Dimensions: [ 3 x T x S ]
visible Logic vector indicating positions above the horizon; Dimensions: [ T x S ]
orientation This vector describes the orientation of the satellite. 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 satellite from tail to
nose. The second value describes the ”tilt angle”, i.e. the vertical angle relative to
the horizontal plane. The third value describes the bearing or ”heading angle”, in
mathematic sense. All values are given in [degree]; Dimensions: [ 3 x T x S ]

visualize earth ( observation time, i sat )


Calling object Single object
Description Plots the satellite position in the rotating reference frame
Plots the satellite position in 3D Cartesian coordinates with the Earth at the center. Earth’s rotation
is taken into account.
Input observation time Vector containing the T time points in seconds relative to the epoch (simulation
start). Alternatively, it is possible to use the current clock-time by providing
a string describing the clock offset relative to UTC time, e.g. ’utc+02’ stands
for Central European Summer Time (CEST). When clock-time is used, satellite
names are plotted next to the satellite position. If ’observation time’ is not given,
satellite trajectories are plotted for one full orbit and names are not plotted.
i sat Vector containing the S satellite indices that should be included in the plot. By
default, all satellites are used. If only one satellite position requested for a single
time point (e.g. clock-time), the orbital track is shown in addition to the satellite
position.

Copyright: Fraunhofer Heinrich Hertz Institute 53


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

visualize lonlat ( observation time, i sat )


Calling object Single object
Description Plots the satellite ground track
A ground track or ground trace is the path on the surface of the Earth directly below the satellite. It
is the projection of the satellite’s orbit onto the surface of the Earth. A satellite ground track may
be thought of as a path along the Earth’s surface which traces the movement of an imaginary line
between the satellite and the center of the Earth. In other words, the ground track is the set of points
at which the satellite will pass directly overhead, or cross the zenith, in the frame of reference of a
ground observer.
Input observation time Vector containing the T time points in seconds relative to the epoch (simulation
start). Alternatively, it is possible to use the current clock-time by providing
a string describing the clock offset relative to UTC time, e.g. ’utc+02’ stands
for Central European Summer Time (CEST). When clock-time is used, satellite
names are plotted next to the satellite position. If ’observation time’ is not given,
satellite trajectories are plotted for one full orbit and names are not plotted.
i sat Vector containing the S satellite indices that should be included in the plot. By
default, all satellites are used. If only one satellite position requested for a single
time point (e.g. clock-time), the orbital track is shown in addition to the satellite
position.

visualize orbit ( i sat )


Calling object Single object
Description Plots the satellite orbit in the inertial frame of reference
Plots the satellite orbit in 3D Cartesian coordinates with the Earth at the center. Earth’s rotation is
not taken into account.
Input i sat Vector containing the S satellite indices that should be included in the plot. By
default, all satellites are used. If only one satellite position requested for a single
time point (e.g. clock-time), the orbital track is shown in addition to the satellite
position.

Copyright: Fraunhofer Heinrich Hertz Institute 54


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

2.2.6 Class “qd builder”

This class implements all functions that are necessary to generate and manage correlated LSPs, correlated
SSF, 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.

An overview of the parameters and transformations is given in Figure 5. There are five types of parameters
shown as white boxes along the middle of the diagram:

1. Scenario parameters (SCENPAR): Scenario parameters define the distribution of model properties
for a certain environment. 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. Scenario parameters for a large variety of
environments are stored in so-called ”.conf”-Files which can be found in the ”quadriga src\config”
folder. A detailed description of the scenario parameters can be found in Section 2.4.

2. Sum-of-sinusoids random generators (SOS): A computational efficient method to generate corre-


lated stochastic processes is to approximate the filtered white Gaussian noise process by a finite sum
of properly weighted sinusoids. This is implemented in the ’qd sos’-class which handles all random
variables used by the channel builder. The initial values of the random generators (i.e., the seeds)
must be stored to enable spatial consistency throughout the channel generation process. A detailed
explanation can be found in Section 3.1.1.

3. Large-Scale-Parameters (LSF): 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 detailed explanation can be found in Section 3.2.

4. Small-Scale-Parameters (SSF): Small-scale-parameters (SSPs) describe the individual components


of the CIR. These are the gains, delays and angles of each individual multipath component (MPC). A
detailed explanation can be found in Section 3.3.

5. Scatterer positions (FBS / LBS): After the path-delays, gains, and angles are known for the trans-
mitter (TX) and receiver (RX) positions, their values are updated when the MTs move to a different
location. This process is called ’drifting’. It requires that the interaction points of the electromagnetic
waves with the environment (so-called scatterer positions) are known. These positions are calcu-
lated from the SSPs and stored in the ’qd builder’ object. A detailed explanation can be found in
Section 3.4.

LSPs are the shadow fading, the Ricean K-Factor, the RMS delay spread and the four angles (elevation and
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.

Copyright: Fraunhofer Heinrich Hertz Institute 55


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

SCENPAR
Scenario-parameters

init_sos
initializes SOS generators
for LSP and SSF parameters

replaces

SOS
Random Generators

gen_lsf_parameters
generates LSF parameters
from SOS generators

replaces

Secondary Builder LSF


Large-Scale-Parameters
SCENPAR
Scenario-parameters replaces

gen_ssf_parameters
SOS gen_lsf_from_ssf
Random Generators generates SSF parameters
from LSF parameters calculates the LSF
(and SOS generators in case parameters from
LSF of non-3GPP-baseline scenario) SSF parameters
Large-Scale-Parameters

add_paths replaces
adds clusters from
a second builder SSF
to existing SSF Small-Scale-Parameters
appends
parameters
replaces

gen_fbs_lbs gen_ssf_from_scatterers
generates scatterer calculates the SSF
positions from parameters from
add_sdc SSF parameters scatterer positions
adds semi-
deterministac replaces
clusters to
the builder FBS / LBS
appends 3D - scatterer positions

Figure 5: Channel parameters and their transformations

Copyright: Fraunhofer Heinrich Hertz Institute 56


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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

Transmitter, receiver, and overall simulations settings


name Name of the ’qd builder’ object
simpar Overall simulations parameters for this builder. Handle of a ’qd simulation parameters’ object. See
Section 2.2.1
no freq Number of frequencies associated to the ’qd builder’ object (read-only property). Note that
’qd builder.get channels’ can only process a single frequency. Use ’qd builder.split multi freq’
to split the builder into multiple builders - one for each frequency - after generating parameters.
no rx positions Number of receiver positions associated to this ’qd builder’ object (read-only property). Note that
each segment in longer tracks is considered a new Rx position.
dual mobility Indicates if the builder is a dual-mobility builder (-1 = unknown).
Note: The method ’qd builder.check dual mobility’ checks if dual-mobility is required and if all
input parameters are complete. Missing parameters will be completed.
tx position The 3D transmitter (TX) positions in metric Cartesian coordinates.
Dimensions: [ 1,1 ] or [ 3, no rx positions ]
tx track Handles of ’qd track’ objects for each TX. This property is only required for dual-mobility simulations.
For single-mobility, it can be omitted. However, it is possible to change the TX antenna orientation
by setting ’tx track.orientation’ even for single-mobility scenarios.
Dimensions: [ ] or [ 1,1 ] or [ no freq, no rx positions ]. See Section 2.2.3.
tx array Transmit array antenna definitions. Handles of ’qd arrayant’ objects for each TX-RX-link.
Dimensions: [ 1,1 ] or [ no freq, no rx positions ]. See Section 2.2.2
rx positions The 3D receiver (RX) positions in metric Cartesian coordinates. This variable is obtained from the
properties ’qd track.initial position’ or ’qd layout.rx position’.
Dimensions: [ 3, no rx positions ]
rx track Handles of ’qd track’ objects for each RX. Dimensions: [ ] or [ no freq, no rx positions ].
See Section 2.2.3
rx array Receive array antenna definitions. Handles of ’qd arrayant’ objects for each TX-RX-link.
Dimensions: [ no freq, no rx positions ]. See Section 2.2.2
Scenario parameters (SCENPAR)
scenario Name of the scenario (text string)
scenpar The parameter table. See Section 2.5
plpar Parameters for the path loss. See Section 2.5
lsp vals The distribution values of the LSPs (extracted from scenpar)
lsp xcorr The Cross-correlation matrix for the LSPs
lsp xcorr chk Indicator if cross-correlation matrix is positive definite
Sum-of-sinusoids random generators (SOS)
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
gr sos The SOS generator for the ground permittivity
absTOA sos The SOS generator for absolute time-of-arrival offset

Copyright: Fraunhofer Heinrich Hertz Institute 57


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

subpath coupling A list of random number used to determine for the mutual coupling of subpaths at the Tx and Rx.
The dimensions correspond to the angle (AoD, AoA, EoD, EoA), the path index and the number of
frequencies.
Large-Scale-Parameters (LSF)
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
absTOA offset The absolute time-of-arrival offset in [s]
All large-scale parameters have dimensions: [ no freq, no rx positions ]
Small-Scale-Parameters (SSF)
NumClusters The number of clusters, including LOS and ground-reflection (optional) paths.
NumSubPaths The number of sub-paths for each cluster. Note that the LOS path is always present in QuaDRiGa
and it can only have one subpath. Dimensions: [ 1, NumClusters ]
taus The delays for each cluster in [s] relative to the LOS delay (i.e. the first delay is always zero).
Dimensions: [ no rx positions, NumClusters ]. If the scenario parameters define a value for
PerClusterDS gamma, i.e. a frequency-dependence for the cluster-DS, the dimensions are
[ no rx positions, NumClusters, no freq ]
gain The absolute path-gain for each cluster (linear values). This variable combines the normalized cluster-
powers pow, the scenario-dependent total path gain given by plpar and the shadow fading sf. Changes
made to gain will simultaneously adjust pow and sf.
Dimensions: [ no rx positions, NumClusters, no freq ]
pow The normalized cluster-powers (squared average amplitude) for each cluster. The sum over all clusters
is 1. Changes made to pow will simultaneously adjust the absolute path-gain.
Dimensions: [ no rx positions, NumClusters, no freq ]
AoD The azimuth of departure angles for each path in [rad].
AoA The azimuth of arrival angles for each path in [rad].
EoD The elevation of departure angles for each path in [rad].
EoA The elevation of departure angles for each path in [rad].
All angles have dimensions: [ no rx positions, NumClusters ]
xprmat The complex-valued polarization transfer matrix describing the polarization change during scattering.
The four values of the first dimension correspond to polarization matrix index ’[1 3 ; 2 4]’.
Dimensions: [ 4, no paths, no rx positions, no freq ]
pin The initial phases in [rad] for each sub-path. Dimensions: [ no rx positions, no paths, no freq ]
Scatterer positions (FBS / LBS)
fbs pos The positions of the first-bounce scatterers in 3D Cartesian coordinates.
lbs pos The positions of the last-bounce scatterers in 3D Cartesian coordinates.
All have dimensions: [ 3, no paths, no rx positions, no freq ]

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.

Copyright: Fraunhofer Heinrich Hertz Institute 58


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

h bld = add paths ( parameters )


Calling object Object array
Description Adds multipath components to an existing channel builder
This method can be used to construct a ’qd builder’ object or object array in which the multipath
components (MPCs) are a combination of several different scenario configurations. This is achieved
by first creating a ’qd builder’ object array which contains the TX and RX positions, trajectories
and antenna configurations (e.g., by calling ’qd layout.init builder’). Then, MPCs can be added
to the builder by calling ’add paths’ multiple times, each time providing a different set of propagation
’parameters’. The input variable ’parameters’ can have different formats (see below).
Depending on the LOS/NLOS/GR state of the calling ’h builder’ and the provided ’parameters’, the
order in which the paths are added leads to different results as follows:
Effects 1. ’h builder’ has no existing paths
New paths are generated as defined by the provided ’parameters’ and written to ’h builder’. LSF
parameters in ’h builder’ are calculated from the generated paths, but the SOS generators that were
used to create the new paths are not written to ’h builder’.
2. ’h builder’ has only NLOS paths (KF < -30 dB) and ’parameters’ are for NLOS only
Existing paths in ’h builder’ are not changed. New paths are generated and added to ’h builder’.
LSF parameters in ’h builder’ are updated to match the combined channel.
3. ’h builder’ has a LOS path (KF > -30 dB) and ’parameters’ are for NLOS only
Existing paths in ’h builder’ are not changed. New paths are generated and added to ’h builder’.
LSF parameters in ’h builder’ are updated.
4. ’h builder’ has only NLOS paths and ’parameters’ are for a LOS scenario
Existing NLOS paths in ’h builder’ are not changed. New paths (including a LOS path) are generated
and added to ’h builder’. LSF parameters in ’h builder’ are updated. The combined channel will
describe a LOS scenario.
5. ’h builder’ has a LOS path and ’parameters’ are for a LOS scenario
Existing NLOS paths in ’h builder’ are not changed. New paths (including a LOS path) are generated
and added to ’h builder’. The existing LOS path in ’h builder’ will be overwritten by the newly
created LOS path. LSF parameters in ’h builder’ are updated. The combined channel will describe a
LOS scenario.
6. ’parameters’ contain a ground-reflection (GR) path
An GR path (second cluster in the cluster list) will be added to ’h builder’. The existing LOS and
(optional GR) paths will be overwritten by the newly created LOS and GR paths. LSF parameters in
’h builder’ are updated. The combined channel will describe a LOS+GR scenario.
7. ’h builder’ has a LOS and a GR path and ’parameters’ are for a LOS scenario only
The LOS component will be overwritten by the newly created LOS path, the GR path will be removed.
LSF parameters in ’h builder’ are updated. The combined channel will describe a LOS scenario.
Input parameters Scenario definition for the added paths. This variable can have 4 formats:
1. Variable is not given or empty (e.g. ’parameters = []’)
Uses the scenario definitions from the calling ’h builder’ object or object array.
If there are no preexisting MPCs in ’h builder’, the output of ’add paths’ will be
equivalent to calling ’gen parameters’. Existing SOS random generators will be
reused, missing ones will be created. Existing LSF parameters will be discarded.
Preexisting SSF parameters and scatterer positions will not be changed.
2. String containing the parameter name
Loads the corresponding scenario parameters (e.g., from a ’.conf’ file) into a new
’qd builder’ object; copies the TX and RX positions from the calling ’h builder’
object or object array into the new builder; generates SOS generators, LSF and
SSF parameters and adds the new paths to ’h builder’.
3. A single ’qd builder’ object
Uses the provided ’qd builder’ object to generate the new paths. It is possible to
edit the ’scenpar’ or ’plpar’ properties, pre-initialize the SOS generators or provide
specific LSPs. The ’add paths’ method then copies the TX and RX positions from
the calling ’h builder’ object or object array into the new builder; generates SSF
parameters and adds the new paths to ’h builder’.

Copyright: Fraunhofer Heinrich Hertz Institute 59


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

4. A ’qd builder’ object array


The TX and RX positions in the ’qd builder’ array must match the positions in the
calling ’h builder’ object or object array (e.g., by providing a copy of ’h builder’).
It is possible to edit the scenario parameters, SOS generators and LSPs on a per-
user basis. Provided SSF parameters will be discarded. The ’add paths’ method
then generates SSF parameters and adds the new paths to ’h builder’.
Output h bld The ’qd builder’ object array that was used to generate the new paths.

add sdc ( pos rel, pow dB, pos reference, pow reference, xpr dB, sdc radius, NumSubPaths, distance, azimuth, elevation )
Calling object Object array
Description Adds semi-deterministic clusters to the channel builder
Semi-deterministic clusters (SDCs) are clusters that have a specific position relative to a defined refer-
ence position and power relative to a defined reference power. The reference position can be selected
by the input variable ’pos reference’. The reference power can be selected by the input variable
’pow reference’.
SDCs are added to all TX-RX links of the calling channel builder object or object array. If you want
to add SDCc only to a specific link or set of links, you can use ’split rx’ to obtain separate builders
for each link. If you want to combine SDCs with other stochastic paths, you must call ’add sdc’ last,
i.e. after calling ’add paths’ or ’gen parameters’. SDCs are added to the builder after the LOS and
GR path, before the NLOS clusters.
Position ref. absolute The SDCs are placed relative to the origin of the global Cartesian coordinate
system. As a consequence, all links ”see” the same SDCs.
rx abs The SDCs are placed relative to each RX position (i.e., the initial position of each
track segment). The RX orientation is not taken into account.
rx heading The SDCs are placed relative to each RX position (i.e., the initial position of
each track segment). The RX orientation is taken into account, but only for the
”heading” direction (i.e., the 3rd row of ’rx track.orientation’). The SDCs
elevation is set relative to the ground.
rx full The SDCs are placed relative to each RX position (i.e., the initial position of each
track segment). All components (bank-angle, tilt-angle and heading-angle) of the
RX orientation defined by ’rx track.orientation’ are taken into account.
tx abs The SDCs are placed relative to each TX position (i.e., the initial position of each
track segment). The TX orientation is not taken into account.
tx heading The SDCs are placed relative to each TX position (i.e., the initial position of
each track segment). The TX orientation is taken into account, but only for the
”heading” direction (i.e., the 3rd row of ’tx track.orientation’). The SDCs
elevation is set relative to the ground.
tx full The SDCs are placed relative to each TX position (i.e., the initial position of each
track segment). All components (bank-angle, tilt-angle and heading-angle) of the
TX orientation defined by ’tx track.orientation’ are taken into account.
los rx The SDCs are placed relative to the LOS path originating at the RX going towards
the TX. Small offset positions place the SDCs closer to the RX.
los tx The SDCs are placed relative to the LOS path originating at the TX going towards
the RX. Small offset positions place the SDCs closer to the TX.
Power ref. freespace The SDCs power is defined relative to the free-space-power calculated from the
TX-RX distance (in units of [dB]).
absolute The SDCs power is defined relative to the TX power in [dB].
pathloss The SDCs power is defined relative to the path-loss defined by the ’qd builder’
object to which the SDC is added (in units of [dB]).
Input pos rel A [ 3 x L ] matrix containing the SDCs Cartesian [x;y;z] positions relative to
the reference position in meters. If this variable is empty, the input variables
’distance’, ’azimuth’ and ’elevation’ are used to compute the SDC positions
from Geographic coordinates. L is the number of SDCs that are added to the
builder.

Copyright: Fraunhofer Heinrich Hertz Institute 60


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

pow dB A [ 1 x L ] column vector or scalar variable containing the power values of the
SDCs relative to the reference power.
pos reference A string defining the reference position of the SDC. Default: ’absolute’.
pow reference A string defining the reference power of the SDC. Default: ’freespace’.
xpr dB A scalar variable or [ 1 x L ] column vector containing the XPR values of the SDCs.
By default (i.e., if this variable is empty or not given), the XPR values are drawn
from distributions defined by the scenario parameters in each builder.
sdc radius A scalar variable or [ 1 x L ] column vector containing the effective radius of the
SDC in [meters]. SDCs are approximated by a finite number of specular paths. The
distribution of the paths is determined by the scenario parameter ’SubpathMethod’
which is set by the calling ’qd builder’ object.
NumSubPaths A scalar variable or [ 1 x L ] column vector defining the number of sub-paths that
are used to approximate the SDCs by individual paths. By default, one subpath
is used if ’sdc radius’ is 0 (point source) and 20 sub-paths are used otherwise.
distance This variable is only used if ’pos rel’ is empty. It is given as a scalar variable
or [ 1 x L ] column vector defining the distances between the reference position
(RX or TX) and the SDC. For absolute reference positions, the origin of the global
Cartesian coordinate system is used as reference.
azimuth This variable is only used if ’pos rel’ is empty. It is given as a scalar variable
or [ 1 x L ] column vector defining the azimuth angles of the SDCc (AoD for TX
reference, AoA for RX reference) in [rad]. By default, random angles are drawn
from the azimuth angle spread defined in ’qd builder.scenpar’ (if ’pos rel’ is
empty, ’distance’ is given and ’azimuth’ is empty).
elevation This variable is only used if ’pos rel’ is empty. It is given as a scalar variable or
[ 1 x L ] column vector defining the elevation angles of the SDCc (EoD for TX
reference, EoA for RX reference) in [rad]. By default, random angles are drawn
from the elevation angle spread defined in ’qd builder.scenpar’ (if ’pos rel’ is
empty, ’distance’ is given and ’elevation’ is empty).

isdual = check dual mobility ( show warnings )


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.
Input show warnings If set to true (default), ’qd builder.check dual mobility’ performs a set of tests
to determine if all provided input variables are correctly initialized. This can be
disabled by setting ’show warnings = 0’.
Output isdual A logical array indicating for each builder if dual-mobility processing is required
(true) or if single-mobility processing is done (false).

Copyright: Fraunhofer Heinrich Hertz Institute 61


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

isLOS = check los ( threshold )


Calling object Object array
Description Checks for the LOS and GR paths
This method checks if the ’qd builder’ object has a line-of-sight (LOS) path and a ground-reflection
(GR) path. This is done by calculating the delays and the departure and arrival angles of the LOS
and GR path from the TX and RX positions. Then, the provided delays and angles in the small-scale-
fading (SSF) parameters ’qd builder.taus’, ’qd builder.AoD’, ’qd builder.AoA’, ’qd builder.EoD’,
and ’qd builder.EoA’ are compared to the values obtained from the positions to determine if the LOS
or GR paths are present. Since QuaDRiGa requires that the LOS path is always included in the
calculations, a virtual zero-power LOS path is added to the list of paths if there is no LOS path found.
Input threshold The minimum Ricean K-Factor in [dB] for the LOS detection. For values below
this threshold, the output ’isLOS’ will be 0 even if there is a LOS path included in
the path-list. Default threshold: -30 dB.
Output isLOS Indicator of the LOS state of the builder with the following values:
• isLOS = -2
The ’qd builder’ object has no RX positions associated to it.
• isLOS = -1
The ’qd builder’ object has RX positions, but the SSF parameters were
not initialized.
• isLOS = 0
All TX-RX links in the builder are NLOS (i.e., the KF obtained from the
path gains is below the ’threshold’).
• isLOS = 1
There is at least one TX-RX link in the builder that is LOS (i.e., the KF
obtained from is above the ’threshold’).
• isLOS = 2
There is at least one TX-RX link in the builder that is LOS and the second
cluster of all TX-RX links is the GR path (i.e., its delays and angles match
to the theoretic GR path-delays and angles).
• isLOS = 3
There is a GR path in the builder (i.e., delays and angles of the second
cluster match to the theoretic GR path-delays and angles), but there is no
LOS link.

h builder = qd builder.gen cdl model ( cdl model, center frequency, mobile speed, duration, ds, kf, asd, asa, esd, esa,
cas factor, sample density )
Calling object None (static method)
Description Generates channel models for link-level evaluations (TDL and CDL)
This method creates a ’qd builder’ object that can be used to generate 3GPP compliant standardized
channels for link-level evaluations. The models are defined for the full frequency range from 0.5 GHz
to 100 GHz with a maximum bandwidth of 2 GHz. All models can be scaled in delay.
Clustered Delay Line (CDL) models define arrival and departure directions per cluster. The angle
values of CDL models are fixed, which is not very suitable for MIMO simulations for several reasons;
The PMI statistics can become biased, and a fixed precoder may perform better than open-loop and
on par with closed-loop or reciprocity beamforming. Furthermore, a CDL only represents a single
channel realization. The predefined angle values in the CDL models can be generalized by introducing
angular translation and scaling. Scaling can be achieved by providing custom angular spread values
’asd’, ’asa’, ’esd’, ’esa’. Translation can be achieved by changing the position of the terminal in the
generated ’qd builder’ object. Spatial filter (antenna patterns) can be applied on a CDL to derive a
TDL for evaluating directional algorithms. This is done by providing either a ’qd builder.tx array’
or ’qd builder.rx array’ object or both. Array broadside direction must face east.

Copyright: Fraunhofer Heinrich Hertz Institute 62


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

Tapped Delay Line (TDL) models are used tor simplified evaluations, e.g., for non-MIMO evalu-
ations. The Doppler spectrum for each tap is characterized by a classical (Jakes) spectrum shape and
a maximum Doppler shift fD = v/λ. Due to the presence of a LOS path, the first tap in NR-TDL-D
and NR-TDL-E follows a Ricean fading distribution. For those taps the Doppler spectrum additionally
contains a peak at the Doppler shift fS = -0.7 fD with an amplitude such that the resulting fading
distribution has the specified K-factor. This is equivalent to a MT moving away from the BS at a 45
degree angle.
The following list of models is currently supported:
Models EPA-TDL 3GPP TS 36.104 V16.5.0 p250, Table B.2-1 Extended Pedestrian A model
EVA-TDL 3GPP TS 36.104 V16.5.0 p250, Table B.2-2 Extended Vehicular A model
ETU-TDL 3GPP TS 36.104 V16.5.0 p250, Table B.2-3 Extended Typical Urban model
NR-CDL-A 3GPP TR 38.901 V16.1.0 (2019-12) p74, Table 7.7.1-1. CDL-Model for NLOS
NR-CDL-B 3GPP TR 38.901 V16.1.0 (2019-12) p75, Table 7.7.1-2. CDL-Model for NLOS
NR-CDL-C 3GPP TR 38.901 V16.1.0 (2019-12) p75, Table 7.7.1-3. CDL-Model for NLOS
NR-CDL-D 3GPP TR 38.901 V16.1.0 (2019-12) p76, Table 7.7.1-4. CDL-Model for LOS
NR-CDL-E 3GPP TR 38.901 V16.1.0 (2019-12) p76, Table 7.7.1-5. CDL-Model for LOS
NR-TDL-A 3GPP TR 38.901 V16.1.0 (2019-12) p77, Table 7.7.2-1. TDL-Model for NLOS
NR-TDL-B 3GPP TR 38.901 V16.1.0 (2019-12) p77, Table 7.7.2-2. TDL-Model for NLOS
NR-TDL-C 3GPP TR 38.901 V16.1.0 (2019-12) p78, Table 7.7.2-3. TDL-Model for NLOS
NR-TDL-D 3GPP TR 38.901 V16.1.0 (2019-12) p78, Table 7.7.2-4. TDL-Model for LOS
NR-TDL-E 3GPP TR 38.901 V16.1.0 (2019-12) p79, Table 7.7.2-5. TDL-Model for LOS
V2X-CDL- 3GPP TR 37.885 V15.3.0 (2019-06) p32, Table 6.2.3.1-1. CDL model for Urban
UrbanLOS LOS V2X channel
V2X-CDL- 3GPP TR 37.885 V15.3.0 (2019-06) p32, Table 6.2.3.1-2. CDL model for Urban
UrbanNLOS NLOS V2X channel
V2X-CDL- 3GPP TR 37.885 V15.3.0 (2019-06) p33, Table 6.2.3.1-3. CDL model for Urban
UrbanNLOSv NLOSv V2X channel
V2X-CDL- 3GPP TR 37.885 V15.3.0 (2019-06) p33, Table 6.2.3.1-4. CDL model for Highway
HighwayLOS LOS V2X channel
V2X-CDL- 3GPP TR 37.885 V15.3.0 (2019-06) p34, Table 6.2.3.1-5. CDL model for Highway
HighwayNLOSv NLOSv V2X channel
Input cdl model String selecting the TDL/CDL model
center frequency The center frequency in [Hz]
mobile speed The mobile speed in [m/s]
duration The channel observation time in [s]
ds The desired RMS delay spread in [ns] (optional)
kf The Ricean K-Factor in [dB] (optional)
asd The azimuth-of-departure angular spread in [deg] (optional)
asa The azimuth-of-arrival angular spread in [deg] (optional)
esd The elevation-of-departure angular spread in [deg] (optional)
esa The elevation-of-arrival angular spread in [deg] (optional)
cas factor Scaling factor for the per-cluster angular spreads (optional, default = 1)
sample density The number of samples per half-wave length, Default: 2.5
Output h builder Handle to the created ’qd builder’ object

Copyright: Fraunhofer Heinrich Hertz Institute 63


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

gen fbs lbs ( usage )


Calling object Object array
Description Generates the positions of the FBS and the LBS
This method calculates the positions of the first-bounce scatterer (FBS) and the last-bounce-scatterer
(LBS) in 3D Cartesian coordinates. This is done by splitting each path into two bounces and mimizing
the distance between FBS and LBS. If resulting optimization problem has no solution, a single-bounce
model is used where FBS = LBS. The generation of scatterer positions requires that the LSF parameters
are initialized first. The output of this method is written to the object properties.
Scatterer pos. fbs pos The positions of the first-bounce scatterers in 3D Cartesian coordinates
lbs pos The positions of the last-bounce scatterers in 3D Cartesian coordinates
Input usage Controls the behavior of the method: If set to 0, all existing LSF parameters will
be discarded and the method exits. By default (1), new LSF parameters will be
created, existing ones will be replaced. It set to 2, existing LSF parameters will be
reused and missing ones will be created.

gen lsf from ssf ( ignore gr )


Calling object Object array
Description Calculates the LSF parameters from existing SSF parameters
This method uses pre-initialized small-scale-fading parameters (SSPs), i.e., taus, gain, AoD, AoA, EoD,
EoA, xprmat, and calculates the corresponding large-scale-fading parameters (LSPs), i.e., ds, kf, sf,
asD, asA, esD, esA, xpr, and gr epsilon r. In general, the method ’qd builder.gen ssf parameters’
tries to map the given LSPs to SSPs as closely as possible. However, there are limits, e.g., angular
spreads cannot be larger than 180°. This method can therefore be used to obtain the true LSPs that
can be derived from the generated paths. The output of this method is written to the object properties.
Existing LSPs are overwritten.
Input ignore gr Boolean variable that enables (default) or disables the calculation of the ground
reflectivity gr epsilon r. By default, ’gen lsf from ssf’ checks if the second path
matches the ground reflection delay and angles. If so, the method attempts to
calculate the ground reflectivity from the polarization transfer matrix. This can
be disabled by setting ’ignore gr = 0’. An existing value of gr epsilon r will not
be overwritten in this case.

gen lsf parameters ( usage, show warnings )


Calling object Object array
Description Generates the large-scale-fading parameters for all terminals and frequencies
This method generates 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. The LSF parameters require that the SOS ran-
dom generators are initialized first. Hence, you need to call ’qd builder.init sos’ before calling
’qd builder.gen lsf parameters’. The output of this method is written to the object properties.
LSF parameters ds The RMS delay spread in [s]
kf The Ricean K-Factor [linear scale]
sf The shadow fading [linear scale]
asD The azimuth spread of departure in [deg]
asA The azimuth spread of arrival in [deg]
esD The elevation spread of departure in [deg]
esA The elevation spread of arrival in [deg]
xpr The cross polarization ratio [linear scale]
gr epsilon r The relative permittivity for the ground reflection (optional)
absTOA offset The absolute time-of-arrival offset in [s] (optional)
Input usage Controls the behavior of the method: If set to 0, all existing LSF parameters will
be discarded and the method exits. By default (1), new LSF parameters will be
created, existing ones will be replaced. It set to 2, existing LSF parameters will be
reused and missing ones will be created.
show warnings If set to true (default), ’qd builder.gen lsf parameters’ performs a set of tests
to determine if all provided input variables are correctly initialized. This can be
disabled by setting ’show warnings = 0’.

Copyright: Fraunhofer Heinrich Hertz Institute 64


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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 parameters
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" or
”qd builder.simpar.autocorrelation function = ’Disable’.”.
4. Calculates the positions of the scatterers.

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.
• usage = 5
Keeps all existing parameters and creates new parameters only if they are
missing.

gen ssf from scatterers


Calling object Object array
Description Calculates the SSF parameters from existing FBS and LBS positions
This method uses pre-initialized first-bounce (FBS) and last-bounce scatterer (LBS) positions to calcu-
late the corresponding small-scale-fading parameters (SSPs), i.e., taus, AoD, AoA, EoD, EoA. In general,
the method ’qd builder.gen fbs lbs’ tries to map the given SSPs to scatterer positions by minimiz-
ing the distance between FBS and LBS. However, the resulting optimization problem might have no
solution. In this case, the mapping changes the departure angles. This method can therefore be used
to obtain the true SSPs that can be derived from the scatterer positions. The output of this method is
written to the object properties. Existing SSPs are overwritten.

Copyright: Fraunhofer Heinrich Hertz Institute 65


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

gen ssf parameters ( usage, show warnings )


Calling object Object array
Description Generates the small-scale-fading parameters for all terminals and frequencies
This method generates the small-scale-fading parameters for each user position. Those parame-
ters are needed by the channel builder to calculate the positions of the scattering clusters for each
track or segment which are then evolved into time varying channels. The SSF parameters require
that the SOS random generators are initialized first and that the LSF parameters are initialized.
Hence, you need to call ’qd builder.init sos’ and ’qd builder.gen lsf parameters’ before calling
’qd builder.gen ssf parameters’. The output of this method is written to the object properties.
SSF parameters NumClusters The number of clusters, including LOS and ground-reflection
NumSubPaths The number of sub-paths for each cluster. Dimensions: [ 1, NumClusters ]
taus The delays for each cluster in [s] relative to the LOS delay
gain The absolute path-gain for each cluster (linear values)
pow The normalized cluster-powers (squared average amplitude) for each cluster
AoD The azimuth of departure angles for each path in [rad]
AoA The azimuth of arrival angles for each path in [rad]
EoD The elevation of departure angles for each path in [rad]
EoA The elevation of departure angles for each path in [rad]
xprmat The complex-valued polarization transfer matrix for each sub-path
pin The initial phases in [rad] for each sub-path
Input usage Controls the behavior of the method: If set to 0, all existing SSF parameters will
be discarded and the method exits. By default (1), new SSF parameters will be
created, existing ones will be replaced. It set to 2, existing SSF parameters will be
reused and missing ones will be created.
show warnings If set to true (default), ’qd builder.gen ssf parameters’ performs a set of tests
to determine if all provided input variables are correctly initialized. This can be
disabled by setting ’show warnings = 0’.

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]

Copyright: Fraunhofer Heinrich Hertz Institute 66


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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.
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’.

Copyright: Fraunhofer Heinrich Hertz Institute 67


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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.
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 ( usage )


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”, ”path sos”, ”xpr sos”, ”pin sos”, and ”clst dl sos”, ”gr sos”,
and ”absTOA sos”. Once initialized, the ”qd builder” object will generate identical parameters and
channels. Note that this does not work for 3GPP baseline simulations.
Input usage Controls the behavior of the method: If set to 0, all existing SOS generators will
be discarded and the method exits. By default (1), new SOS generators will be
created, existing ones will be replaced. It set to 2, existing SOS generators will be
reused and missing ones will be created.

Copyright: Fraunhofer Heinrich Hertz Institute 68


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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

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, 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 depen-
dent averages and variances still apply. If you call ”gen lsf parameters” and ”gen ssf parameters” before
”split multi freq”, then SSF will also be 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 serves one fre-
quency.

h builder out = split rx


Calling object Object array
Description Split the builder objects into single builders for each rx location
The method ”split rx” separates the builder objects so that each builder creates channels for only one rx
location. If you call ”split rx” before any LSF and SSF parameters are generated, then LSF parameters
(e.g. SF, DS, AS) will be uncorrelated for each user. If you call ”gen lsf parameters” before ”split rx”,
then all LSF parameters will be fully correlated. If you call ”split rx” and ”gen ssf parameters” before
”split rx”, then SSF will also be correlated.
Output h builder out An array of ”qd builder” objects where where each builder only serves one RX.

[ 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

Copyright: Fraunhofer Heinrich Hertz Institute 69


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

write conf file ( fn, write defaults, ref, ref sec, valid range )
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.
ref String containing the literature reference of the parameters
ref sec Reference for each section; Cell-Array containing 8 strings
valid range A 4x2 matrix containing the validity range of the parameters (to be written as
text into the conf file). The first row is for the frequency in GHz, the second row
contains the distance in m, the third row the allowed BS antenna height and the
fourth row contains the allowed MT height in m. The first column is for the lower
range, the second for the upper range. Entering NaN into a row prevents the writing
of that row to the file.

Copyright: Fraunhofer Heinrich Hertz Institute 70


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

2.2.7 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

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]

Copyright: Fraunhofer Heinrich Hertz Institute 71


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

[ 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]

[ 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)

Copyright: Fraunhofer Heinrich Hertz Institute 72


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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

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

Copyright: Fraunhofer Heinrich Hertz Institute 73


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

[ 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

[ 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

Copyright: Fraunhofer Heinrich Hertz Institute 74


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

remove bias ( ca, cb )


Calling object Single object
Description Removes the bias from the SOS generator for the given set of positions and SOS phases
There is a possibility that an ill-adjusted set of SOS phases causes a bias for a given set of positions.
The resulting random variable is then not Normal-distributed with zero mean and unit variance, but
with a (small) non-zero mean. This can propagate to later processing steps that depend on the random
variables. The bias can be removed by adding an offset to the phases of the SOS generator that forces
the mean to be zero for a set of given positions. However, this operation is computing-intense since it
uses an iterative approach to calculate the phase offset.
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”.

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

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”.
ph Different phase offsets for the SOS generators (optional)
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.

Copyright: Fraunhofer Heinrich Hertz Institute 75


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

2.2.8 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.
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).

Copyright: Fraunhofer Heinrich Hertz Institute 76


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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

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


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 sub-carrier positions. There are two options:
1. Specify the total number of sub-carriers. In this case, ’carriers’ a scalar
natural number > 0. The sub-carriers are then equally spaced over the
bandwidth. The first entry of the generated spectrum is equal to the center
frequency f0. The spectrum is generated from f0 to f0+bandwidth.
2. Specify the sub-carrier positions. In this case, ’carriers’ is a vector of sub-
carrier positions relative to the bandwidth. The carrier positions are given
relative to the bandwidth where ’0’ is the begin of the spectrum (i.e., the
center frequency f0) and ’1’ is equal to f0+bandwidth. To obtain the channel
frequency response centered around f0, the input variable ’carriers’ must
be set to ’(-N/2:N/2)/N’, where N is the number of sub-carriers.

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.
use gpu Enables or disables (default) GPU acceleration. This requires a compatible GPU
and the ”Parallel Computing Toolbox” for MATLAB. In Octave, GPU acceleration
is available through the ”ocl”-package (https://octave.sourceforge.io/ocl).

Copyright: Fraunhofer Heinrich Hertz Institute 77


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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’.

[ h channel, dims ] = qd channel.mat load ( filename, rowInd, colInd, d3Ind, d4Ind, usage )
Calling object None (static method)
Description Load data from specially formatted MAT-file.
QuaDRiGa can store the generated channels in a specially formatted MAT file. The static method
mat load allows access to these stored channels. In MATLAB, it is possible to speed up the loading
process by only loading part of the file. However, in Octave, this this is not recommended, because
Octave always loads the entire file each time the method is called. There are several options for using
this method:
Examples h channel = qd channel.mat load( filename )
”rowInd” (and also ”colInd”, ”d3Ind” and ”d4Ind”) are not given. Hence, only the filename is provided.
In this case, mat load reads the complete file with all stored channels. If the file is very big, this will
require significant loading time and memory since all stored objects are decompressed.
[∼, dims] = qd channel.mat load( filename, 0 )
“rowInd” is set to “0” and no further parameters are given. In this case, no channels will be loaded
and h channel will returned as an empty array. However, the output variable dims will contain the
dimensions of the stored channel objects. (Not recommended in Octave!)
h channel = qd channel.mat load( filename, rowInd )
”rowInd” is a scalar integer number between 1 to 65535 or a vector of integer numbers and no further
parameters are given. In this case, the selected channels are returned. The numbering scheme is the
same as in MATLAB, so you can use the MATLAB function ”sub2ind” to determine which objects to
load. (Not recommended in Octave!)
h channel = qd channel.mat load( filename, rowInd, colInd, ... )
”rowInd” and ”colInd” (and optional ”d3Ind” and ”d4Ind”) are given. Provided that the channel
objects are stored as a matrix in the HDF5 file, you can select the rows and columns to load. For
example, if the rows represent the receiver index and the columns represent the transmitter index, you
can use “h channel = channel.mat load( filename, 2:3, 4 )” to load the channels for Tx4-Rx2 and
Tx4-Rx3. A 2x1 array of channel objects will be returned. (Not recommended in Octave!)

Copyright: Fraunhofer Heinrich Hertz Institute 78


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

h channel = qd channel.mat load( filename, [], colInd, ... )


”rowInd” is empty (i.e. “[]”) and ”colInd” (and optional ”d3Ind” and ”d4Ind”) are given. In this case,
all rows for the given ”colInd” are returned. For example, if the rows represent the receiver index and
the columns represent the transmitter index, you can use “h channel = channel.mat load( filename,
[], 4 )” to load the channels for all receivers belonging to Tx4. (Not recommended in Octave!)
h channel = qd channel.mat load( filename, [], [], [], [], ’par’ )
Only the values stored in the ”par”-field are loaded. No channel coefficients are loaded from the file.
This speeds up the loading procedure, if only results are needed. (Not recommended in Octave!)
Input filename The path to the MAT file which contains the stored channel data.
rowInd This is an optional parameter which can be used for loading only parts of the file.
See description for details.
colInd The index of the columns of the channel objects which are loaded from the file.
This variable is only used if ”rowInd” is given. ”colInd” can also be empty. In this
case, all columns are returned (same as case 5 above).
d3Ind The index of the 3rd dimension of the channel objects which are loaded from the
file. This variable is only used if ”rowInd” and ”colInd” are given.
d4Ind The index of the 4th dimension of the channel objects which are loaded from the
file. This variable is only used if ”rowInd”, ”colInd” and ”d3Ind” are given.
usage It set to ”par”, only evaluation results are loaded and the channel coefficients are
skipped.
Output h channel An array of ’qd channel’ objects
dims The dimensions of the stored channel objects

mat save ( filename, version )


Calling object Object array
Description Save qd channel object array to a mat-file
Input filename Name of file, specified as a character vector or string scalar
version MAT-file version. Default is ”-v6”

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.
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.

Copyright: Fraunhofer Heinrich Hertz Institute 79


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

h channel quant = quantize delays ( tap spacing, max no taps, i rxant, i txant, fix taps, 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
max no taps Limits the maximum number of taps. By default, this number is infinite. If the
input is provided, a mapping of paths to taps is done. If the maximum number of
taps is too small to export all paths, only the paths with the strongest power are
exported. Interpolation is done whenever possible, i.e., when there are sufficient
taps.
i rxant A list of receive element indices. By default, all elements are exported.
i txant A list of transmit element indices. By default, all elements are exported.
fix taps An integer number from 0 to 3, indicating if same delays should be used for different
antennas or snapshots. The options are:
0 Use different delays for each tx-rx pair and for each snapshot (default)
1 Use same delays for all antenna pairs and snapshots (least accurate)
2 Use same delays for all antenna pairs, but different delays for the snapshots
3 Use same delays for all snapshots, but different delays for each tx-rx pair

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 rx ( varargin )


Calling object Object array
Description Splits channel arrays based on receive antenna indices.
This function can be used to split large receive array antennas into smaller arrays. Example: A channel
array has channels from three base stations to three mobile terminals (MTs). However, the MT antennas
are merged into one array. To split the channels, the following command can be used:
cs = c.split rx( {1:2,3:4,5,6} );
Notes:
• The method parses the name-string of the channel objects qd 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 ”Rx01”, the second to ”Rx02” and so on. This is independent of the order in
”qd layout.rx name”, which might have a different order.
• If only one cell is given as input, but there are several RXs in the channel array, the same splitting
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 * SPLT, Tx ]

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


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

Copyright: Fraunhofer Heinrich Hertz Institute 80


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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

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 tx( {1:2,3:4}, {1:2,3:4}, {1:2} );
Notes:
• The method parses the name-string of the channel objects qd 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

swap tx rx ( swap coeff, swap pos, swap name, swap par )


Calling object Object array
Description Swaps the TX and RX
This method exchanges the transmitter and and the receiver, e.g. for transforming an uplink channel
into a downlink channel. This includes transposing coefficient and delay matrix, exchanging the names
of the TX and RX in the channel name string, exchanging the positions and changing the variable
names in the ”par” structure (e.g. to change AoA to AoD and vice-versa).
Input swap coeff If set to true (default), the channel coefficients and delay matrix are transposed.
swap pos If set to true (default), the tx and rx position are exchanged.
swap name If set to true (default), the channel name string is updated.
swap par If set to true (default), the variable names in ”par” are exchanged.

Copyright: Fraunhofer Heinrich Hertz Institute 81


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

2.2.9 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, ...]
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, resolved, RX beam, RX coeff, azimuth grid, elevation grid ] = qf.calc angles ( cf, h qd arrayant,
no subpath, range, use gpu, no chunk, 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 Channel coefficients; Size [ no rx, no tx, no path, no snap ]
h qd arrayant Receive antenna object; The number of elements must match [ no rx ]
no subpath Maximum number of sub-paths per path; Default: 1
range Allowed angle range in degree [ -el +el -az +az ]; Default: [-90 90 -180 180]
use gpu Enables or disables GPU acceleration
no chunk Number of snapshots that are processed in parallel; Default: 1
verbose Show the estimation progress; 0 = Disable, 1 = Show, 2 = Details
Output az Azimuth angles in [rad]; Size [ no tx, no path, no snap, no subpath ]
el Elevation angles in [rad], Size [ no tx, no path, no snap, no subpath ]
J Jones vectors, Size [ 2, no tx, no path, no snap, no subpath ]

Copyright: Fraunhofer Heinrich Hertz Institute 82


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

pow Power of the path without antenna pattern;


Size [ no tx, no path, no snap, no subpath ]
resolved Resolved spatial power; Size [ no tx, no path, no snap ]
RX beam MRC beam for all paths and sub-paths; Size [ no el, no az, no snap ]
RX coeff Reconstructed channel coefficients;
Size [ no rx, no tx, no path, no snap, no subpath ]
azimuth grid Azimuth sample angles of the MRC beam in [rad]; Size [ 1, no az ]
elevation grid Elevation sample angles of the MRC beam in [rad]; Size [ 1, no el ]

[ as, mean angle ] = qf.calc angular spreads ( ang, pow, wrap angles, quantize )
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)
quantize This parameter in units of [deg] (scalar value) can be used to group paths in the
angular domain. For example: The resolution of an array antenna might be 3
degrees. However, several paths might be estimated from different snapshots at
slightly different angles (e.g. one at 10 deg and another at 10.3 deg). Since the
angular difference (0.3 deg) is below the array resolution (3 deg), they might belong
to the same path. Thus, setting the angular quantization to 3 deg will sum up
the powers of the two paths and treat them as one. Default: 0 deg (all paths are
treated as independent)
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 ]

[ as, es, orientation, phi, theta ] = qf.calc angular spreads sphere ( az, el, pow, calc bank angle, quantize )
Calling object None (static method)
Description Calculates azimuth and elevation angular spreads with spherical wrapping
This method calculates the RMS azimuth and elevation angular spreads from a given set of angles. The
wrapping operation is done for spherical coordinates in the following way:
1. Calculate the power-weighted mean-angle in geographic coordinates
2. Apply the power-weighted mean-angle to the given ”az” and ”el” angles by a rotation operation
in 3D-Cartesian coordinates
3. Find the optimal bank angle such that the resulting azimuth angle spread is maximized and the
elevation angle spread is minimized
4. Apply the bank angle by a rotation operation in 3D-Cartesian coordinates
5. Calculate the RMS azimuth and elevation the angular spreads
Without spherical wrapping, the azimuth spread depends on the elevation spread. At the poles of the
sphere (e.g. if there are many paths arriving from above or below the receiver), a large azimuth spread
might be calculated despite the fact that energy is focused into a small surface-area of the sphere.
This is not considered by the default calculation method, which treats azimuth and elevation angles
independently. However, with spherical wrapping, the average angle is calculated such that the power-
weighted average always lies on the ”equator” of the geographic coordinate system. In this case the
obtained values for the azimuth and elevation spread more accurately reflect the power-distribution.
Input az A vector of azimuth angles in [rad] ranging from -π to π.
Dimensions: [ n ang x n path ]
el A vector of elevation angles in [rad] ranging from -π/2 to π/2.
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 ]

Copyright: Fraunhofer Heinrich Hertz Institute 83


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

calc roll angle A logical variable. If set to (1, default), the optimal roll angle is calculated such
that the azimuth angle spread is maximized and the elevation angle spread is
minimized. If set to 0, no roll angle is calculated.
quantize This parameter in units of [deg] (scalar value) can be used to group paths in the
angular domain. For example: The resolution of an array antenna might be 3
degrees. However, several paths might be estimated from different snapshots at
slightly different angles (e.g. one at 10 deg and another at 10.3 deg). Since the
angular difference (0.3 deg) is below the array resolution (3 deg), they might belong
to the same path. Thus, setting the angular quantization to 3 deg will sum up
the powers of the two paths and treat them as one. Default: 0 deg (all paths are
treated as independent)
Output as The RMS azimuth angular spread in [rad] for each angle vector.
Dimensions: [ n ang x 1 ]
es The RMS elevation angular spread in [rad] for each angle vector.
Dimensions: [ n ang x 1 ]
orientation This 3-element vector describes direction of the power-weighted mean-angle. 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. Dimensions: [ 3 x n ang ]
phi The rotated azimuth angles in [rad]. Dimensions: [ n ang x n path ]
theta The rotated elevation angles in [rad]. Dimensions: [ n ang x n path ]

[ 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”.
Input zrot Rotation angle around z-axis in [rad], Default = 0
yrot Rotation angle around y-axis in [rad], Default = 0
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, threshold, granularity )
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 ]

Copyright: Fraunhofer Heinrich Hertz Institute 84


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

threshold An additional threshold in [dB] (scalar value) for the path powers relative to the
strongest path. For example: with a threshold of 20 dB, paths having less than
1/100 of the power of the strongest path are not included in the calculation of the
DS. Default: Inf dB (all paths are used)
granularity This parameter in units of [s] (scalar value) can be used to group paths in delay
domain. For example: At a system bandwidth of 20 MHz the time resolution is
roughly limited to 50 ns. However, several paths might be estimated from different
antenna elements at slightly different delays (e.g. one at 110 ns and another at
113 ns). Since the delay difference (3 ns) is below the time resolution (50 ns), they
might belong to the same path. Thus, setting the granularity to 50 ns will sum
up the powers of the two paths and treat them as one. Default: 0 s (all paths are
treated as independent)
Output ds The RMS delay spread for each delay vector. Dimensions: [ n taus x 1 ]
mean delay The mean delay in [s]. Dimensions: [ n taus x 1 ]

[ xprL, xprC, cprL, cprC ] = qf.calc xpr ( xprmat )


Calling object None (static method)
Description Calculates the cross and co-polarization metrics from a given Jones matrix
QuaDRiGa uses Jones calculus to describe and model polarization effects. A polarized electromagnetic
wave is represented by a Jones vector, and interactions of that wave with the environment (transmission
through a medium, reflection, scattering, etc.) are represented by Jones matrices. Suppose that a
electromagnetic wave is traveling in the positive x-direction, then the electric and magnetic fields E and
H both lie in the plane ”transverse” to the direction of motion. Furthermore, H is determined from
E by 90-degree rotation, so the polarization of the wave can be determined by studying E. Thus, the
Jones vector represents the amplitude and phase of the electric field in the z and y directions. The
Jones matrices are operators that act on these Jones vectors.
Input xprmat An array of Jones matrices. Dimensions: [ 2, 2, n path, n snapshots ]
Output xprL The cross-polarization ratio (linear scale) for linear polarized waves
Dimensions: [ n path, n snapshots ]
Suppose that the incoming wave is linearly polarized (either vertically with a field
component only in z-direction or horizontally with a field component only in y
direction), then xprL describes how much power is transferred from one polarization
axis to the other by the interaction, e.g., from V (z-axis) to H (y-axis) or vice-versa.
Values can range from 0 to infinity, where infinity means that the polarization
is perfectly maintained and 0 means that all powers is transfered to the other
polarization.
xprC The cross-polarization ratio (linear scale) for circular polarized waves
Dimensions: [ n path, n snapshots ]
Suppose that the incoming wave is circularly polarized (either LHCP or RHCP),
then xprC describes how much power is transferred from one polarization to the
other.
cprL The co-polarization ratio (linear scale) for linear polarized waves
Dimensions: [ n path, n snapshots ]
If a linearly polarized wave interacts with a medium, the two polarization compo-
nents generally experience different reflection coefficients, depending on the mate-
rial properties and the angle of incidence. The co-polarization ratio describes the
power-difference between the two components after the scattering event.
cprC The co-polarization ratio (linear scale) for circularly polarized waves
Dimensions: [ n path, n snapshots ]
If a circularly polarized wave interacts with a medium, the two polarization com-
ponents generally experience different phase-shifts coefficients, depending on the
material properties and the angle of incidence. The co-polarization ratio describes
the power-difference between the two components after the scattering event.

Copyright: Fraunhofer Heinrich Hertz Institute 85


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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, use double )


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 accu-
rate), 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 interpolations
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 ]
use double If set to true, double precision is used instead of single precision.
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)
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

Copyright: Fraunhofer Heinrich Hertz Institute 86


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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 ]

[ 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

[ mu, sigma, R, str ] = qf.regression ( V, X, margin, round digits, Xname, fit sigma )
Calling object None (static method)
Description Linear regression fitting with N variables
This function fits the data ”V” sampled at points ”X”:
V = R + Q * S
R = mu(1) + mu(2) * X(1,:) + mu(3) * x(2,:) ...
S = sigma(1) + sigma(2) * X(1,:) + sigma(3) * x(2,:) ...
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 support X. Q 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
support X.

Copyright: Fraunhofer Heinrich Hertz Institute 87


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

Input V Vector of M data values. Dimension: [1 x M]


X Support vectors for the data values (the values where the data was sampled).
Dimension: [N x M]
margin Absolute values of fitted parameters below this margin are assumed to be zero. The
default value is obtained from round digits, e.g. for round digits of 2, margin
is 0.01.
round digits Rounds the output to this number of decimal digits after the coma.
Xname Cell array with N elements containing the names of the variables (optional).
fit sigma Logical vector with N elements indicating for which variable the STD should be
fitted (optional, default: all variables).
Output mu Fitted parameters (mean values). Dimension: [1 x N+1]
sigma Fitted standard deviation. Dimension: [1 x N+1]
R The reference value R for the input sample points. Dimension: [1 x M]
str A human readable text string of the fitted function.

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, use double )


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
xi Vector of x sample points after interpolation; size [ 1, nxi ] or [ nxi , 1 ]
use double If set to true, double precision is used instead of single precision.
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 88


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

2.3 Data Flow

The data flow of the QuaDRiGa channel model is depicted in Fig. 6. 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
for each snapshot Drifting Path Loss
XPRμ XPRσ No. clusters, L
Parameter Table
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

Generate drifting Drifting delay for each path


Initial delay for each path delays

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 6: QuaDRiGa Data Flow

Copyright: Fraunhofer Heinrich Hertz Institute 89


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

2.4 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 propa-
gation environment (called scenario) is described by 140 individual parameters. Scenario parameters define
the distribution of model properties for a certain environment.

The parameters for a large variety of environments are stored in so-called ”.conf”-Files which can be found in
the ”quadriga src\config” folder. The following table gives an overview of the parameters in the config files.
They get converted into a structure ’qd builder.scenpar’. The method ’qd builder.write conf file’
can be used to write the parameters into a properly formatted “config” file (see Sec. 2.2.6 for details). The
parameters are usually structured into sections consisting of:

• Large scale parameter distributions


• Large-Scale fading decorrelation distances
• Inter-parameter correlations
• Model parameters
• Path Loss

Large scale parameter distributions LSPs are the shadow fading, the Ricean K-Factor, the RMS delay
spread, the four angle spreads (elevation and azimuth at the transmitter and receiver), as well as the cross
polarization ratio (XPR). They are more or less constant within an area of several meters. The values in the
scenario parameter tables describe how the LSPs are distributed. 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
(see Section 3.2 for a detailed description).

Table 3: Large scale parameter distributions


Delay Spread (DS)
The root mean square (RMS) delay spread is the square root of the second central moment of the power delay profile and
is defined to be v
u L L
!2
u1 X 1 X
2
DS = t · Pl · (τl ) − · Pl · τ l (1)
Pi Pi
l=1 l=1

where 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 the DS in a specific environment.
Parameter Unit or type Description
DS mu log10(s) Median value of the DS, e.g., 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 sigma log10(s) Standard deviation of the DS. DSσ defines the range of the values relative to
DSµ , 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.
DS gamma log10(s)/log10(GHz) Frequency-dependence of the DS (optional)
DS omega GHz Reference frequency offset DSω for the DS (optional)

Copyright: Fraunhofer Heinrich Hertz Institute 90


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

The two parameters DSγ and DSω modify the median value DSµ such that it
changes depending on the carrier frequency:

DSµ + DSγ log10 (DSω + fGHz )

DS epsilon log10(s)/log10(m) TX-RX 2D distance-dependence of the DS (optional). This parameter changes


the median value DSµ depending on the 2D-distance (discarding the height)
between transmitter and receiver to DSµ + DS log10 d2D (m).
DS zeta log10(s)/log10(m) TX height-dependence of the DS (optional). This parameter changes the me-
dian value DSµ depending on the transmitter height to DSµ +DSζ log10 hBS (m).
DS alpha log10(s)/log10(rad) Elevation-dependence of the DS (optional). This parameter changes the median
value DSµ depending on the elevation angle αBS between the ground and the
transmitter to DSµ + DSα log10 αBS (rad).
DS delta log10(s)/log10(GHz) Frequency-dependence of the DS standard deviation (STD) (optional). The
parameter DSδ modifies the standard deviation DSσ such that it changes de-
pending on the carrier frequency to DSσ + DSδ log10 (DSω + fGHz )
DS kappa log10(s)/log10(m) TX-RX 2D distance-dependence of the DS STD (optional). This parameter
changes the STD DSσ depending on the 2D-distance (discarding the height)
between transmitter and receiver to DSσ + DSκ log10 d2D (m).
DS tau log10(s)/log10(m) TX height-dependence of the DS STD (optional). This parameter changes the
STD DSσ depending on the transmitter height to DSσ + DSτ log10 hBS (m).
DS beta log10(s)/log10(rad) Elevation-dependence of the DS STD (optional). This parameter changes the
STD DSσ depending on the elevation angle αBS between the ground and the
transmitter to DSσ + DSβ log10 αBS (rad).

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 random variable with a standard deviation SFσ which defines the width of the distribution,
i.e. the power value (in dB) above or below the distance dependent path loss (PL).
Parameter Unit or type Description
SF sigma dB Standard deviation of the SF. SFσ defines the range of the received power
relative to the PL in dB.
SF omega GHz Reference frequency offset SFω for the SF (optional)
SF delta dB/log10(GHz) Frequency-dependence of the SF (optional). The parameter SFδ modifies the
shadow fading SFσ such that it changes depending on the carrier frequency to
SFσ + SFδ log10 (SFω + fGHz )
SF kappa dB/log10(m) TX-RX 2D distance-dependence of the SF (optional). This parameter changes
SFσ depending on the 2D-distance (discarding the height) between transmitter
and receiver to SFσ + SDκ log10 d2D (m).
SF tau dB/log10(m) TX height-dependence of the SF (optional). This parameter changes SFσ de-
pending on the transmitter height to SFσ + SFτ log10 hBS (m).
SF beta dB/log10(rad) Elevation-dependence of the SF (optional). This parameter changes the STD
SFσ depending on the elevation angle αBS between the ground and the trans-
mitter to SFσ + SFβ log10 αBS (rad).

Ricean K-factor (KF)


Rician fading occurs when one of the paths, typically a line of sight (LOS) signal, is much stronger than the others. The
KF 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σ .
Parameter Unit or type Description
KF mu dB Median value of the KF. A value for KFµ of 0 dB means that, on average, the
power of the direct (LOS) path is equal to the sum-power of all indirect paths.
Negative value increase the power of the NLOS paths, whereas positive values
increase the power of the LOS path.

Copyright: Fraunhofer Heinrich Hertz Institute 91


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

KF sigma dB Standard deviation of the KF, i.e., the range of the values relative to KFµ
KF gamma dB/log10(GHz) Frequency-dependence of the KF (optional)
KF omega GHz Reference frequency offset KFω for the KF (optional)
The two parameters KFγ and KFω modify the median value KFµ such that it
changes depending on the carrier frequency:

KFµ + KFγ log10 (KFω + fGHz )

KF epsilon dB/log10(m) TX-RX 2D distance-dependence of the KF (optional). This parameter changes


KFµ depending on the 2D-distance (discarding the height) between transmitter
and receiver to KFµ + KF log10 d2D (m).
KF zeta dB/log10(m) TX height-dependence of the KF (optional). This parameter changes KFµ
depending on the transmitter height to KFµ + KFζ log10 hBS (m).
KF alpha dB/log10(rad) Elevation-dependence of the KF (optional). This parameter changes the me-
dian value KFµ depending on the elevation angle αBS between the ground and
the transmitter to KFµ + KFα log10 αBS (rad).
KF delta dB/log10(GHz) Frequency-dependence of the KF STD (optional). The parameter KFδ modifies
the standard deviation KFσ such that it changes depending on the carrier
frequency to KFσ + KFδ log10 (KFω + fGHz )
KF kappa dB/log10(m) TX-RX 2D distance-dependence of the KF STD (optional). This parameter
changes the STD KFσ depending on the 2D-distance (discarding the height)
between transmitter and receiver to KFσ + KFκ log10 d2D (m).
KF tau dB/log10(m) TX height-dependence of the KF STD (optional). This parameter changes the
STD KFσ depending on the transmitter height to KFσ + KFτ log10 hBS (m).
KF beta dB/log10(rad) Elevation-dependence of the KF STD (optional). This parameter changes the
STD KFσ depending on the elevation angle αBS between the ground and the
transmitter to KFσ + KFβ log10 αBS (rad).

Each path gets assigned an azimuth angle in the horizontal plane and an elevation angle in the vertical
plane at both end of the radio link, where the departure angles correspond to the transmitter side and
the arrival angles correspond to the receiver side. The angular spread (AS) defines the distribution of the
angles. 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
being a function of ∆φ . Therefore, the AS is defined relative to normalized angles φ̂l , where the combined
power-angular spectrum (PAS) of all paths points to θ = φ = 0. The normalization of the angles is given by
L
!
X
∆φ = arg exp {jφl } · Pl , (2)
l=1
φ̂l = arg exp {j (φl − ∆φ )} , (3)

where φl is the angle of the l-th MPC and Pl the path power. Then, the AS is calculated by
v !2
L L
u
u1 X  2 1 X
AS = t · Pl · φ̂l − · Pl · φ̂l . (4)
Pi Pi
l=1 l=1

Since there are four angles for each path, there are also four values for the angular spread:

1. Azimuth spread of departure (ASD)


2. Elevation spread of departure (ESD)
3. Azimuth spread of arrival (ASA)
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,

Copyright: Fraunhofer Heinrich Hertz Institute 92


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

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.
Azimuth spread of Departure (ASD)
The ASD describes the distribution of the angles in the azimuth direction, i.e., parallel to the ground plane, at the transmitter.
Values are given in units of log10 (°), so a value of 0 corresponds to an AS of 1° , 1 corresponds to 10° and 2 corresponds to
100° . Since the angles are wrapped around the unit sphere, there is a maximum achievable AS. See Section 3.3 for details.
Parameter Unit or type Description
ASD mu log10(°) Median value of the ASD
ASD sigma log10(°) Standard deviation of the ASD, i.e., the range of the values relative to ASDµ
ASD gamma log10(°)/log10(GHz) Frequency-dependence of the ASD (optional)
ASD omega GHz Reference frequency offset ASDω for the ASD (optional)
The two parameters ASDγ and ASDω modify the median value ASDµ such
that it changes depending on the carrier frequency:

ASDµ + ASDγ log10 (ASDω + fGHz )

ASD epsilon log10(°)/log10(m) TX-RX 2D distance-dependence of the ASD (optional). This parameter
changes ASDµ depending on the 2D-distance (discarding the height) between
transmitter and receiver to ASDµ + ASD log10 d2D (m).
ASD zeta log10(°)/log10(m) TX height-dependence of the ASD (optional). This parameter changes ASDµ
depending on the transmitter height to ASDµ + ASDζ log10 hBS (m).
ASD alpha log10(°)/log10(rad) Elevation-dependence of the ASD (optional). This parameter changes the me-
dian value ASDµ depending on the elevation angle αBS between the ground
and the transmitter to ASDµ + ASDα log10 αBS (rad).
ASD delta log10(°)/log10(GHz) Frequency-dependence of the ASD STD (optional). The parameter ASDδ mod-
ifies the standard deviation ASDσ such that it changes depending on the carrier
frequency to ASDσ + ASDδ log10 (ASDω + fGHz )
ASD kappa log10(°)/log10(m) TX-RX 2D distance-dependence of the ASD STD (optional). This parameter
changes the STD ASDσ depending on the 2D-distance (discarding the height)
between transmitter and receiver to ASDσ + ASDκ log10 d2D (m).
ASD tau log10(°)/log10(m) TX height-dependence of the ASD STD (optional). This parameter changes the
STD ASDσ depending on the transmitter height to ASDσ +ASDτ log10 hBS (m).
ASD beta log10(°)/log10(rad) Elevation-dependence of the ASD STD (optional). This parameter changes the
STD ASDσ depending on the elevation angle αBS between the ground and the
transmitter to ASDσ + ASDβ log10 αBS (rad).

Elevation spread of Departure (ESD)


The ESD describes the distribution of the angles in the elevation direction, i.e., perpendicular to the ground plane, at the
transmitter. Values are given in units of log10 (°).
Parameter Unit or type Description
ESD mu log10(°) Median value of the ESD
ESD mu min log10(°) Minimum median value of the ESD
ESD mu A log10(°)/km TX-RX 2D dist.-dep. of ESD median value (linear scale per km)
ESD sigma log10(°) Standard deviation of the ESD, i.e., the range of the values relative to ESDµ
ESD gamma log10(°)/log10(GHz) Frequency-dependence of the ESD (optional)
ESD omega GHz Reference frequency offset ESDω for the ESD (optional)
The two parameters ESDγ and ESDω modify the median value ESDµ such that
it changes depending on the carrier frequency:

ESDµ + ESDγ log10 (ESDω + fGHz )

Copyright: Fraunhofer Heinrich Hertz Institute 93


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

ESD epsilon log10(°)/log10(m) TX-RX 2D distance-dependence of the ESD (optional). This parameter
changes ESDµ depending on the 2D-distance (discarding the height) between
transmitter and receiver to ESDµ + ESD log10 d2D (m).
ESD zeta log10(°)/log10(m) TX height-dependence of the ESD (optional). This parameter changes ESDµ
depending on the transmitter height to ESDµ + ESDζ log10 hBS (m).
ESD alpha log10(°)/log10(rad) Elevation-dependence of the ESD (optional). This parameter changes the me-
dian value ESDµ depending on the elevation angle αBS between the ground
and the transmitter to ESDµ + ESDα log10 αBS (rad).
ESD delta log10(°)/log10(GHz) Frequency-dependence of the ESD STD (optional). The parameter ESDδ mod-
ifies the standard deviation ESDσ such that it changes depending on the carrier
frequency to ESDσ + ESDδ log10 (ESDω + fGHz )
ESD kappa log10(°)/log10(m) TX-RX 2D distance-dependence of the ESD STD (optional). This parameter
changes the STD ESDσ depending on the 2D-distance (discarding the height)
between transmitter and receiver to ESDσ + ESDκ log10 d2D (m).
ESD tau log10(°)/log10(m) TX height-dependence of the ESD STD (optional). This parameter changes the
STD ESDσ depending on the transmitter height to ESDσ +ESDτ log10 hBS (m).
ESD beta log10(°)/log10(rad) Elevation-dependence of the ESD STD (optional). This parameter changes the
STD ESDσ depending on the elevation angle αBS between the ground and the
transmitter to ESDσ + ESDβ log10 αBS (rad).

Azimuth spread of Arrival (ASA)


The ASA describes the distribution of the angles in the azimuth direction, i.e., parallel to the ground plane, at the receiver.
Values are given in units of log10 (°).
Parameter Unit or type Description
ASA mu log10(°) Median value of the ASA
ASA sigma log10(°) Standard deviation of the ASA, i.e., the range of the values relative to ASAµ
ASA gamma log10(°)/log10(GHz) Frequency-dependence of the ASA (optional)
ASA omega GHz Reference frequency offset ASAω for the ASA (optional)
The two parameters ASAγ and ASAω modify the median value ASAµ such
that it changes depending on the carrier frequency:

ASAµ + ASAγ log10 (ASAω + fGHz )

ASA epsilon log10(°)/log10(m) TX-RX 2D distance-dependence of the ASA (optional). This parameter
changes ASAµ depending on the 2D-distance (discarding the height) between
transmitter and receiver to ASAµ + ASA log10 d2D (m).
ASA zeta log10(°)/log10(m) TX height-dependence of the ASA (optional). This parameter changes ASAµ
depending on the transmitter height to ASAµ + ASAζ log10 hBS (m).
ASA alpha log10(°)/log10(rad) Elevation-dependence of the ASA (optional). This parameter changes the me-
dian value ASAµ depending on the elevation angle αBS between the ground
and the transmitter to ASAµ + ASAα log10 αBS (rad).
ASA delta log10(°)/log10(GHz) Frequency-dependence of the ASA STD (optional). The parameter ASAδ mod-
ifies the standard deviation ASAσ such that it changes depending on the carrier
frequency to ASAσ + ASAδ log10 (ASAω + fGHz )
ASA kappa log10(°)/log10(m) TX-RX 2D distance-dependence of the ASA STD (optional). This parameter
changes the STD ASAσ depending on the 2D-distance (discarding the height)
between transmitter and receiver to ASAσ + ASAκ log10 d2D (m).
ASA tau log10(°)/log10(m) TX height-dependence of the ASA STD (optional). This parameter changes the
STD ASAσ depending on the transmitter height to ASAσ +ASAτ log10 hBS (m).
ASA beta log10(°)/log10(rad) Elevation-dependence of the ASA STD (optional). This parameter changes the
STD ASAσ depending on the elevation angle αBS between the ground and the
transmitter to ASAσ + ASAβ log10 αBS (rad).

Copyright: Fraunhofer Heinrich Hertz Institute 94


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

Elevation spread of Arrival (ESA)


The ESA describes the distribution of the angles in the elevation direction, i.e., perpendicular to the ground plane, at the
receiver. Values are given in units of log10 (°).
Parameter Unit or type Description
ESA mu log10(°) Median value of the ESA
ESA sigma log10(°) Standard deviation of the ESA, i.e., the range of the values relative to ESAµ
ESA gamma log10(°)/log10(GHz) Frequency-dependence of the ESA (optional)
ESA omega GHz Reference frequency offset ESAω for the ESA (optional)
The two parameters ESAγ and ESAω modify the median value ESAµ such that
it changes depending on the carrier frequency:

ESAµ + ESAγ log10 (ESAω + fGHz )

ESA epsilon log10(°)/log10(m) TX-RX 2D distance-dependence of the ESA (optional). This parameter
changes ESAµ depending on the 2D-distance (discarding the height) between
transmitter and receiver to ESAµ + ESA log10 d2D (m).
ESA zeta log10(°)/log10(m) TX height-dependence of the ESA (optional). This parameter changes ESAµ
depending on the transmitter height to ESAµ + ESAζ log10 hBS (m).
ESA alpha log10(°)/log10(rad) Elevation-dependence of the ESA (optional). This parameter changes the me-
dian value ESAµ depending on the elevation angle αBS between the ground
and the transmitter to ESAµ + ESAα log10 αBS (rad).
ESA delta log10(°)/log10(GHz) Frequency-dependence of the ESA STD (optional). The parameter ESAδ mod-
ifies the standard deviation ESAσ such that it changes depending on the carrier
frequency to ESAσ + ESAδ log10 (ESAω + fGHz )
ESA kappa log10(°)/log10(m) TX-RX 2D distance-dependence of the ESA STD (optional). This parameter
changes the STD ESAσ depending on the 2D-distance (discarding the height)
between transmitter and receiver to ESAσ + ESAκ log10 d2D (m).
ESA tau log10(°)/log10(m) TX height-dependence of the ESA STD (optional). This parameter changes the
STD ESAσ depending on the transmitter height to ESAσ +ESAτ log10 hBS (m).
ESA beta log10(°)/log10(rad) Elevation-dependence of the ESA STD (optional). This parameter changes the
STD ESAσ depending on the elevation angle αBS between the ground and the
transmitter to ESAσ + ESAβ log10 αBS (rad).

Cross-polarization Ratio (XPR)


For the NLOS components, the transmitted signal undergoes diffraction, reflection or scattering before reaching the receiver.
These propagation effects change the polarization state of the electromagnetic wave transmitted by an transmit antenna.
The XPR is a single measure describing the magnitude of this change. The XPR (in dB) is assumed to be normal distributed
where µ and σ define the distribution. The XPR is translated into a polarization rotation angle which turns the polarization
direction. See Section 3.5 for details.
Parameter Unit or type Description
XPR mu dB Median value of the XPR. A value of +Inf means that polarization 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 polarization rotation axis
is turned by 45°, i.e., the power of a vertically polarized wave is split equally
into a H- and V component.
XPR sigma dB Standard deviation of the XPR, i.e., the range of the values relative to XPRµ
XPR gamma dB/log10(GHz) Frequency-dependence of the XPR (optional)
XPR omega GHz Reference frequency offset XPRω for the XPR (optional)
The two parameters XPRγ and XPRω modify the median value XPRµ such
that it changes depending on the carrier frequency:

XPRµ + XPRγ log10 (XPRω + fGHz )

XPR epsilon dB/log10(m) TX-RX 2D distance-dependence of the XPR (optional). This parameter
changes XPRµ depending on the 2D-distance (discarding the height) between
transmitter and receiver to XPRµ + XPR log10 d2D (m).

Copyright: Fraunhofer Heinrich Hertz Institute 95


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

XPR zeta dB/log10(m) TX height-dependence of the XPR (optional). This parameter changes XPRµ
depending on the transmitter height to XPRµ + XPRζ log10 hBS (m).
XPR alpha dB/log10(rad) Elevation-dependence of the XPR (optional). This parameter changes the me-
dian value XPRµ depending on the elevation angle αBS between the ground
and the transmitter to XPRµ + XPRα log10 αBS (rad).
XPR delta dB/log10(GHz) Frequency-dependence of the XPR STD (optional). The parameter XPRδ mod-
ifies the standard deviation XPRσ such that it changes depending on the carrier
frequency to XPRσ + XPRδ log10 (XPRω + fGHz )
XPR kappa dB/log10(m) TX-RX 2D distance-dependence of the XPR STD (optional). This parameter
changes the STD XPRσ depending on the 2D-distance (discarding the height)
between transmitter and receiver to XPRσ + XPRκ log10 d2D (m).
XPR tau dB/log10(m) TX height-dependence of the XPR STD (optional). This parameter
changes the STD XPRσ depending on the transmitter height to XPRσ +
XPRτ log10 hBS (m).
XPR beta dB/log10(rad) Elevation-dependence of the XPR STD (optional). This parameter changes the
STD XPRσ depending on the elevation angle αBS between the ground and the
transmitter to XPRσ + XPRβ log10 αBS (rad).

Large-Scale fading decorrelation distances LSPs are more or less constant within an area of several
meters. An example for this 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 same general approach applies to the other LSPs, where closely spaces MTs experience
similar propagation conditions and therefor have similar delay and angle spreads. For a detailed description
of the spatial consistency (SC) procedure used in QuaDRiGa see Section 3.1.

Large-Scale fading decorrelation distances


The decorrelation distance dλ , given in meters, is defined as the distance at which the correlation between two random
samples of the same parameter (e.g., the DS) falls below e−1 ≈ 0.37 [14].
Parameter Unit or type Description
DS lambda m Delay spread (DS) decorrelation distance
KF lambda m Ricean K-factor (KF) decorrelation distance
SF lambda m Shadow fading (SF) decorrelation distance
AS D lambda m Azimuth spread of departure (ASD) decorrelation distance
AS A lambda m Azimuth spread of arrival (ASA) decorrelation distance
ES D lambda m Elevation spread of departure (ESD) decorrelation distance
ES A lambda m Elevation spread of arrival (ESA) decorrelation distance
XPR lambda m Cross polarization ratio (XPR) decorrelation distance

Inter-parameter correlations In general, LSPs are correlated with each other. For example, with a high
KF, more power is allocated to the direct path. As result, the DS gets shorter which leads to a negative
correlation between KF and DS. The same mechanism applies to the angular domain, where the KF is
generally also negatively correlated withe the four AS values. Correlation between two LSPs is described
by the Pearson correlation coefficient, a measure of linear correlation between two sets of data. It is the
covariance of the two variables, divided by the product of their standard deviations, thus it is essentially a
normalised measurement of the covariance, such that the result always has a value between -1 and 1. With
eight LSPs, there are 28 inter-parameter correlation values.
Inter-parameter correlations
Parameter Unit or type Description
ds kf Real number Delay spread (DS) vs. Ricean K-factor (KF)
ds sf Real number Delay spread (DS) vs. Shadow fading (SF)
asD ds Real number Delay spread (DS) vs. Azimuth spread of departure (ASD)

Copyright: Fraunhofer Heinrich Hertz Institute 96


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

asA ds Real number Delay spread (DS) vs. Azimuth spread of arrival (ASA)
esD ds Real number Delay spread (DS) vs. Elevation spread of departure (ESD)
esA ds Real number Delay spread (DS) vs. Elevation spread of arrival (ESA)
xpr ds Real number Delay spread (DS) vs. Cross polarization ratio (XPR)
sf kf Real number Ricean K-factor (KF) vs. Shadow fading (SF)
asD kf Real number Ricean K-factor (KF) vs. Azimuth spread of departure (ASD)
asA kf Real number Ricean K-factor (KF) vs. Azimuth spread of arrival (ASA)
esD kf Real number Ricean K-factor (KF) vs. Elevation spread of departure (ESD)
esA kf Real number Ricean K-factor (KF) vs. Elevation spread of arrival (ESA)
xpr kf Real number Ricean K-factor (KF) vs. Cross polarization ratio (XPR)
asD sf Real number Shadow fading (SF) vs. Azimuth spread of departure (ASD)
asA sf Real number Shadow fading (SF) vs. Azimuth spread of arrival (ASA)
esD sf Real number Shadow fading (SF) vs. Elevation spread of departure (ESD)
esA sf Real number Shadow fading (SF) vs. Elevation spread of arrival (ESA)
xpr sf Real number Shadow fading (SF) vs. Cross polarization ratio (XPR)
asD asA Real number Azimuth spread of departure (ASD) vs. Azimuth spread of arrival (ASA)
esD asD Real number Azimuth spread of departure (ASD) vs. Elevation spread of departure (ESD)
esA asD Real number Azimuth spread of departure (ASD) vs. Elevation spread of arrival (ESA)
xpr asd Real number Azimuth spread of departure (ASD) vs. Cross polarization ratio (XPR)
esD asA Real number Azimuth spread of arrival (ASA) vs. Elevation spread of departure (ESD)
esA asA Real number Azimuth spread of arrival (ASA) vs. Elevation spread of arrival (ESA)
xpr asa Real number Azimuth spread of arrival (ASA) vs. Cross polarization ratio (XPR)
esD esA Real number Elevation spread of departure (ESD) vs. Elevation spread of arrival (ESA)
xpr esd Real number Elevation spread of departure (ESD) vs. Cross polarization ratio (XPR)
xpr esa Real number Elevation spread of arrival (ESA) vs. Cross polarization ratio (XPR)

Model Parameters Additional model parameters control various aspects of the generation of the scattering
clusters, such as the number of clusters, the per-cluster angular spread, etc. In addition, there are parameters
that control additional model features such as the ground reflection model, the absolute time of arrival model
or the spatially-consistent UT mobility model.
Parameters controlling the cluster generation
The following parameters control various aspects of the small-scale-fading (SSF) model, i.e., the procedure that generates
the individual scattering clusters. See Section 3.3 for details.
Parameter Unit or type Description
NumClusters Integer number The number of clusters including the LOS and (optional) ground reflection
path. 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.
NumSubPaths Integer number The number of sub-paths per cluster. The default value is 20.
SubpathMethod Text string Selector for the subpath generation method. The default 3GPP approach uses
the ’legacy’ model, where up to 20 subpaths are generated with equal power.
An alternative method is ’Laplacian’ subpath model, where a Laplacian PAS
is used. The intra-cluster angles are increased by a factor of sqrt(2). To com-
pensate, the intra-cluster powers are adjusted by weighting the sub-path am-
plitudes. As a third method, the ’mmMAGIC’ model [15] can be selected.
r DS Real number The DS is calculated from both, the delays τl and the path powers Pl , i.e.,
lager DSs 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 .
LNS ksi dB 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.

Copyright: Fraunhofer Heinrich Hertz Institute 97


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

PerClusterDS ns The per-cluster delay spread. 3GPP requires that for some scenarios, the three
strongest clusters are split into three sub-clusters if there is a defined per-cluster
DS [10]. However, this would break the spatial consistency (SC). Hence, the
cluster-splitting is only done if PerClusterDS is non-zero and SC is disabled
(i.e., SC lambda = 0). If SC is enabled, all clusters are split.
PerClusterDS gamma ns/GHz The frequency dependence of the per-cluster DS relative to 1 GHz.
PerClusterDS min ns Minimum value of the per-cluster DS.
PerClusterAS D deg The ASD of the sub-paths within each cluster.
PerClusterAS A deg The ASA of the sub-paths within each cluster.
PerClusterES D deg The ESD of the sub-paths within each cluster.
PerClusterES A deg The ESA of the sub-paths within each cluster.

Parameters for specific QuaDRiGa features


The following parameters control the behavior of specific QuaDRiGa model features. If they are omitted, the corresponding
feature will be disabled and the default model will be used. The following additional features are currently available:
• Spatial consistency (SC) model (introduced by 3GPP [10] Sec. 7.6.3, implemented as described in [16])
• Ground reflection (GR) model (introduced by 3GPP [10] Sec. 7.6.8, implemented as described in [13])
• Absolute time of arrival (ATOA) model (introduced by 3GPP [10] Sec. 7.6.9)

Parameter Unit or type Description


SC lambda m Decorrelation distance for the small-scale fading spatial consistency (SC). When
this value is non-zero, all random variables will be spatially correlated. This
may lead to a significant increase in computing time. A value of 0 disables the
SC model.
GR enabled Logical 0/1 Enables the explicit ground reflection model.
GR epsilon Complex number Fixed reflection coefficient of the ground. If a value of 0 is set, the reflection
coefficient is determined by a frequency-dependent model [13].
ATOA mu log10(s) Average absolute time of arrival (ATOA) offset. In the 3GPP ATOA model,
a scenario-specific delay difference between the LOS path and the first NLOS
cluster was introduced. This parameter describes the average valued of this
gap. Values below -30 log10(s) disable the ATOA model (default).
ATOA sigma log10(s) STD of the ATOA offset
ATOA lambda m Decorrelation distance for the ATOA offset.

Path-Loss Models Path-loss is the reduction in power of an electromagnetic wave as it propagates through
space. Path loss is a major component in the analysis and design of the link budget of a telecommunication
system. Path loss may be due to many effects, such as free-space loss, refraction, diffraction, reflection,
aperture-medium coupling loss, and absorption. Path loss is also influenced by terrain contours, environment
(urban or rural, vegetation and foliage), propagation medium (dry or moist air), the distance between the
transmitter and the receiver, and the height and location of antennas. QuaDRiGa implements several path-
loss models in ’qd builder.get pl’. Each model is characterized by a set dependent variables (such as the
transmitter or receiver heights, elevation angle, etc.) and their parameters. Path-loss models are selected
in the config-files by the parameter ’PL model’. The path-loss model parameters are indicated by the prefix
’PL ’ followed by the parameter name. The following list provides an overview of the different models and
their parameters.
Path-loss model: logdist
A simple model that only depends on the distance between transmitter and receiver and the carrier frequency. This is
typically used for the free-space path loss (FSPL).

PL = A · log10 d3D (m) + B + C · log10 fGHz (5)

Parameter Unit or type Description


A dB/log10(m)] TX-RX 3D distance-dependence of PL (e.g. for FSPL: A = 20)
B dB Reference PL at 1 GHz and 1 m TX-RX dist (e.g. for FSPL: B = 32.45)
C dB/log10(GHz) Frequency-dependence of the PL (e.g. for FSPL: C = 20)

Copyright: Fraunhofer Heinrich Hertz Institute 98


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

Path-loss model: dual slope


Dual-slope path-loss models are typically used for LOS propagation. They depend on the distance between transmitter
and receiver, the carrier frequency and the heights of the transmitter and receiver above ground. The heights are taken
into account by assuming a ground reflection (GR) that leads to a larger path-loss exponent at larger distances due to the
destructive interference of the direct and the reflected path. Hence, dual-slope models consist of two regions: a first region
ranging from the transmitter to a so-called break-point distance, where the direct path dominates the overall signal power
and a second region from the break-point onward, where both paths interfere destructively.

PL = PL1 for d2D ≤ d2D


BP | PL2 for d2D > d2D
BP (6)
PL1 = A1 · log10 d3D + B + C · log10 fGHz + D · d3D (7)
   
PL2 = PL1 d3D BP + A2 · log10 d3D /dBP
3D
(8)

d2D
BP = E · (hBS − hE ) · (hMT − hE ) · fGHz (9)
q
2
d3D
BP = (d2D
BP ) + (hBS − hMT )
2
(10)

Parameter Unit or type Description


A1 dB/log10(m) TX-RX 3D dist.-dep. (path-loss exponent) of the PL before the break-point
A2 dB/log10(m) TX-RX 3D dist.-dep. (path-loss exponent) of the PL after the break-point
B dB Reference PL at 1 GHz and 1 m TX-RX dist.
C dB/log10(GHz) Frequency-dependence of the PL
D dB/m TX-RX 3D dist.-dep. of PL (linear scaling)
E s/m Break-point scaling factor
hE m Environment height relative to the ground

Path-loss model: tripple slope


Dual-slope PL models account the the higher attenuation caused by the destructive interference of the direct and the reflected
path at larger distances between TX and RX. However, when the GR is included in the model, this increased attenuation is
no longer necessary since it is will be explicitly generated by the two paths in the model. Therefore, typical 3GPP path-loss
models will be incorrect when adding an explicit GR path [13]. This can be fixed by adding an additional third slope to the
dual-slope PL model which correctly takes the interference of GR path into account.

PL = PL1 for d2D ≤ d2D


BP1 | PL2 for d2D 2D
BP1 < d2D ≤ dBP2 | PL3 for d2D > d2D
BP2 (11)
PL1 = A1 · log10 d3D + B + C · log10 fGHz + D · d3D (12)
   
PL2 = PL1 d3D 3D
BP1 + A2 · log10 d3D /dBP1 (13)
   
PL3 = PL2 d3D 3D
BP2 + A3 · log10 d3D /dBP2 (14)

d2D
BP1 = E1 · (hBS − hE1 ) · (hMT − hE1 ) · fGHz (15)
d2D
BP2 = E2 · (hBS − hE2 ) · (hMT − hE2 ) · fGHz (16)

Parameter Unit or type Description


A1 dB/log10(m) TX-RX 3D dist.-dep. of the PL before the first break-point
A2 dB/log10(m) TX-RX 3D dist.-dep. of the PL between first and second break-point
A3 dB/log10(m) TX-RX 3D dist.-dep. of the PL after the second break-point
B dB Reference PL at 1 GHz and 1 m TX-RX dist.
C dB/log10(GHz) Frequency-dependence of the PL
D dB/m TX-RX 3D dist.-dep. of PL (linear scaling)
E1 s/m Break-point scaling factor for first BP
E2 s/m Break-point scaling factor for second BP
hE1 m Environment height relative to the ground for the first BP
hE2 m Environment height relative to the ground for the second BP

Copyright: Fraunhofer Heinrich Hertz Institute 99


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

Path-loss model: nlos


The NLOS model is a generic model that depends on the distance between transmitter and receiver, the carrier frequency
and the heights of the transmitter and receiver above ground. It is generally assumed that the NLOS-PL cannot exceed the
corresponding LOS-PL in the same scenario, which might happen depending of the choice of the parameters. Hence, the
NLOS requires the parameters for a dual-slope LOS-PL as well as the NLOS model parameters.

PL = max (PLLOS , PLNLOS ) (17)


PLNLOS = An · log10 d3D (m) + Bn + Cn · log10 fGHz + (18)
log10 hBS (m) log10 hBS (m)
Dn · log10 hBS (m) + D1n · + D2n · + D3n · hBS (m) +
hBS (m) hBS (m)2
log10 hMT (m) log10 hMT (m)
En · log10 hMT (m) + E1n · + E2n · + E3n · hMT (m) +
hMT (m) hMT (m)2
Fn · log10 hBS (m) · log10 d3D (m) + G1n · (log10 (G2n · hMT (m)))2

The NLOS-PL is given by (11). The LOS parameters (A1, A2, B, C, D, E, hE) are the same as for the dual-slope model above.
The NLOS model is designed to fit all relevant 3GPP-PL models from [10].
Parameter Unit or type Description
A1 dB/log10(m) TX-RX 3D dist.-dep. of the LOS-PL before the break-point
A2 dB/log10(m) TX-RX 3D dist.-dep. of the LOS-PL after the break-point
B dB Reference LOS-PL at 1 GHz and 1 m TX-RX dist.
C dB/log10(GHz) Frequency-dependence of the LOS-PL
D dB/m TX-RX 3D dist.-dep. of LOS-PL before the break-point (linear scaling)
E s/m Break-point scaling factor (LOS-PL model)
hE m Environment height relative to the ground(LOS-PL model)
An dB/log10(m) TX-RX 3D dist.-dep. of NLOS-PL
Bn dB Reference NLOS-PL at 1 GHz, 1 m TX-RX dist.
Cn dB/log10(GHz) Frequency-dependence of the NLOS-PL
Dn dB/log10(m) TX height-dep. of the NLOS-PL (logarithmic scale)
D1n dB/log10(m)/m TX height-dep. of the NLOS-PL
D2n dB/log10(m)/m2 TX height-dep. of the NLOS-PL
D3n dB/m TX height-dep. of the NLOS-PL (linear scale)
En dB/log10(m) RX height-dep. of the NLOS-PL (logarithmic scale)
E1n dB/log10(m)/m RX height-dep. of the NLOS-PL
E2n dB/log10(m)/m2 RX height-dep. of the NLOS-PL
E3n dB/m RX height-dep. of the NLOS-PL (linear scale)
Fn dB/log10(mlog10 GHz ) Combined TX height-dep. and freq.-dep. of the NLOS-PL
G1n dB/log102 (m) RX height-dep. of the NLOS-PL scaling with the square of the MT height
G2n RX height-dep. factor

Path-loss model: satellite


The satellite path-loss model was derived from [17] by combining the 3GPP-NTN PL model and the clutter-loss model,
which leads to higher attenuation when the satellite is closer to the horizon. The resulting model depends on the distance
between MT and satellite, the carrier frequency and the satellite elevation angle in radians.

PL = A · log10 d3D (m) + B + C · log10 fGHz + D · log10 αrad + PLa (19)

The additional factor PLa accounts for the attenuation from due to atmospheric gasses, which is entirely caused by absorption
and depends mainly on the frequency, elevation angle, altitude above sea level and water vapour density (absolute humidity).
At frequencies below 10 GHz, it may normally be neglected. However, for elevation angles below 10 degrees it is recommended
that the calculation is performed for any frequency above 1 GHz. The non-linear attenuation for the zenith angle is modeled
after ITU-R P.676, Figure 6. Further scaling is done by PLa (f, α) = PLzenith (f )/ sin α.
Parameter Unit or type Description
A dB/log10(m)] TX-RX 3D distance-dependence of PL (e.g. for FSPL: A = 20)
B dB Reference PL at 1 GHz and 57.3 deg elevation (e.g. for FSPL: B = 32.45)
C dB/log10(GHz) Frequency-dependence of the PL (e.g. for FSPL: C = 20)
D dB/log10(rad) Elevation-dep. of PL
usePLa Enables (1) or disables (0) attenuation due to atmospheric gasses

Copyright: Fraunhofer Heinrich Hertz Institute 100


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

2.5 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 21: 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) [10]


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 InF - 3GPP NR Indoor Factory
3GPP 38.901 InF LOS The indoor factory (InF) scenario focuses on factory halls of varying sizes and with
3GPP 38.901 InF NLOS DH varying levels of density of ”clutter”, e.g. machinery, assembly lines, storage shelves,
3GPP 38.901 InF NLOS DL etc.
3GPP 38.901 InF NLOS SH
3GPP 38.901 InF NLOS SL
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 101


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 [18]
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 [19]. 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 [20].
DRESDEN UMa LOS Terrestrial Urban Macrocell parameters extracted from measurements in Dresden, Ger-
DRESDEN UMa NLOS many [20].

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) [21, 22]


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 102


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 [23]. 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.6.1. 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 103


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 104


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 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
<EphiPhase el="[no]"> must be provided. EphiPhase cannot be defined with-
out 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 >

Copyright: Fraunhofer Heinrich Hertz Institute 105


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 2 SOFTWARE STRUCTURE

22 < name > rx_Car </ name >


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 106


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 107


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 108


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 val-
ues may be given, but the Doppler characteristics of the channel will be incorrect.
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 109


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 110


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 111


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 [24], the WINNER model [4],
the European Cooperation in Science and Technology (COST) model [25] and the 3GPP-3D channel model
[26] are important tools to validate new concepts in mobile communication systems. Early models such as the
3GPP-SCM [24], its extensions [27, 28], and the WINNER model [4] are based on a two-dimensional (2-D)
modeling approach. However, Shafi et al. [29] 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 [30] or mobile-to-mobile
propagation models [31]. 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 [32, 33]. First attempts to include polarization effects
into the SCM were made by Shafi et al. [29] 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 [34]. 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. [36] already indicated that it might be preferable to
model the channel XPR by a rotation matrix. Later on, Quitin et al. [37] 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 [38]. 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.
[27] added short-term time evolution to the SCM which was afterwards incorporated into an official SCM
extension [28]. 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 [35], 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 112


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

to a few meters. The COST model [25] 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 [39, 40], it still lacks sufficient parameters in many interesting
scenarios. Czink et al. [41] 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 [41] led to more research on the birth
and death probability as well as the lifetime of individual scattering clusters [42]. Wang et al. [43] 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 [44]. 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 7 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 7: 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

Copyright: Fraunhofer Heinrich Hertz Institute 113


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

a departure direction at the TX and an arrival direction at the 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 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 [45]. 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 [38] 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 · , (20)
λ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 114


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 = ≥ (21)
max |v| λc
fS
SD = ≥2 (22)
λ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., [14], [46]), 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 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 [47]. 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 [48].

A computational efficient method to generate correlated stochastic processes has been introduced by Pätzold
el. al. [49] 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 115


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 [50]. 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), (23)

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 − , (24)

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 [14]. However, other types of decay
functions may be desirable. The sum-of-sinusoids (SOS) method outlined in [49] 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 } (25)
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 [49], 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 [50] as
N
X
k̂(x, y, z) = an cos {2π (fx,n x + fy,n y + fz,n z) + ψn } . (26)
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 [50]
N
X a2n
ρ̂(∆x, ∆y, ∆z) = cos {2π (fx,n ∆x + fy,n ∆y + fz,n ∆z)} . (27)
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 116


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 [46]) 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 [51]. The resulting 3-D approximation of
the Gaussian stochastic process (26) 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 , (28)
fy,n ∆y = fn · d · sin φn · cos θn , (29)
fz,n ∆z = fn · d · sin θn , (30)
where fn is the n-th root-frequency and d is the distance. Pätzold et. al. [49] 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 (24). 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 [49, 52]. 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 (31)
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(−π, π), (32)
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 (28), (29), and (30) 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 . (33)
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 . (34)

Copyright: Fraunhofer Heinrich Hertz Institute 117


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 , (35)
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, (35) can only be used to approximate an 1-D
stochastic process such as (25). For a 3-D stochastic process (26) 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; (36)
ρ̂(∆z), for ∆z > ∆x and ∆z > ∆y,

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

Estimation in x-direction is performed by combining (28) and (27) 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 ). (37)
N | {z }
n=1 =fx,n

This function is sampled at the sampling distances (31) and used instead of ρ̂(ds ) in (35) 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 (28),
(29), and (30).

Estimation in y-direction is performed by combining (29) and (27) 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 ). (38)
N | {z }
n=1 =fy,n

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

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

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

Copyright: Fraunhofer Heinrich Hertz Institute 118


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

The behavior of the approximated ACF is controlled in the overall 3-D space by calculating the ASE (33)
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 (26) 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 (31) is equal to halving the frequencies in (26). 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 [50] 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 ). (40)

The locations of the transmitting and receiving terminal are given in 3-D Cartesian coordinates as (xt , yt , zt )
and (xr , yr , zr ), respectively. [50] 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 ) = √ . (41)
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 ) = (42)
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 (43)
0 0 0 fxr ,n fyr ,n fzr ,n , for n > N .

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

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 119


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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, 53]). 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 [54]. 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 8) 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 120


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 8: 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 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 121


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 ) + (44)
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λ  (45)
 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 . (46)
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 ASD, the 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 ) = , (47)
2
X̃ ASa (xt , yt , zt ) + X̃ ASd (xr , yr , zr )
X̄ ASA (xt , yt , zt , xr , yr , zr ) = . (48)
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
 (49)
 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 122


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

Then, the square-root matrix R1/2 is calculated such that R1/2 · R1/2 = R [55]. 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)  , (50)
 
 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 (44). 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 (46) for the DS, SF, KF, and XPR; (47) for ASD and ESD; and (48)
for ASA and ESA
3. Apply the inter-parameter correlation model (50) 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 (44) 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 123


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 9: 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 )} , (51)

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 124


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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λ  (52)
 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 [14]. 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 , (53)
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 − , . (54)
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
− , (55)
2 2 2
!
π X̃ φa (xt , yt , zt ) + X̃lφd (xr , yr , zr ) π
φ̃al (xt , yt , zt , xr , yr , zr ) = erfc − l − . (56)
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 125


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 , (57)

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 (51) 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 25. 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. (58)
max(DSf ) + min(DSf )

The parameters of this mapping function were numerically obtained by fitting the values from Table 25
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 25 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. (59)
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. (60)
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 25: 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 126


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 (57) 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 . (61)
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 (62)
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 (62) and the initial delays τ̃l from (51), 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 , (63)
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 (57), 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 · · . (64)
F DS
ff
f =1

The last step is different from other models. The WINNER [4] and 3GPP-3D model [26] 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 (51) 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 127


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

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

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 , (66)
l=1
n  o
φ̂l,f = arg exp j φ̃l − ∆φf . (67)

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 . (68)
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< (69)
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 (54). 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 } , (70)


φa1 = φd1 +π (71)
θ1d = arctan2 {zr − zt , d2d } , (72)
θ1a = −θ1d , (73)
p
d2d = (xr − xt )2 + (yr − yt )2 (74)

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  . (75)
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 . (76)
sin θ1 0 cos θ1

Copyright: Fraunhofer Heinrich Hertz Institute 128


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

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

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


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

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 [24] 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; (79)
180°
π · cθ · φ̂m
θl,m = θl + , for l > 1. (80)
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 26. 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 26: 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. [28]
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 129


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 [28]. However, it was not incorporated into the WINNER and 3GPP-3D models and no evaluation
was reported. Here, the idea from [28] 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 10
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 130


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

of the lth path follows from


dl = τ l · c + |r| , (81)
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 . (82)
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 (83)


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

In (84) 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 (86)

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 } (87)


 
a ar,l,m,s,z
θr,l,m,s = arcsin (88)
|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 10: Illustration of the calculation of the scatterer positions and updates of the arrival angles in the
single-bounce model

Copyright: Fraunhofer Heinrich Hertz Institute 131


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

The angles are calculated by

bt,l,m,s = r + al,m − et,s (89)


φdt,l,m,s = arctan2 {bt,l,m,s,y , bt,l,m,s,x } (90)
 
d bt,l,m,s,z
θt,l,m,s = arcsin (91)
|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 | (92)



ψ r,t,l,m,s = · (dr,t,l,m,s mod λ) , (93)
λ
20
1 X
τ r,t,l,s = · dr,t,l,m,s . (94)
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 11: 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 11. 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 (81). Hence, the total path lengths is

dl = |bl,m | + |cl,m | + |al,m | , (95)

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 (96)
d |bl,m |
sin θl,m

Copyright: Fraunhofer Heinrich Hertz Institute 132


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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, (95) 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 11 by the gray shaded area.

d+
l = τl · c + |r| − |al,m | (97)
dl,m = r + âl,m · |al,m | (98)
2
d+
l − |dl,m |2
|bl,m | =   (99)
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 (57). 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 133


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 (86), (87) and (88). The depature
angles are updated using (89), (90) and (91). The phases and delays are calculated using (93) and (94)
where the new path length at snapshot s is

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

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 (101)


φdt,1,s = arctan2 {rr,t,s,y , rr,t,s,x } (102)
 
d rr,t,s,z
θt,1,s = arcsin (103)
|rr,t,s |
φar,1,s = arctan2 {−rr,t,s,y , −rr,t,s,x } (104)
 
a −rr,t,s,z
θr,1,s = arcsin (105)
|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 (93) and (94)
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” [45]. Unfortunately, this leaves the reference
polarization undefined and thus is ambiguous.

Of all the different ways to describe polarization (see [45, 57]), 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 134


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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(θ, φ) = . (106)
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 , (107)

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. [29, 35, 58–60]) 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 , (108)
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 [38]. 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 [38]. 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 (109)
Ey (t) Ay e y
J [φ]
| {z }
Jones vector

The same expression is found in the antenna pattern (106) 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 135


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

Likewise, Ax ejx can be identified with F [φ] (θ, φ). This implies that the polarization coupling matrix M in
(157) 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 trans-
formation. 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 circular or elliptical polarized signals and elliptical polarized signals into linear polarized signals. This
implies that using (108) with complex-valued coefficients results in a completely random polarization be-
havior 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 (108) 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 12. 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 (157). 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 φ  (110)
sin θ

A 3×3 matrix R can now be used to describe the orientation change in 3-D space. The example in Figure 12
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◦ )  . (111)

0 sin(20 ) cos(20 ) ◦

Copyright: Fraunhofer Heinrich Hertz Institute 136


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 12: Example patterns for a dipole antenna

The orientation change is included in the vector c+ by multiplying R with (110).

c+ = RT · c (112)

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+
 
, (113)
z + + 
Φ = arctan2 cy , cx . (114)

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̂ = = (115)
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 [45]

F̂ [x]
   
sin Θ cos Φ − sin Φ  [θ] 
 F̂ [y]  =  sin Θ sin Φ cos Φ  · F (Θ, Φ) . (116)
F [φ] (Θ, Φ)
F̂ [z] − cos Θ 0 | {z }
| {z }
=F̂
=T(Θ,Φ)

Copyright: Fraunhofer Heinrich Hertz Institute 137


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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̂ (117)
| {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̃(ϑ) = , (118)
sin ϑ cos ϑ

where the polarization rotation angle ϑ follows from


 T  
sin θ cos φ sin Θ cos Φ
cos ϑ =  sin θ sin φ  · R ·  sin Θ sin Φ  , (119)
− cos θ − cos Θ
 T  
− sin φ sin Θ cos Φ
sin ϑ =  cos φ  · R ·  sin Θ sin Φ  , (120)
0 − cos Θ
ϑ = arctan2 [sin ϑ, cos ϑ] . (121)

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 (157).

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] (122)
− 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 138


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 [61] 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 [39, 62, 63]. 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σ .



µ (123)

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
σ (124)

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 (124) is mapped to a rotation matrix. This was also suggested by [36].
   
[linear] mθθ mθφ cos γ l,m − sin γ l,m
Ml,m = = (125)
mφθ mφφ sin γ l,m cos γ l,m

Copyright: Fraunhofer Heinrich Hertz Institute 139


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

Following the notations in [35], the rotation angle γ is calculated as


|mθθ |2 |mφφ |2 (cos γ l,m )2
XPRl,m = = = = (cot γ l,m )2 , (126)
|mφθ |2 |mθφ |2 (sin γ l,m )2
p 
γ l,m = arccot XPRl,m . (127)

3. Elliptical component
When channel measurements are done with circular polarized antennas such as in land-mobile satel-
lite scenarios [21], 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 (108) 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 = . (128)
0 exp(−jκl,m )
The phase shift κ is calculated using the XPR from (123) and an additional random component for
each cluster.
 
[dB]
XPRl = N XPR[LSP]
µ , XPR 2
σ (129)
p 
κl = arccot XPRl (130)
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 ) (131)
0 −1
The equation can be simplified by combining the first three operations into one.
+
γl,m = ϑr,l,m,s − γl,m (132)
!
+ +
− 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 ), (133)
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 (157), 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 140


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 (93). Both components are combined to

ψ+ 0

r,t,l,m,s = exp −jψ l,m − jψ r,t,l,m,s . (134)

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 (134) is combined with the initial coefficients (133) to
[2] [1]
gr,t,l,m,s = gr,t,l,m,s · ψ +
r,t,l,m,s . (135)

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 (57)
are applied.
20
[3] [2]
X
gr,t,l,s = gr,t,l,m,s (136)
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 (137)
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 (137) ensures that each path gets assigned the power value from (57). 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 [64] 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, (138)

Copyright: Fraunhofer Heinrich Hertz Institute 141


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 . (139)

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 (139) 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 · (140)
K0 1 otherwise.

The index l = 1 . . . L is the path number, P1 is the power of the first path that was calculated by (61), 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
(137) are then scaled to
[scale] [4]
gr,t,l,s = PG[eff]
s · KFl,s · gr,t,l,s (141)
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 13. The lifetime of scattering clusters

Copyright: Fraunhofer Heinrich Hertz Institute 142


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 13: 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] . (142)
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 14. 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 14, 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 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, causing

Copyright: Fraunhofer Heinrich Hertz Institute 143


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 14: Illustration of the snapshot coupling in dual-mobility simulations

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
[65, 66].

The current approach is to model this effect by a dual-slope PL model [26, 67]. 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 [? ] 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 (64) and path powers (62). 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 = , (143)
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 (144)
2

Copyright: Fraunhofer Heinrich Hertz Institute 144


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 (62)
of the path powers. !
Rf2
PLOS,f = 1 − · P1,f (145)
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 (146)
l=2 l=2

by using the initial DS στ that was also used to calculate the delays in (64). Then, the final path-delays
and path-powers are
 
τl = 0 τGR Sτ τ2 . . . Sτ τL , (147)
 
Pl = PLOS PGR P2 . . . PL . (148)
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 (144) and (145), 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 15: Illustration of the angles and vectors used for the calculations

As can be seen in Fig. 15, 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 (69) 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 (149)
d2D
 
a d hTX − hRX
θLOS = −θLOS = arctan (150)
d2D

Copyright: Fraunhofer Heinrich Hertz Institute 145


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 (151)
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 [56], this was solved by an exhaustive search over ∆θ ∈ [−π, π[ to find
the minimum AS
σθ = min σθ (∆θ ). (152)
∆θ

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π) − π, (153)


L
!
X
∆θ = arg Pl · exp (jθl ) , (154)
l=1

where θ̃l are the normalized angles and Pl are the power values from (148). Then, the AS can be obtained
by v
u L L
!2
uX  2 X
σθ = t Pl · θ̃l − Pl · θ̃l . (155)
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 . (156)

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 , (157)

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 (148), λ 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 ) · . (158)
2 0 −1

Copyright: Fraunhofer Heinrich Hertz Institute 146


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

In this equation, the normalization (145) 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 , (159)
λ
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 ) · . (160)
R 0 −R⊥

The factor R2 reverses the power scaling of the reflected path in (144) 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 (161)
λ
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] , (162)
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 [69? ]
 · sin θr − Z sin θr − Z
Rk = R ⊥ = (163)
 · sin θr + Z sin θr + Z
p
Z =  − cos2 θr (164)
q 2
R = 0.5 · Rk + 0.5 · |R⊥ |2 (165)
 
r d hTX + hRX
θ = −θGR = arctan . (166)
d2D
θr is the angle between the ground and the reflected path (see Fig. 15). An illustration of the magnitude of
the reflection coefficient for a value of  = 5 is illustrated in Fig. 16. The average coefficient R2 is shown as
a thick black line. This value was used in (144), (145) 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] . (167)
[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 27). 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 147


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

1
0.9

Power of Reflected Path R2


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 16: Values of the reflection coefficients for  = 5

Table 27: 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 Model for Satellite Orbital Motion

3GPP released a comprehensive study on non-terrestrial networks (NTNs) [70] in order include space or
airborne vehicles into the 5G infrastructure. These offer wide service coverage capabilities and reduced
vulnerability to physical attacks or natural disasters. The idea is to foster the roll-out of 5G services in
unserved areas, reinforce the 5G service reliability, and enable improved network scalability. To enable
simulation studies, such as link-budget analysis, link and system-level performance studies or coexistence
analysis with terrestrial cellular networks, channel model guidelines have been provided. A model calibration
was done in [17] for several aspects of the model. To support these activities, support for NTNs has been
added to the QuaDRiGa channel model [44] v2.4. However, since QuaDRiGa has been developed primarily
for terrestrial applications, some modifications are necessary to incorporate NTNs. On the other hand,
many additional modeling components are already available that go beyond the 3GPP guidelines. This
allows more complex simulations to be conducted, but requires modifications to the model:

Coordinate system The 3GPP NTN model [70] uses a simplified ”Earth centered Earth fixed” coordinate
system, whereas the terrestrial 3GPP model [10] uses metric local Cartesian coordinates. In order to combine
the two models, we provide a coordinate transformation that maps orbital positions and trajectories into
the local Cartesian coordinates.

Frequency range [10] includes an optional model for multiple frequencies which has been implemented
in QuaDRiGa [16]. However, this option was not considered by [70]. Hence, [70] only provides model
parameters for the S-band (2-4 GHz) and for the KA-band (26.5-40 GHz). We modified these parameters
to support a continuous frequency range from 2-40 GHz. Thus, we can use the multi-frequency option and
also perform simulations at the commonly used KU-band (10.7-17.5 GHz).

Copyright: Fraunhofer Heinrich Hertz Institute 148


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

Spatial Consistency Another optional feature provided by [10] is SC which solves the problem of achieving
realistic correlations in multi-user wireless channels. This becomes important for multi-satellite simulations
where, for example, the LOS to multiple satellites might be blocked by the same building. SC is available
in QuaDRiGa [12] and can be used for NTN channels.

Mobility Satellites in low Earth orbit (LEO) are highly mobile, causing large differential delays and Doppler
shifts. However, none of the 3GPP models supports mobility at both ends of the link. The assumption in
[70] is that all satellite positions are fixed. A dual-mobility model is available in QuaDRiGa [12, 16]. It
can be used to simulate entire satellite constellations and track orbital movements for a longer time-period.
This requires that the model parameters are given as a function of the satellite elevation angle.

Orbit model The satellite orbit model [71] uses Earth’s attraction as the main factor for orbital motion.
R +R
Six parameters define the satellite position (see Fig. 17): 1) the length of the semi-major axis a = a 2 p ;
R −R
2) the eccentricity e = Raa +Rpp determines the amount by which an orbit deviates from a circle (0 yields a
circular orbit); 3) the inclination angle ι measures the tilt of the orbit; 4) the longitude of the ascending
node Ω orients the point where the orbit passes upward through the equatorial plane; 5) the argument of
periapsis ω defines the orientation of the ellipse in the orbital plane; and, 6) the true anomaly ν defines
the position of the satellite along that ellipse. Given the values Ω0 , ω0 and ν0 at a reference time, orbit
mechanics predict the position of the satellite in the future.

Table 28: Constants required for orbit prediction


Parameter Notation Value Unit
Radius of the Earth Re 6378.137 km
Mass of the Earth Me 5.9722 · 1024 kg
Earth’ rotation period Te 86164.09054 s
Earth’s angular rotation rate ωe 7.29211585453 · 10−5 rad/s
Gravitational constant µ 6.67408 · 10−20 km3 /s2 /kg
Earth’s non-sphericity factor J2 0.001082636 -

Orbit perturbations are mainly due to Earth’s oblateness. This is modeled by changing the ascending node
longitude and perigee argument. For a given time point t relative to the reference time, the values Ω(t) and
ω(t) are updated to

Ω(t) = Ω0 − t · n̄ · p̄ · cos ι, (168)


2

ω(t) = ω0 + t · n̄ · p̄ · 2 − 2.5 · sin ι , (169)

where the parameters n̄ and p̄ are given by


r
µ · Me  2
 p
2

n̄ = · 1 + p̄ · 1 − 1.5 · sin ι · 1 − e , (170)
a3
3 · J2 · Re2
p̄ = . (171)
2a2 · (1 − e2 )2
The constants Me , Re , µ and J2 can be found in Table 28. An update of ν(t) is calculated using the eccentric
anomaly {E0 , E(t)} instead of the true anomaly {ν0 , ν(t)} by solving

E(t) − e · sin E(t) = E0 − e · sin E0 + n̄ · t, (172)

where the transformation between E and ν follows from


  r
E 1+e ν 
tan = · tan . (173)
2 1−e 2

Copyright: Fraunhofer Heinrich Hertz Institute 149


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

With the updated parameters Ω(t), ω(t) and ν(t) it is possible to calculate the satellite position in Cartesian
coordinates by
xi = R · {cos(ω + ν) · cos Ω − sin(ω + ν) · sin Ω · cos ι} (174)
yi = R · {cos(ω + ν) · sin Ω − sin(ω + ν) · cos Ω · cos ι} (175)
zi = R · sin(ω + ν) · sin ι, (176)
where R is the distance between Earth’s center and the satellite
a · (1 − e)2
R(t) = . (177)
1 + e · cos ν(t)

To calculate the satellite coordinates as seen by an observer on Earth, Earth’s rotation needs to be taken
into account. This is done by translating the satellite positions into a geographic coordinate system and
adding the Earth’s angular rotation.
 q 
2 2
θr (t) = arctan2 zi (t), xi (t) + yi (t) (178)

φr (t) = arctan2 {yi (t), xi (t)} − ωe · t (179)

arctan2 (y, x) is the four quadrant inverse tangent of the elements y and x having values between −π and
π. At the reference time t = 0, Earth’s prime meridian is aligned with the vernal equinox. The satellite
coordinates in rotating Cartesian coordinates (xr , yr , zr ) follow from the transformation

x = R · cos φ · cos θ, (180)


y = R · sin φ · cos θ, (181)
z = R · sin θ. (182)

satellite perigee
R Rp
bit
or true
anomaly
ν
argument
ω
of
longitude of periapsis
ascending Ω reference d
irection
node (vernal equ
inox)
equ
ator of
i al p
lane line g ι
ndin
asce node inclination
orbi
Ra tal p
lane ascending
apogee node

Figure 17: Diagram illustrating various terms in relation to satellite orbits

Copyright: Fraunhofer Heinrich Hertz Institute 150


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

Coordinate transformation The MT-centric coordinate system is defined by a tangential plane having
its origin at a reference position on Earth given by its longitude φu , latitude θu and radius Re . The
transformation (180)-(182) converts these to Cartesian coordinates (xu , yu , zu ). The transformation of the
satellite coordinates (xr , yr , zr ) into MT-centric coordinates is done by
   
xq (t) xr (t) − xu
 yq (t)  = Rq ·  yr (t) − yu  , (183)
zq (t) zr (t) − zu
where the rotation matrix Rq aligns the geographic Cartesian coordinate system with the MT-centric coor-
dinate system whose x-axis points eastwards and y-axis points northwards.
 
− sin φu cos φu 0
Rq =  − sin θu cos φu − sin θu sin φu cos θu  (184)
cos θu cos φu cos θu sin φu sin θu

The satellite is visible above the horizon when zq (t) > 0 and its elevation angle is
n q o
α(t) = arctan2 zq (t), x2q (t) + yq2 (t) . (185)

Satellites use directional antennas. Hence, the satellite’s orientation towards the observer on Earth is
important. The following steps calculate this orientation, assuming that the satellite is spinning at one
revolution per orbit so that the same side always faces the Earth. First, three vectors are calculated
 T
U = x u yu z u , (186)
 T
R(t) = xr (t) yr (t) zr (t) , (187)
D(t) = R(t + ∆t) − R(t). (188)

They are normalized to unit-length vectors Ū, R̄(t) and D̄(t). The vector D̄(t) is the direction of travel
calculated from two orbital positions at time points t and t + ∆t. The bank angle β is the orientation around
the axis drawn through the body of the satellite from tail to nose, relative to the tangential plane.

βq (t) = arcsin ŪT · R̄(t) × D̄(t) .


 
(189)

The heading angle γ is the pointing direction of the satellite.

D̄q (t) = Rq · D̄(t) (190)


n o
γq (t) = arctan2 yD̄q (t), xD̄q (t) (191)

The tilt angle δ is the vertical orientation of the satellite.


n q o
δq (t) = arctan2 zD̄q (t), x2D̄ (t) + yD̄
2 (t) (192)
q q

The six parameters xq , yq , zq , βq , γq , δq define the satellite’s position and orientation as seen by an observer
on Earth. Hence, satellites can be used as transmitters in GSCMs such as QuaDRiGa. Their orbital motion
can be tracked over time and so can be their communication links. This enables the realistic simulation of
the propagation channels of entire satellite networks.

3.11 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:

Copyright: Fraunhofer Heinrich Hertz Institute 151


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 3 TECHNICAL DOCUMENTATION

• 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
[28] 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 [38]. In this approach, changes
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 152


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.8]) % 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 ( cat (3 , map {:}) ,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 153


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 ( cat (3 , map {:}) ,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 154


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 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 155


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.8]) % 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 156


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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} = ’ Q u a D R i G a _ N T N _ U r b a n _ L O S ’; % P1 : Start s c e n a r i o : Urban LOS
2 t . add_segment ([64;64;2] , ’ Q u a D R i G a _ N T N _ U r b a n _ N L O S ’ ,2) ; % P2 : LOS to NLOS change
3 t . add_segment ([84;84;2] , ’ Q u a D R i G a _ N T N _ U r b a n _ L O S ’ ,2) ; % P3 : NLOS to LOS change
4 t . add_segment ([233;68;2] , ’ Q u a D R i G a _ N T N _ U r b a n _ N L O S ’ ,2) ; % P6 : LOS to NLOS change
5 t . add_segment ([272;103;2] , ’ Q u a D R i G a _ N T N _ U r b a n _ L O S ’ ,2) ; % P7 : NLOS to LOS change
6 t . add_segment ([283;114;2] , ’ Q u a D R i G a _ N T N _ U r b a n _ N L O S ’ ,2) ; % P7 : LOS to NLOS change
7 t . add_segment ([324;153;2] , ’ Q u a D R i G a _ N T N _ D e 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] , ’ Q u a D R i G a _ N T N _ U r b a n _ N L O S ’ ,2) ; % P10 : Lower density of b u i l d i n g s
9 t . add_segment ([490;320;2] , ’ Q u a D R i G a _ N T N _ R u r a l _ N L O S ’ ,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 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
4 time = ( 0: numel ( dist ) - 2 ) *0.1; % C a l c u l a t e time sample points
5 speed = diff ( dist ) * 10; % C a l c u l a t e the speed
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 4.7]) % Change Plot Size
8 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
9
10 plot ( time , speed , ’ Linewidth ’ ,2 ) ; % Plot speed vs . time
11 xlabel ( ’ Simulation Time ( s ) ’) ; ylabel ( ’ Speed ( m / s ) ’) ; grid on ; % Annotations

Copyright: Fraunhofer Heinrich Hertz Institute 157


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

12 axis ([0 ,100 ,0 ,11]) ;

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.8]) % Adjust paper size for plot
23 [ map , x_coords , y_coords ]= l . power_map ( ’5G - A L L S T A R _ U r b a n _ L O S ’ , ’ 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 158


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 l . update_rate = 0.01; % Set channel update rate to 100 Hz
2 c = l . get_channels ; % Generate channels
3
4 pow = 10* log10 ( reshape ( sum ( abs ( c . coeff (: ,: ,: ,:) ) .^2 ,3) ,2 ,[] ) ) ; % C a l c u l a t e the power
5 time = (0: c . no_snap -1) *0.01; % Vector with time samples
6
7 ar = zeros (1 , c . no_snap ) ; % Shading of events
8 ar (900:1200) = -200; % NLOS from P2 to P3
9 ar (3000:4000) = -200; % Stop at P5
10 ar (4650:5050) = -200; % NLOS from P6 to P7
11 ar (5300:5800) = -200; % NLOS from P6 to P7
12 ar (6650:7300) = -200; % Stop at P9
13 ar (7800:8900) = -200; % Stop at P9
14
15 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.7]) % Change Plot Size
16 figure ( ’ Position ’ ,[ 100 , 100 , 1200 , 400]) ; % New figure
17 a = area ( time , ar , ’ FaceColor ’ ,[0.7 0.9 0.7] , ’ LineStyle ’ , ’ none ’) ; % Area shading
18 hold on ; plot ( time , pow ’+50) ; hold off ;
19 xlabel ( ’ Simulation Time ( s ) ’) ; ylabel ( ’ RX power ( dBm ) ’) ; grid on ; axis ([0 ,100 ,[ -150 , -80]]) ;
20 legend ( ’ Event ’ , ’ RX LHCP ’ , ’ RX RHCP ’) ; set ( gca , ’ layer ’ , ’ top ’)
21
22 text ( 7 , -85 , ’ P2 ’ ) ; text ( 11 , -85 , ’ P3 ’ ) ; text ( 8 , -145 , ’ NLOS ’ ) ; text ( 20 , -85 , ’ P4 ’ ) ;
23 text ( 33 , -85 , ’ P5 ’ ) ; text ( 32 , -145 , ’ Stop ’ ) ; text ( 45.5 , -85 , ’ P6 ’ ) ; text ( 50.5 , -85 , ’ P7 ’ ) ;
24 text ( 44 , -145 , ’ NLOS ’ ) ; text ( 57 , -85 , ’ P8 ’ ) ; text ( 53 , -145 , ’ NLOS ’ ) ; text ( 69 , -85 , ’ P9 ’ ) ;
25 text ( 68 , -145 , ’ Stop ’ ) ; text ( 77 , -85 , ’ P10 ’ ) ; text ( 80 , -145 , ’ Urban ’ ) ; text ( 92 , -145 , ’ Rural ’ ) ;

1 Starting channel generation using QuaDRiGa v2 .6.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 , 28 channel segments
6 Initializing random generators
7 Generating parameters
8 Parameters [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds
9 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 55 seconds
10 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 1 seconds
11 Formatting output channels - 1 channel object
12 Total runtime : 57 seconds

Copyright: Fraunhofer Heinrich Hertz Institute 159


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

-80
P2 P3 P4 P5 P6 P7 P8 P9 P10 Event
-90 RX LHCP
RX power (dBm) RX RHCP
-100

-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 warning ( ’ off ’ , ’ QuaDRiGa : qd_layout : BuilderReset ’) ; % Disable builder - reset w a r n i n g s
2 rot = -120:10:120; % R o t a t i o n angle
3 h = zeros (4 ,4 , numel ( rot ) ) ;
4 for n = 1 : numel ( rot )

Copyright: Fraunhofer Heinrich Hertz Institute 160


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

5 cc = copy ( a ) ; % Create copy of the Tx antenna ( !!! )


6 cc . rota te_patte rn ( rot ( n ) , ’x ’) ; % Assign r o t a t i o n angle
7
8 l . tx_array = cc ; % Set Tx antenna
9 c = l . get_channels ; % Update channel c o e f f i c i e n t s
10 h (: ,: , n ) = c . coeff (: ,: ,1 ,1) ;
11 end
12 warning ( ’ on ’ , ’ all ’) ; % Enable all w a r n i n g s

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.7]) % 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

Copyright: Fraunhofer Heinrich Hertz Institute 161


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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
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

1
Normalized Amplitude

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.8]) % Default Paper Size
11

Copyright: Fraunhofer Heinrich Hertz Institute 162


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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
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

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

Copyright: Fraunhofer Heinrich Hertz Institute 163


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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.
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.7]) % 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
NLOS without drifting
180
Delay [ns]

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


10

0
Tap power (dB)

-10

-20

-30

-40
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

Copyright: Fraunhofer Heinrich Hertz Institute 164


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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.

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 position

Copyright: Fraunhofer Heinrich Hertz Institute 165


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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

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.7]) % 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

Copyright: Fraunhofer Heinrich Hertz Institute 166


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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.7]) % Adjust paper size for plot
8 l . visualize ; % Plot the layout

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.

Copyright: Fraunhofer Heinrich Hertz Institute 167


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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
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.7]) % 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.52845


2 NLOS power : 0.22007

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 ] ’) ;

Copyright: Fraunhofer Heinrich Hertz Institute 168


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

9 ylabel ( ’ LOS Power , linear scale ’) ;


10 title ( ’ Tx : Vertical , Rx : 45 deg ’) ;

Tx: Vertical , Rx: 45 deg


1
Tx vertical, Rx 45 deg
Tx 45 deg, Rx vertical

LOS Power, linear scale


0.8

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.

Copyright: Fraunhofer Heinrich Hertz Institute 169


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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]) ;
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
Rx: 45 deg
LOS Power, linear scale

0.8 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 ’ };

Copyright: Fraunhofer Heinrich Hertz Institute 170


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

We calculate the channel coefficients and plot the list of created segments.
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 171


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.7]) % 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 172


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 Parameters [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 2 seconds


2 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 13 seconds
3 Snapshot 1 / 1 ... 23.6 sec , 0:00 remaining

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 173


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.7]) % 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 174


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 175


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 . 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
ASA C [deg]

40

20
Equal
+/- 10% Error
0
0 10 20 30 40 50 60 70 80
ASA P [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]

Copyright: Fraunhofer Heinrich Hertz Institute 176


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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
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.75


2 Corr . KF - ESA : -0.68
3 Corr . KF - SF : -0.17
4 Corr . KF - DS : 0.08
5 Corr . DS - SF : 0.51
6 Corr . DS - ASA : -0.14
7 Corr . DS - ESA : -0.08
8 Corr . ASA - ESA : 0.62

Copyright: Fraunhofer Heinrich Hertz Institute 177


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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.
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.7]) % 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 178


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 Parameters [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds
3 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 29 seconds
4 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 1 seconds
5 Drifting disabled :
6 Parameters [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds
7 Parameters [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds
8 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 2 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.7]) % 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 ’)

Copyright: Fraunhofer Heinrich Hertz Institute 179


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

10 hold off
11
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


Power of the LOS component -90

-100

-110

-120
Drifting
No drifting
-130
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 180


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

PDP for the circular track with drifting


0
-90
45

Position on circle [deg]


90
-100
135
180
-110
225
270 -120
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
Distance from start point [m]

-90
2.5
5
-100
7.5
10 -110
12.5
15 -120
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

Copyright: Fraunhofer Heinrich Hertz Institute 181


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 without drifting ’) ;

PDP for the linear track without drifting


0
Distance from start point [m]

2.5
-100
5
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 182


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.7]) % Adjust paper size for plot
15 l . visualize ; % Plot the layout

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) * get_length ( t ) /( 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.7]) % Change Paper Size
7 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
8

Copyright: Fraunhofer Heinrich Hertz Institute 183


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

9 plot ( dist_orig , pwr_orig , ’r ’ , ’ Linewidth ’ ,2 )


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
Power [dB]

-100
-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
-90
2.5
5 -100
7.5
Time [s]

10 -110
12.5
15 -120

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

Copyright: Fraunhofer Heinrich Hertz Institute 184


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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.
1 t . m ov e m e n t _ p r o f i l e = [ 0 ,7 ; 5 ,0 ; 6 ,0 ; 20 , get_length ( t ) ] ’; % 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
-90
2.5
5 -100
7.5
Time [s]

10 -110
12.5
15 -120

17.5
-130
0 0.32 0.64 0.96 1.28 1.6 1.92 2.24
Delay [ s]

Copyright: Fraunhofer Heinrich Hertz Institute 185


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

The following code segment shows a movie of the channel response. (You nedd to run the code manually in
MATLAB or Octave)
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

Copyright: Fraunhofer Heinrich Hertz Institute 186


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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.
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.7]) % 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

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.

Copyright: Fraunhofer Heinrich Hertz Institute 187


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 . ’) ;
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.7]) % 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


-90
450
399 -100
349
Distance [m]

299 -110
249
-120
198
148
-130
98
48 -140
-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 ) * get_length ( t ) / 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 ’)

Copyright: Fraunhofer Heinrich Hertz Institute 188


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

Position dependent power

-90

-100

Power [dB]
-110

-120

-130 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.
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


14
LOS
12 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 ’) ;

Copyright: Fraunhofer Heinrich Hertz Institute 189


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

Position dependant delay spread


LOS
0.5

Delay Spread [dB]


0.4

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;
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


20
LOS
NLOS
15
Probability [%]

10

0
0 0.1 0.2 0.3 0.4 0.5
[ 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!)

Copyright: Fraunhofer Heinrich Hertz Institute 190


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

• 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.
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.7]) % 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

Copyright: Fraunhofer Heinrich Hertz Institute 191


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 ]) ;
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 ’)

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

Copyright: Fraunhofer Heinrich Hertz Institute 192


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 ’)

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 .6.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 Parameters [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 2 seconds
7 Preparing multi - frequency simulations - 8 builders
8 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 6 seconds
9 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 0 seconds
10 Formatting output channels - 200 channel objects
11 Total runtime : 11 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).

Copyright: Fraunhofer Heinrich Hertz Institute 193


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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.

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.7]) % 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 .6.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 Parameters [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 1 seconds
8 Preparing multi - frequency simulations - 27 builders
9 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 16 seconds
10 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 2 seconds

Copyright: Fraunhofer Heinrich Hertz Institute 194


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

11 Formatting output channels - 9 channel objects


12 Total runtime : 22 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
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


2 GHz
-60
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

Copyright: Fraunhofer Heinrich Hertz Institute 195


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 ’)

Path gain for 3GPP UMi LOS


2 GHz
-60 28 GHz
60 GHz
Path gain in [dB]

-70

-80

-90

-100

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
-70 60 GHz
Path gain in [dB]

-80

-90

-100

-110

-120
0 10 20 30 40 50 60 70
BS-MT 2D distance in [m]

Copyright: Fraunhofer Heinrich Hertz Institute 196


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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

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.7]) % 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.

Copyright: Fraunhofer Heinrich Hertz Institute 197


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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.
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_para meters ; % 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 ] = get_length ( l . rx_track ) ; % 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
-90 LOS path
NLOS paths
-95
Path power [dB]

-100
-105
-110
-115
-120
-125
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.

Copyright: Fraunhofer Heinrich Hertz Institute 198


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 ’) ;

Delay spread and delays


2.5
Requested DS
Actual DS
2 LOS delay
NLOS delays
Delay [mus]

1.5

0.5

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 ’)

Copyright: Fraunhofer Heinrich Hertz Institute 199


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

Azimuth of Arrival
600
Requested AS
Actual AS
400 LOS angle
NLOS angles

Angle [deg]
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 ) ) ;
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
LOS angle
50
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

Copyright: Fraunhofer Heinrich Hertz Institute 200


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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 ’)

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 ’)

Copyright: Fraunhofer Heinrich Hertz Institute 201


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

Elevation of Departure
20
Requested AS
Actual AS
10 LOS angle
NLOS angles

Angle [deg]
0

-10

-20

-30
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.8]) % Default Paper Size
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

Copyright: Fraunhofer Heinrich Hertz Institute 202


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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
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.7]) % 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

Copyright: Fraunhofer Heinrich Hertz Institute 203


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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
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 ] ’)

Copyright: Fraunhofer Heinrich Hertz Institute 204


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

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:

• 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 l . update_rate = 1e -3;
2 c = l . get_channels ;

1 Starting channel generation using QuaDRiGa v2 .6.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 , 22 channel segments
6 Initializing random generators
7 Generating parameters
8 Parameters [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 1 seconds
9 Channels [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 167 seconds
10 Merging [ oooooooooooooooooooooooooooooooooooooooooooooooooo ] 13 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 ] 2 seconds
12 Formatting output channels - 3 channel objects
13 Total runtime : 185 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.

Copyright: Fraunhofer Heinrich Hertz Institute 205


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

1 time = ( 0 : c (1 ,1) . no_snap -1 ) * l . 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.7]) % 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
-60 BS - Car2
Car1 - Car2
-70
Path Gain [dB]

-80
-90
-100
-110
-120
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 -220 Hz (v*fc/c). For BS-Car2, it is
180 Hz and for Car1-Car2 if goes from 400 to -400 Hz when the cars pass each other. Due to the multipath
propagation, additional Doppler components occur.
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 = -( (0: w -1) /( w -1) -0.5) / l . update_rate ; % The Doppler axis in Hz
6 time = ( 0 : c (1 ,1) . no_snap -1 ) * l . 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

Copyright: Fraunhofer Heinrich Hertz Institute 206


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 4 TUTORIALS

Doppler Spectrum BS-Car1


500
-60

Doppler shift [Hz]


-80

-100
0
-120

-140

-500
0 2 4 6 8
Time [s]

Doppler Spectrum BS-Car2


500
-60
Doppler shift [Hz]

-80

0 -100

-120

-140
-500
0 2 4 6 8
Time [s]

Doppler Spectrum Car1-Car2


500
-80
Doppler shift [Hz]

-100

0
-120

-140

-500
0 2 4 6 8
Time [s]

Copyright: Fraunhofer Heinrich Hertz Institute 207


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 [72] and are listed in
Table 29.

Table 29: 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 208


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 warning ( ’ off ’ , ’ all ’) ;
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 = 2 e9 ; % 2 GHz center f r e q u e n c y
7 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
8
9 % Antenna c o n f i g u r a t i o n 1
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 . , 12 deg downtilt , 0.5 lambda spacing
11 a1 = qd_arrayant ( ’3 gpp -3 d ’ , 10 , 1 , s . center_frequency , 4 , 12 , 0.5 ) ;
12 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
13 a1 . name = ’K = M =10 ’; % Antenna name
14
15 % Antenna c o n f i g u r a t i o n 2
16 % 1 element in elevation , 1 element in azimuth , v e r t i c a l pol .
17 a2 = qd_arrayant ( ’3 gpp -3 d ’ , 1 , 1 , s . center_frequency , 1 , 0 , 0.5 ) ;
18 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
19 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 tic
2 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 )
3 create_curves = 1:4; % The number of curves to create
4
5 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
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) , a2 ) ; % 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 = M =1) ’;
14
15 l (1 ,2) = qd_layout . generate ( ’ regular ’ , 19 , isd (2) , a1 ) ; % 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) , a2 ) ; % 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 = M =1) ’;
24
25 l (1 ,4) = qd_layout . generate ( ’ regular ’ , 19 , isd (4) , a1 ) ; % 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 % Drop 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 , [] , no_go_dist ( il ) ) ;
34
35 % Set random height of the users
36 floor = randi (5 ,1 , l (1 , il ) . no_rx ) + 3; % Number of floors in the b u i l d i n g
37 for n = 1 : l (1 , il ) . no_rx

Copyright: Fraunhofer Heinrich Hertz Institute 209


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

38 floor ( n ) = randi ( floor ( n ) ) ; % Floor level of the UE


39 end
40 l (1 , il ) . rx_position (3 ,:) = 3*( floor -1) + 1.5; % Height in meters
41
42 % 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 )
43 % " 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)
44 switch il
45 case {1 ,2} % UMi
46 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_3D_UMi ’ ,[] ,[] ,0.8) ;
47 case {3 ,4} % UMa
48 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_3D_UMa ’ ,[] ,[] ,0.8) ;
49 end
50 l (1 , il ) . rx_position (3 ,~ indoor_rx ) = 1.5; % Set outdoor - users to 1.5 m height
51
52 % Set user antenna
53 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
54 end
55 toc

1 Elapsed time is 13.826392 seconds .

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 init_sos ( b ) ; % I n i t i a l i z e random g e n e r a t o r s
10 gen_lsf_parameters ( b ); % Generat shadow fading
11 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
12
13 cnt = 1; % Counter
14 sic = size ( b ) ;
15 for i_cb = 1 : numel ( b )
16 [ i1 , i2 ] = qf . qind2sub ( sic , i_cb ) ;
17 tx_name = [ ’ Tx ’ , num2str ( i2 , ’ %02 d ’) ]; % Tx name , e . g . " Tx01 "
18
19 if b ( i1 , i2 ) . no _r x_ p os it io n s > 1
20 tmp = b ( i1 , i2 ) . get_angles ; % 3 D angles btween BS and MT
21 zod ( cnt : cnt + b ( i1 , i2 ) . no_rx_positions -1 , il ) = 90 - tmp (3 ,:) ;
22 end
23
24 for i_mt = 1 : b ( i1 , i2 ) . no _r x_ p os it io n s
25 rx_name = b ( i1 , i2 ) . rx_track (1 , i_mt ) . name ; % Rx name , e . g . " Rx0001 "
26 name { cnt } = [ tx_name , ’_ ’ , rx_name ]; % Link name , e . g . " T x 0 1 _ R x 0 0 0 1 "
27 coeff ( cnt ,:) = cf ( i1 , i2 ) . coeff (1 ,: ,1 , i_mt ) ; % Channel c o e f f i c i e n t s
28 cnt = cnt + 1; % I n c r e a s e counter
29 end
30 end
31
32 [~ , ii ] = sort ( name ) ; % Get the correct order of the c h a n n e l s
33 zod (: , il ) = zod ( ii , il ) ; % Sort ZODs by name
34
35 tmp = reshape ( coeff ( ii ,:) , no_rx , 19 , 3 ) ; % Split the 3 sectors from each BS site
36 tmp = permute ( tmp , [1 ,3 ,2] ) ; % Reorder the c h a n n e l s
37 pg_eff (: ,: , il ) = reshape ( tmp , no_rx , [] ) ;
38 end
39 pg_eff = abs ( pg_eff ) .^2; % A m p l i t u d e --> Power
40 zod = reshape ( zod , no_rx , 19 , 4 ) ;
41 toc

1 Elapsed time is 448.685015 seconds .

Copyright: Fraunhofer Heinrich Hertz Institute 210


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.9]) % 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 211


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

100
QD. -96.9 -101.4 -111.5 -111.3
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)
v.2.6.0-0 3D-UMa (K=M=10)
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 212


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

100
QD. 6.4 8.1 5.2 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)
v.2.6.0-0 3D-UMa (K=M=10)
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 213


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

100
QD. 91.4 92.3 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)
v.2.6.0-0 3D-UMa (K=M=10)
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 warning ( ’ off ’ , ’ all ’) ;
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 = 2 e9 ; % 2 GHz center f r e q u e n c y
7
8 % BS antenna c o n f i g u r a t i o n 1
9 % 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
10 a_bs_1 = qd_arrayant ( ’3 gpp -3 d ’ , 2 , 2 , s . center_frequency , 1 , 0 , 0.5 ) ;
11 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
12 a_bs_1 . name = ’K =1 , M =2 ’; % Antenna name
13
14 % BS antenna c o n f i g u r a t i o n 2
15 % 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
16 a_bs_2 = qd_arrayant ( ’3 gpp -3 d ’ , 10 , 2 , s . center_frequency , 6 , 12 , 0.5 ) ;
17 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
18 a_bs_2 . name = ’K = M =10 ’; % Antenna name
19
20 % MT antenna c o n f i g u r a t i o n 1
21 % 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
22 a_mt_1 = qd_arrayant ( ’ omni ’) ;
23 a_mt_1 . copy_element (1 ,2) ;
24 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;
25
26 % MT antenna c o n f i g u r a t i o n 2

Copyright: Fraunhofer Heinrich Hertz Institute 214


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

27 % 1 element in elevation , 2 e l e m e n t s in azimuth , X - pol . 0/90 , 0.5 lambda spacing


28 a_mt_2 = qd_arrayant ( ’ omni ’) ;
29 a_mt_2 . copy_element (1 ,2) ;
30 a_mt_2 . Fa (: ,: ,2) = 0;
31 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 tic
2 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 )
3 create_curves = 1:4; % The number of curves to create
4
5 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
6 s . s ho w _ p r o g r e s s _ b a r s = 0; % Enable / disable status display
7
8 isd = [ 200 , 200 , 500 , 500 ]; % ISD in each layout
9 no_go_dist = [ 10 , 10 , 35 , 35 ]; % Min . UE - eNB 2 D d i s t a n c e
10
11 l (1 ,1) = qd_layout . generate ( ’ regular ’ , 19 , isd (1) , a_bs_1 ) ; % 200 m ISD , K = M =1
12 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
13 l (1 ,1) . tx_position (3 ,:) = 10; % 10 m BS height
14 l (1 ,1) . name = ’3D - UMi ( K =1 , M =2) ’;
15
16 l (1 ,2) = qd_layout . generate ( ’ regular ’ , 19 , isd (2) , a_bs_2 ) ; % 200 m ISD , K = M =10
17 l (1 ,2) . tx_position (3 ,:) = 10; % 10 m BS height
18 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
19 l (1 ,2) . name = ’3D - UMi ( K = M =10) ’;
20
21 l (1 ,3) = qd_layout . generate ( ’ regular ’ , 19 , isd (3) , a_bs_1 ) ; % 500 m ISD , K = M =1
22 l (1 ,3) . tx_position (3 ,:) = 25; % 25 m BS height
23 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
24 l (1 ,3) . name = ’3D - UMa ( K =1 , M =2) ’;
25
26 l (1 ,4) = qd_layout . generate ( ’ regular ’ , 19 , isd (4) , a_bs_2 ) ; % 500 m ISD , K = M =10
27 l (1 ,4) . tx_position (3 ,:) = 25; % 25 m BS height
28 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
29 l (1 ,4) . name = ’3D - UMa ( K = M =10) ’;
30
31 % Dorp users in each layout
32 for il = create_curves
33 l (1 , il ) . no_rx = no_rx ; % Number of users
34 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 , [] , no_go_dist ( il ) ) ;
35
36 % Set random height of the users
37 floor = randi (5 ,1 , l (1 , il ) . no_rx ) + 3; % Number of floors in the b u i l d i n g
38 for n = 1 : l (1 , il ) . no_rx
39 floor ( n ) = randi ( floor ( n ) ) ; % Floor level of the UE
40 end
41 l (1 , il ) . rx_position (3 ,:) = 3*( floor -1) + 1.5; % Height in meters
42
43 % 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 )
44 % " 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)
45 switch il
46 case {1 ,2} % UMi
47 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_3D_UMi ’ ,[] ,[] ,0.8) ;
48
49 case {3 ,4} % UMa
50 indoor_rx = l (1 , il ) . set_scenario ( ’3 GPP_3D_UMa ’ ,[] ,[] ,0.8) ;
51 end
52 l (1 , il ) . rx_position (3 ,~ indoor_rx ) = 1.5; % Set outdoor - users to 1.5 m height
53
54 switch il % Set user antenna
55 case {1 ,3} % ULA
56 l (1 , il ) . rx_array = a_mt_1 ;
57 case {2 ,4} % X - POL
58 l (1 , il ) . rx_array = a_mt_2 ;

Copyright: Fraunhofer Heinrich Hertz Institute 215


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

59 end
60 end
61 toc

1 Elapsed time is 15.514651 seconds .

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 2756.396514 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.9]) % 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 216


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.9 -98.3 -111.6 -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)
v.2.6.0-0 3D-UMa (K=M=10)
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 }) ;

Copyright: Fraunhofer Heinrich Hertz Institute 217


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

29 text (( tx +0.1* il ) * wx + xm , ty -4 , num2str ( sinr36873b ( il ,11) , ’ %1.1 f ’) , ’ Color ’ , line_col { il }) ;


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.5 3.7 2.9 3.0
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)
v.2.6.0-0 3D-UMa (K=M=10)
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

Copyright: Fraunhofer Heinrich Hertz Institute 218


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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:

µ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.1 3.6 1.5 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)
v.2.6.0-0 3D-UMa (K=M=10)
0
0 5 10 15 20 25 30 35 40 45 50
ZSD (deg)

Copyright: Fraunhofer Heinrich Hertz Institute 219


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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
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. 8.0 8.3 10.7 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)
v.2.6.0-0 3D-UMa (K=M=10)
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

Copyright: Fraunhofer Heinrich Hertz Institute 220


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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
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
H
s1,2 = · eig Hn Hn
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 [%] ’)

Copyright: Fraunhofer Heinrich Hertz Institute 221


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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 ] ) ;

100
QD. 12.8 12.0 12.7 13.9
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)
v.2.6.0-0 3D-UMa (K=M=10)
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 222


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

100
QD. -0.7 5.7 -0.7 7.3
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)
v.2.6.0-0 3D-UMa (K=M=10)
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 223


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

100

90

80

70

60
CDF [%]

50

40
QD. 13.2 5.6 13.1 6.1
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)
v.2.6.0-0 3D-UMa (K=M=10)
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 warning ( ’ off ’ , ’ all ’) ;
4
5 % Antenna c o n f i g u r a t i o n 1 ( UMa and UMi )
6 % 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
7 a1 = qd_arrayant ( ’3 gpp -3 d ’ , 10 , 1 , [] , 4 , 12 , 0.5 ) ;
8 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 ]
9
10 % Antenna c o n f i g u r a t i o n 1 ( Indoor )
11 % 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
12 a2 = qd_arrayant ( ’3 gpp -3 d ’ , 10 , 1 , [] , 4 , 20 , 0.5 ) ;
13 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

Copyright: Fraunhofer Heinrich Hertz Institute 224


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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
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

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 225


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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 3595.101356 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 ’ ,[16.5 7.3]) % 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 226


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.6 -132.5 -149.7 QD. -121.5 -142.4 -161.6
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
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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.7 -73.6 -81.2
3GP -59.3 -73.3 -80.7
90

80

70

60
CDF [%]

50

40

30

20
6 GHz
10 30 GHz
v.2.6.0-0 70 GHz
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.
1 figure ( ’ Position ’ ,[ 50 , 550 , 1400 , 640]) ;
2 for il = se le c t_ sc en a ri o

Copyright: Fraunhofer Heinrich Hertz Institute 227


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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. 8.3 8.5 9.0 QD. 7.3 8.2 8.4
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
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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 228


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

Indoor Open Office


100
QD. 2.9 3.3 2.7
3GP 3.0 3.1 3.1
90

80

70

60

CDF [%]
50

40

30

20
6 GHz
10 30 GHz
v.2.6.0-0 70 GHz
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 warning ( ’ off ’ , ’ all ’) ;
4
5 % 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 )
6 port_mapping = [ 1 ,0;0 ,1 ; 1 ,0;0 ,1 ;1 ,0;0 ,1 ;1 ,0;0 ,1 ];
7 port_mapping = [ port_mapping , zeros ( 8 ,2 ) ; zeros ( 8 ,2 ) , port_mapping ] / 2;
8
9 % 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
10 aBS = qd_arrayant ( ’3 gpp - mmw ’ , 4 , 4 , [] , 6 , 12 , 0.5 , 1 , 2 , 2.5 , 2.5 ) ;
11 aBS . coupling = port_mapping ; % Assign port mapping
12 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
13 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 ]
14
15 % 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
16 aBSi = qd_arrayant ( ’3 gpp - mmw ’ , 4 , 4 , [] , 6 , 20 , 0.5 , 1 , 2 , 2.5 , 2.5 ) ;
17 aBSi . coupling = port_mapping ; % Assign port mapping
18 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
19 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 ]
20
21 % BS antenna c o n f i g u r a t i o n 2 ( UMa , UMi , Indoor )
22 a2 = qd_arrayant ( ’3 gpp -3 d ’ , 2 , 2 , [] , 1 , [] , 0.5 ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 229


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

23 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
24 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 ]
25
26 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
27 append_array ( aBSi , a2 ) ;
28
29 aMT = qd_arrayant ( ’ omni ’) ; % MT antenna c o n f i g u r a t i o n
30 aMT . copy_element (1 ,2) ;
31 aMT . Fa (: ,: ,2) = 0;
32 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

Copyright: Fraunhofer Heinrich Hertz Institute 230


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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 = aMT ; % MT antenna setting
62 end

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 6663.315876 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
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

Copyright: Fraunhofer Heinrich Hertz Institute 231


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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 ’ ,[16.5 7.3]) % 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. -104.9 -125.7 -138.6 -142.1 QD. -108.8 -129.7 -143.0 -146.2
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 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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 232


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

UMa - Config 1 UMa - Config 2


100 100
QD. -118.4 -139.0 -153.3 -158.2 QD. -123.2 -143.8 -158.3 -162.9
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 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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.1 -72.8 -78.8 -80.1 QD. -62.6 -76.9 -83.0 -84.8
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 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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 .
14 rsrp_p0 ( it ) = sum ( abs ( tmp (:) ) .^2) / 2; % Divide by 2 Rx ant .

Copyright: Fraunhofer Heinrich Hertz Institute 233


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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. 4.1 4.7 5.1 5.6 QD. 3.0 3.4 3.7 3.9
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 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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.6 3.4 3.5 3.3 QD. 2.6 2.2 2.3 2.2
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 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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 234


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

InH - Config 1 InH - Config 2


100 100
QD. 2.0 0.5 0.6 0.8 QD. -0.5 -1.3 -1.1 -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 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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

Copyright: Fraunhofer Heinrich Hertz Institute 235


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

UMi UMa
100 100

90 90

80 80

70 70

60 60
CDF [%]

50 50
QD. 155.8 146.9 146.0 150.4 QD. 189.2 170.7 172.5 171.3
3GP 196.6 195.0 193.8 196.1 3GP 230.9 224.1 219.9 220.6
40 40

30 30

20 6 GHz 20 6 GHz
30 GHz 30 GHz
60 GHz 60 GHz
10 70 GHz 10 70 GHz
v.2.6.0-0 O2I only v.2.6.0-0 O2I only
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. 8.7 9.9 9.6 9.7
3GP 15.8 16.0 15.6 15.3
40

30

20
6 GHz
30 GHz
10 60 GHz
v.2.6.0-0 70 GHz
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 ) ;
3 for il = se le c t_ sc en a ri o % Scenario

Copyright: Fraunhofer Heinrich Hertz Institute 236


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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.6 18.5 18.2 18.5 QD. 19.4 19.8 18.8 19.5
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

20 6 GHz 20 6 GHz
30 GHz 30 GHz
60 GHz 60 GHz
10 70 GHz 10 70 GHz
v.2.6.0-0 O2I only v.2.6.0-0 O2I only
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 237


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

InH
100
QD. 29.1 31.3 32.9 30.2
3GP 35.3 35.8 36.1 36.0
90

80

70

60

CDF [%]
50

40

30

20 6 GHz
30 GHz
60 GHz
10 70 GHz
v.2.6.0-0 InH LOS
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 238


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.8 0.7 0.8 0.8 QD. 1.8 1.6 1.5 1.5
3GP 0.9 0.9 0.9 0.9 3GP 1.9 1.9 1.9 1.9
30 30

20 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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.3 1.3 0.5 0.4
3GP 11.2 1.5 0.6 0.5
30

20
6 GHz
30 GHz
10 60 GHz
v.2.6.0-0 70 GHz
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
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).

Copyright: Fraunhofer Heinrich Hertz Institute 239


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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

UMi UMa
100 100
QD. 56.9 53.7 54.9 55.2 QD. 60.4 55.8 55.1 56.1
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

20 6 GHz 20 6 GHz
30 GHz 30 GHz
60 GHz 60 GHz
10 70 GHz 10 70 GHz
v.2.6.0-0 O2I only v.2.6.0-0 O2I only
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 240


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

InH
100
QD. 38.2 29.7 23.3 24.1
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
v.2.6.0-0 70 GHz
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

Copyright: Fraunhofer Heinrich Hertz Institute 241


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

UMi UMa
100 100
QD. 9.3 8.5 8.5 8.4 QD. 10.8 9.2 9.0 9.1
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

20 6 GHz 20 6 GHz
30 GHz 30 GHz
60 GHz 60 GHz
10 70 GHz 10 70 GHz
v.2.6.0-0 O2I only v.2.6.0-0 O2I only
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. 14.9 11.3 9.7 9.2
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
v.2.6.0-0 70 GHz
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 242


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 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.6 10.7 10.7 QD. 10.4 10.5 10.5 10.4
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 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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 243


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

InH
100
QD. 11.3 11.0 11.1 11.4
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
v.2.6.0-0 70 GHz
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 244


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

UMi UMa
100 100
QD. -4.2 -4.3 -4.3 -4.2 QD. -3.8 -3.9 -3.9 -3.8
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 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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. -18.4 -16.6 -17.6 -16.4
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
v.2.6.0-0 70 GHz
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
7 text ( tx * wx + xm , ty , ’ QD . ’) ; text ( tx * wx + xm , ty -4 , ’3 GP ’) ;

Copyright: Fraunhofer Heinrich Hertz Institute 245


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

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.9 14.8 15.0 14.9 QD. 14.1 14.2 14.3 14.2
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 20
6 GHz 6 GHz
30 GHz 30 GHz
10 60 GHz 10 60 GHz
v.2.6.0-0 70 GHz v.2.6.0-0 70 GHz
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. 29.0 27.2 28.1 27.5
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
v.2.6.0-0 70 GHz
0
0 6 12 18 24 30 36 42 48 54 60
10log10( ratio singular values )

5.5 3GPP 38.821 NTN Calibration

In this section, the model calibration is done for the 3GPP NTN specifications as described in 3GPP TR
38.821 v16.0.0, Section 6. All essential components for the non-terrestrial networks are implemented in

Copyright: Fraunhofer Heinrich Hertz Institute 246


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

QuaDRiGa. 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.

This section is structured as follows: First, the basic system parameters are configured. This includes the
satellite parameters, the antennas, the positions of the satellite in orbit and the multi-beam layout. Then, a
list of study cases is set up and the corresponding QuaDRiGa layouts are configured. Lastly, the simulations
are executed and evaluated.

Satellite parameters and antennas Two sets of satellite parameters are considered as the baseline for
system level simulator calibration. The corresponding parameters are given in Tables 6.1.1.1-1 (Set-1 satellite
parameters) and 6.1.1.1-2 (Set-2 satellite parameters) of 3GPP TR 38.821. The tables define the payload
characteristics for downlink (DL) and uplink (UL) transmissions. Two scenarios are considered for the
calibration: one in the S-band (2 GHz) for direct access to a mobile terminal, and one in the KA-band for
fixed access (DL at 20 GHz, UL at 30 GHz). There are 12 options for the satellite antenna, all of which
are parabolic reflector antennas. Here, the antenna characteristics are defined. This includes the carrier
frequency, the reflector radius and the antenna gain. The properties of the three UE antennas are given in
Table 6.1.1.1-3.
1 satant = qd_arrayant ([]) ;
2 satant (1 ,1) = qd_arrayant ( ’ parabolic ’ , 11.0 , 2 e9 ,[] ,5 ,1 ,[] , 51.0 ); % Set1 , GSO , S, UL / DL
3 satant (1 ,2) = qd_arrayant ( ’ parabolic ’ , 1.0 , 2 e9 ,[] ,5 ,1 ,[] , 30.0 ); % Set1 , LEO , S, UL / DL
4 satant (1 ,3) = qd_arrayant ( ’ parabolic ’ , 2.5 , 20 e9 ,[] ,5 ,1 ,[] , 58.5 ); % Set1 , GSO , KA , DL
5 satant (1 ,4) = qd_arrayant ( ’ parabolic ’ , 0.25 , 20 e9 ,[] ,5 ,1 ,[] , 38.5 ); % Set1 , LEO , KA , DL
6 satant (1 ,5) = qd_arrayant ( ’ parabolic ’ , 1.67 , 30 e9 ,[] ,5 ,1 ,[] , 58.5 ); % Set1 , GSO , KA , UL
7 satant (1 ,6) = qd_arrayant ( ’ parabolic ’ ,0.167 , 30 e9 ,[] ,5 ,1 ,[] , 38.5 ); % Set1 , LEO , KA , UL
8
9 satant (1 ,7) = qd_arrayant ( ’ parabolic ’ , 6.0 , 2 e9 ,[] ,5 ,1 ,[] , 45.5 ); % Set2 , GSO , S, UL / DL
10 satant (1 ,8) = qd_arrayant ( ’ parabolic ’ , 0.5 , 2 e9 ,[] ,5 ,1 ,[] , 24.0 ); % Set2 , LEO , S, UL / DL
11 satant (1 ,9) = qd_arrayant ( ’ parabolic ’ , 1.0 , 20 e9 ,[] ,5 ,1 ,[] , 50.5 ); % Set2 , GSO , KA , DL
12 satant (1 ,10) = qd_arrayant ( ’ parabolic ’ , 0.1 , 20 e9 ,[] ,5 ,1 ,[] , 30.5 ); % Set2 , LEO , KA , DL
13 satant (1 ,11) = qd_arrayant ( ’ parabolic ’ , 0.67 , 30 e9 ,[] ,5 ,1 ,[] , 50.5 ); % Set2 , GSO , KA , UL
14 satant (1 ,12) = qd_arrayant ( ’ parabolic ’ ,0.065 , 30 e9 ,[] ,5 ,1 ,[] , 30.5 ); % Set2 , LEO , KA , UL
15
16 ueant (1 ,1) = qd_arrayant ( ’ parabolic ’ , 0.6 , 20 e9 ,[] ,5 ,1 ,[] , 39.7 ) ; % VSAT , KA , DL
17 ueant (1 ,2) = qd_arrayant ( ’ parabolic ’ , 0.6 , 30 e9 ,[] ,5 ,1 ,[] , 43.2 ) ; % VSAT , KA , UL
18 ueant (1 ,3) = qd_arrayant ( ’ omni ’) ; % Handheld , S , UL / DL
19 ueant (1 ,3) . copy_element (1 ,2) ;
20 ueant (1 ,3) . rota te_patte rn (45 , ’x ’ ,1) ;
21 ueant (1 ,3) . rota te_patte rn ( -45 , ’x ’ ,2) ;
22 ueant (1 ,3) . rota te_patte rn (90 , ’z ’) ;
23 ueant (1 ,3) . c e n t e r _ f r e qu e n c y = 2 e9 ;

Satellite orbital positions Compared to 3GPP TR 38.821, QuaDRiGa provides a more detailed satellite
orbital model which allows precise orbit tracking of multiple satellites. However, for the calibration, fixed
satellite positions are sufficient. A geostationary satellite (GSO) is set at a elevation angle target of 45 degree
and two low-earth-orbit (LEO) satellites are defined at 90 degree elevation angle target, one at 600 km height
and one at 1200 km height. QuaDRiGa requires a reference position on Earth for which the simulations
are done. In order to achieve the 45 degree elevation target for the GSO satellite, the latitude must be set
to 38.85 degree. With -5 degree longitude, the reference position lies in central Spain. The same reference
position is chosen for the LEO satellites, where the 90 degree elevation angle target is achieved by adjusting
the satellite orbit such that the satellite is placed directly above that reference position. Furthermore, it is
necessary to adjust the satellite orientation such that the antenna is pointed towards the reference position
on Earth. This is done using the ”calc orientation” method of the ”qd track”-calass. The GSO antenna
must face north at a 45 degree down-tilt angle, whereas the LEO antenna must be tilted down by 90 degrees.
1 sat . GSO = qd_satellite ( ’ gso ’ , 1 , -5) ; % S a t e l l i t e orbital p o s i t i o n
2 sat . GSO = sat . GSO . init_tracks ( [ -5 ,38.85] ) ; % UE r e f e r e n c e p o s i t i o n on Earth
3 sat . GSO . c a l c _ o r i e n t a t i on ( [] , -45* pi /180 , 90* pi /180) ; % S a t e l l i t e antenna o r i e n t a i o n
4 sat . GSO . name = ’ GSO ’;
5
6 sat . LEO600 = qd_satellite ( ’ custom ’ , qd_satellite . R_e + 600 , 0 , 63.4 , -28.8 , 44.55 , 0) ;

Copyright: Fraunhofer Heinrich Hertz Institute 247


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

7 sat . LEO600 = sat . LEO600 . init_tracks ( [ -5 ,38.85] ) ; % UE r e f e r e n c e p o s i t i o n on Earth


8 sat . LEO600 . c a l c_ o r i e n t a t i o n ( [] , -90* pi /180 ) ; % S a t e l l i t e antenna o r i e n t a i o n
9 sat . LEO600 . name = ’ LEO600 ’;
10
11 sat . LEO1200 = qd_satellite ( ’ custom ’ , qd_satellite . R_e + 1200 , 0 , 63.4 , -28.8 , 44.55 , 0) ;
12 sat . LEO1200 = sat . LEO1200 . init_tracks ( [ -5 ,38.85] ) ; % UE r e f e r e n c e p o s i t i o n on Earth
13 sat . LEO1200 . c a l c _ o r i e n ta t i o n ( [] , -90* pi /180 ) ; % S a t e l l i t e antenna o r i e n t a i o n
14 sat . LEO1200 . name = ’ LEO1200 ’;

Multibeam layout Table 6.1.1.1-4 of 3GPP TR 38.821 defines the beam layout for single satellite simula-
tions. There are 19 serving beams, i.e. 18 beams surrounding a central beam, allocated on 2 distinct ”tiers”.
In addition, up to 4 additional tiers of beams cause inter-beam interference (see Figure 6.1.1.1-1). For the
metrics statistic (e.g. coupling loss, geometry), only the UEs placed in the inner-19 beams are considered.
The adjacent beam spacing is based on the 3 dB beam-width parameters which can be calculated from the
parabolic antennas. Here, we define the beam-layout and the frequency-reuse pattern.

The frequency-reuse pattern is defined in Table 6.1.1.1-5. There are three options: FR1 allocates the whole
system bandwidth in each beam, which will result in significant interference at the edges of the beams. FR3
uses only 1/3 of the available spectrum in each beam, but interference is reduced significantly. FR4 includes
polarization-reuse (LHCP or RHCP beams). Hence, 1/2 of the total spectrum is available in each beam and
interference is reduced at the same time. However, UEs need to have dual-polarized antennas to separate the
satellite signals. Also, multi-path propagation and improper antenna alignment lead to cross-talk between
the polarization multiplexed signals, which reduces the effectiveness of polarization-reuse in S-band.

The following algorithm calculates the beam offsets and the frequency-reuse indicator for each beam within
six tiers (127 beams). The indicator is an integer number ranging from 1 to 4. The FR3 beams can have
numbers between 1 and 3 which are allocated such that neighboring beams cannot have the same frequency.
FR4 beams are set such that odd numbers (1 or 3) are RHCP and even numbers (2 and 4) are for LHCP
beams.
1 Pb = zeros ( 1 ,127 ) ; % Maximum number of beams is 127 (6 tiers )
2 Pb (2) = 1 j ; % Second beam is at x = 0 , y = 1
3 FR1 = ones ( 1 ,127 ) ; % F r e q u e n c y reuse 1 index
4 FR3 = FR1 ; % I n i t i a l i z e FR3 index
5 FR3 (2) = 2; % Second beam f r e q u e n c y index for FR3
6 FR4 = FR3 ; % I n i t i a l i z e FR4 index
7 d0 = 90; % Walking d i r e c t i o n from B1 to B2 = 90 deg
8 for n = 3 : 127 % Loop for r e m a i n i n g beams
9 dn = 120; % Change d i r e c t i o n by 120 deg clock - wise
10 while dn > -0.5
11 Pn = Pb (n -1) + exp (1 j *( d0 - dn ) * pi /180) ; % Create new beam offset
12 if all ( abs ( Pb - Pn ) > 0.1 ) % Beam does not exist yet
13 Pb ( n ) = Pn ; % Add beam to list
14 d0 = mod ( d0 - dn ,360 ) ; % Update moving d i r e c t i o n
15 NG = find ( abs ( Pb (1: n -1) - Pb ( n ) ) < 1.1 ) ; % Find all n e i g h b o r s with dstance 1
16 FR3 ( n ) = setdiff ( 1:3 , FR3 ( NG ) ) ; % N e i g b o r s must have d i f f e r e n t f r e q u e n c i e s
17 FR4n = setdiff ( 1:4 , FR4 ( NG ) ) ; % Get c a n d i d a t e s for FR4 f r e q u e n c i e s
18 if numel ( FR4n ) == 1 % Only one FR4 c a n d i d a t e (3 n e i g h b o r s )
19 FR4 ( n ) = FR4n ;
20 elseif abs ( d0 -330) <1 || abs ( d0 -150) <1 % Keep parity
21 FR4 ( n ) = FR4n ( mod ( FR4n ,2) == mod ( FR4 (n -1) ,2) ) ;
22 elseif abs ( d0 -30) <1 || abs ( d0 -210) <1 % Use first value
23 FR4 ( n ) = FR4n (1) ;
24 else % Change parity
25 FR4 ( n ) = FR4n ( mod ( FR4n ,2) ~= mod ( FR4 (n -1) ,2) ) ;
26 end
27 dn = -1; % End while loop and find next beam
28 else % Beam exists already
29 dn = dn - 60; % Change d i r e c t i o n by 60 deg and try again
30 end
31 end
32 end

List of calibration study cases The list of calibration study cases is given by Table 6.1.1.1-9. There are 30
cases, each defined by the satellite orbit (GSO, LEO600, or LEO1200), the parameter set (set-1 or set-2),

Copyright: Fraunhofer Heinrich Hertz Institute 248


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

the frequency band (S-band or KA-band), and the frequency/polarization reuse option. In addition, there
are differences for the UL and DL configurations. The following data structure maps the calibration cases
to simulations by selecting one of the three orbits, one of the 12 satellite antennas, one of the three UE
antennas and a reuse option for each case. In addition, the adjacent-beam spacing must be given in degree
and the total transmit power must be given in dBm. The noise figure (NF) describes how the receiver noise
influences the SNR. It is given in dB relative to the thermal noise floor, which is calculated based on the
Boltzmann constant of -228.6 dBW/K/Hz and an ambient temperature of 290 K. In the KA-band uplink, a
different antenna temperature of 150 K is assumed, leading to an improved noise figure. Contrary to 3GPP
TR 38.821, we do not use the antenna-gain-to-noise-temperature (G/T) metric here, but include this effect
in a different noise figure. The bandwidth allocation is done as in 3GPP TR 38.821 Table 6.1.3.3-1.
1 % ABS = 0.5 * sqrt (3) * satant (1 , 3) . c a l c _ b e a m w i d t h (1)
2 % PTx_DL = dBW / MHZ + 30 + 10* log10 ( MHZ ) - Gain
3 % N F_ U L _ K A = Nf + 10* log10 ( T0 +( Ta - T0 ) *10^( -0.1* Nf ) ) - 10* log10 ( T0 )
4 % = 1.2 + 10* log10 (290+(150 -290) *10^( -0.1*1.2) ) - 10* log10 (290) = -0.8 dB
5
6 sc ={}; % Init . data s r u c t u r e ( cell array )
7 noise_thermal = -228.6 + 10* log10 (290) + 30; % Thermal noise in [ dBm / Hz ]
8
9 % Set 1 DL Orbit , SAT , UE , FR , ABS , PTx , NF , BW
10 sc ( end +1 ,:) = { ’ GSO ’ , 3 , 1 , 1 , 0.1527 , 37.5 , 1.2 , 400 };
11 sc ( end +1 ,:) = { ’ GSO ’ , 3 , 1 , 2 , 0.1527 , 37.5 , 1.2 , 133.3 };
12 sc ( end +1 ,:) = { ’ GSO ’ , 3 , 1 , 3 , 0.1527 , 37.5 , 1.2 , 200 };
13 sc ( end +1 ,:) = { ’ GSO ’ , 1 , 3 , 1 , 0.3470 , 52.8 , 7.0 , 30 };
14 sc ( end +1 ,:) = { ’ GSO ’ , 1 , 3 , 2 , 0.3470 , 52.8 , 7.0 , 10 };
15 sc ( end +1 ,:) = { ’ LEO600 ’ , 4 , 1 , 1 , 1.5260 , 21.5 , 1.2 , 400 };
16 sc ( end +1 ,:) = { ’ LEO600 ’ , 4 , 1 , 2 , 1.5260 , 21.5 , 1.2 , 133.3 };
17 sc ( end +1 ,:) = { ’ LEO600 ’ , 4 , 1 , 3 , 1.5260 , 21.5 , 1.2 , 200 };
18 sc ( end +1 ,:) = { ’ LEO600 ’ , 2 , 3 , 1 , 3.8174 , 48.8 , 7.0 , 30 };
19 sc ( end +1 ,:) = { ’ LEO600 ’ , 2 , 3 , 2 , 3.8174 , 48.8 , 7.0 , 10 };
20 sc ( end +1 ,:) = { ’ LEO1200 ’ , 4 , 1 , 1 , 1.5260 , 27.5 , 1.2 , 400 };
21 sc ( end +1 ,:) = { ’ LEO1200 ’ , 4 , 1 , 2 , 1.5260 , 27.5 , 1.2 , 133.3 };
22 sc ( end +1 ,:) = { ’ LEO1200 ’ , 4 , 1 , 3 , 1.5260 , 27.5 , 1.2 , 200 };
23 sc ( end +1 ,:) = { ’ LEO1200 ’ , 2 , 3 , 1 , 3.8174 , 54.8 , 7.0 , 30 };
24 sc ( end +1 ,:) = { ’ LEO1200 ’ , 2 , 3 , 2 , 3.8174 , 54.8 , 7.0 , 10 };
25
26 % Set 2 DL Orbit , SAT , UE , FR , ABS , PTx , NF , BW
27 sc ( end +1 ,:) = { ’ GSO ’ , 9 , 1 , 1 , 0.3817 , 37.5 , 1.2 , 400 };
28 sc ( end +1 ,:) = { ’ GSO ’ , 9 , 1 , 2 , 0.3817 , 37.5 , 1.2 , 133.3 };
29 sc ( end +1 ,:) = { ’ GSO ’ , 9 , 1 , 3 , 0.3817 , 37.5 , 1.2 , 200 };
30 sc ( end +1 ,:) = { ’ GSO ’ , 7 , 3 , 1 , 0.6357 , 52.8 , 7.0 , 30 };
31 sc ( end +1 ,:) = { ’ GSO ’ , 7 , 3 , 2 , 0.6357 , 52.8 , 7.0 , 10 };
32 sc ( end +1 ,:) = { ’ LEO600 ’ , 10 , 1 , 1 , 3.8174 , 21.5 , 1.2 , 400 };
33 sc ( end +1 ,:) = { ’ LEO600 ’ , 10 , 1 , 2 , 3.8174 , 21.5 , 1.2 , 133.3 };
34 sc ( end +1 ,:) = { ’ LEO600 ’ , 10 , 1 , 3 , 3.8174 , 21.5 , 1.2 , 200 };
35 sc ( end +1 ,:) = { ’ LEO600 ’ , 8 , 3 , 1 , 7.6397 , 48.8 , 7.0 , 30 };
36 sc ( end +1 ,:) = { ’ LEO600 ’ , 8 , 3 , 2 , 7.6397 , 48.8 , 7.0 , 10 };
37 sc ( end +1 ,:) = { ’ LEO1200 ’ , 10 , 1 , 1 , 7.6397 , 27.5 , 1.2 , 400 };
38 sc ( end +1 ,:) = { ’ LEO1200 ’ , 10 , 1 , 2 , 3.8174 , 27.5 , 1.2 , 133.3 };
39 sc ( end +1 ,:) = { ’ LEO1200 ’ , 10 , 1 , 3 , 3.8174 , 27.5 , 1.2 , 200 };
40 sc ( end +1 ,:) = { ’ LEO1200 ’ , 8 , 3 , 1 , 7.6397 , 54.8 , 7.0 , 30 };
41 sc ( end +1 ,:) = { ’ LEO1200 ’ , 8 , 3 , 2 , 7.6397 , 54.8 , 7.0 , 10 };
42
43 % Set 1 UL Orbit , SAT , UE , FR , ABS , PTx , NF , BW
44 sc ( end +1 ,:) = { ’ GSO ’ , 5 , 2 , 1 , 0.1524 , 33.0 , -0.8 , 400 };
45 sc ( end +1 ,:) = { ’ GSO ’ , 5 , 2 , 2 , 0.1524 , 33.0 , -0.8 , 133.3 };
46 sc ( end +1 ,:) = { ’ GSO ’ , 5 , 2 , 3 , 0.1527 , 33.0 , -0.8 , 200 };
47 sc ( end +1 ,:) = { ’ GSO ’ , 1 , 3 , 1 , 0.3470 , 23.0 , 7.0 , 0.4 };
48 sc ( end +1 ,:) = { ’ GSO ’ , 1 , 3 , 2 , 0.3470 , 23.0 , 7.0 , 0.4 };
49 sc ( end +1 ,:) = { ’ LEO600 ’ , 6 , 2 , 1 , 1.5260 , 33.0 , -0.8 , 400 };
50 sc ( end +1 ,:) = { ’ LEO600 ’ , 6 , 2 , 2 , 1.5260 , 33.0 , -0.8 , 133 };
51 sc ( end +1 ,:) = { ’ LEO600 ’ , 6 , 2 , 3 , 1.5260 , 33.0 , -0.8 , 200 };
52 sc ( end +1 ,:) = { ’ LEO600 ’ , 2 , 3 , 1 , 3.8174 , 23.0 , 7.0 , 0.4 };
53 sc ( end +1 ,:) = { ’ LEO600 ’ , 2 , 3 , 2 , 3.8174 , 23.0 , 7.0 , 0.4 };
54 sc ( end +1 ,:) = { ’ LEO1200 ’ , 6 , 1 , 1 , 1.5260 , 33.0 , -0.8 , 400 };
55 sc ( end +1 ,:) = { ’ LEO1200 ’ , 6 , 1 , 2 , 1.5260 , 33.0 , -0.8 , 133.3 };
56 sc ( end +1 ,:) = { ’ LEO1200 ’ , 6 , 1 , 3 , 1.5260 , 33.0 , -0.8 , 200 };
57 sc ( end +1 ,:) = { ’ LEO1200 ’ , 2 , 3 , 1 , 3.8174 , 23.0 , 7.0 , 0.4 };
58 sc ( end +1 ,:) = { ’ LEO1200 ’ , 2 , 3 , 2 , 3.8174 , 23.0 , 7.0 , 0.4 };
59
60 % Set 2 UL Orbit , SAT , UE , FR , ABS , PTx , NF , BW

Copyright: Fraunhofer Heinrich Hertz Institute 249


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

61 sc ( end +1 ,:) = { ’ GSO ’ , 11 , 2, 1, 0.3817 , 33.0 , -0.8 , 400 };


62 sc ( end +1 ,:) = { ’ GSO ’ , 11 , 2, 2, 0.3817 , 33.0 , -0.8 , 133.3 };
63 sc ( end +1 ,:) = { ’ GSO ’ , 11 , 2, 3, 0.3817 , 33.0 , -0.8 , 200 };
64 sc ( end +1 ,:) = { ’ GSO ’ , 7, 3, 1, 0.6357 , 23.0 , 7.0 , 0.4 };
65 sc ( end +1 ,:) = { ’ GSO ’ , 7, 3, 2, 0.6357 , 23.0 , 7.0 , 0.4 };
66 sc ( end +1 ,:) = { ’ LEO600 ’ , 12 , 2, 1, 3.8174 , 33.0 , -0.8 , 400 };
67 sc ( end +1 ,:) = { ’ LEO600 ’ , 12 , 2, 2, 3.8174 , 33.0 , -0.8 , 133.3 };
68 sc ( end +1 ,:) = { ’ LEO600 ’ , 12 , 2, 3, 3.8174 , 33.0 , -0.8 , 200 };
69 sc ( end +1 ,:) = { ’ LEO600 ’ , 8, 3, 1, 7.6397 , 23.0 , 7.0 , 0.4 };
70 sc ( end +1 ,:) = { ’ LEO600 ’ , 8, 3, 2, 7.6397 , 23.0 , 7.0 , 0.4 };
71 sc ( end +1 ,:) = { ’ LEO1200 ’ , 12 , 2, 1, 7.6397 , 33.0 , -0.8 , 400 };
72 sc ( end +1 ,:) = { ’ LEO1200 ’ , 12 , 2, 2, 3.8174 , 33.0 , -0.8 , 133.3 };
73 sc ( end +1 ,:) = { ’ LEO1200 ’ , 12 , 2, 3, 3.8174 , 33.0 , -0.8 , 200 };
74 sc ( end +1 ,:) = { ’ LEO1200 ’ , 8, 3, 1, 7.6397 , 23.0 , 7.0 , 0.4 };
75 sc ( end +1 ,:) = { ’ LEO1200 ’ , 8, 3, 2, 7.6397 , 23.0 , 7.0 , 0.4 };

Layout setup A simulation layout is created for each simulation case.


1 l = qd_layout ; % I n i t i a l i z e layout v a r i a b l e
2 for isc = 1 : size ( sc ,1)
3 l (1 , isc ) = qd_layout ; % Create new Q u a D R i G a layout
4 l (1 , isc ) . simpar (1 ,1) . c e n t e r _ f r e q u e n c y = ...
5 satant (1 , sc { isc ,2}) . c e n t e r _ f r e q u e n c y ; % Set F r e q u e n c y
6 l (1 , isc ) . simpar (1 ,1) . 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
7
8 if sc { isc ,4} == 1 % Set number of beams
9 l (1 , isc ) . no_tx = 61; % FR1 : Two tiers of i n t e r f e r i n g beams
10 else
11 l (1 , isc ) . no_tx = 127; % FR3 /4: Four tiers of i n t e r f e r i n g beams
12 end
13
14 for itx = 1 : l (1 , isc ) . no_tx % Set s a t e l l i t e p o s i t i o n
15 l (1 , isc ) . tx_track (1 , itx ) = copy ( sat .( sc { isc ,1}) ) ; % Copy s a t e l l i t e track obj .
16 l (1 , isc ) . tx_track (1 , itx ) . name = [ ’B ’ , num2str ( itx , ’ %03 d ’) ]; % Set beam ID
17 l (1 , isc ) . tx_track (1 , itx ) . c a l c _ o r i e n t a t i o n ( [] ,... % Apply beam offset
18 imag ( Pb ( itx ) ) * sc { isc ,5}* pi /180 , - real ( Pb ( itx ) ) * sc { isc ,5}* pi /180 ) ;
19 end
20 end

UE setup The calibration requires that each of the 19 serving beams gets assigned a fixed number of
UEs. This is done by dropping 100 random UEs in the coverage area of the inner 19 beams, calculating
the strongest (serving) beam for each UE and assigning users to their serving beams until the beams have
reached their set number of UEs.

Then, we assign the antennas to the beams and the UEs. For FR4, a distinction must be made for the
RHCP and LHCP beams. In the KA-band, the UE use directional parabolic antennas. Those antennas
must be pointed towards the satellite in order to allow communication. We read the satallite and the UE
positions from the qd layout object, calculate the ideal pointing angle and apply this orientation to the UE.
1 no_ms_per_be am = 10; % Set number of t e r m i n a l s per beam
2
3 b ea m_ s ep ar at i on = zeros ( size ( sc ,1) ,1) ; % I n i t i a l i z e beam s e p a r a t i o n
4 for isc = 1 : size ( sc ,1)
5
6 % UE p l a c e m e n t
7 ls = copy ( l (1 , isc ) ) ; % T e m p o r a r y copy of the layout
8 ls . no_tx = 37; % One tier of i n t e r f e r e r s
9 ls . tx_array = sub_array ( satant (1 , sc { isc ,2}) ,1 ) ; % LHCP p o l a r i z a t i o n
10 b ea m_ se p ar at io n ( isc ) = tand ( sc { isc ,5} ) * sqrt ( sum ( ls . tx_position (: ,1) .^2) ) ;
11 [~ , gain ] = calc_gain ( ls . tx_array (1 ,1) ) ; % Sat antenna gain
12
13 rx_assigned = zeros (19 , no _ms_per_ beam ) ; % Init . list of a s s i g n e d UEs
14 rx_pos = zeros ( 3 , numel ( rx_assigned ) ) ; % List of rx p o s i t i o n s
15 while any ( rx_assigned (:) == 0)
16 ls . no_rx = 100; % Drop 100 random UEs
17 ls . r a n d o m i z e _ r x _ p o s i t i o n s ( b ea m _s ep ar a ti on ( isc ) *3.1 ,1.5 ,1.5 ,0) ;
18 ls . set_scenario ( ’ LOSonly ’) ; % C o n s i d e r only antenna ( no path - gain )
19 [~ , pow ] = ls . set_pairing ( ’ power ’ ,0) ; % C a l c u l a t e RX power
20 for irx = 1 : ls . no_rx % Do for each UE

Copyright: Fraunhofer Heinrich Hertz Institute 250


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

21 [ pm , ib ] = max ( pow ( irx ,:) ) ; % Find serving beam


22 if ib < 19.5 && any ( rx_assigned ( ib ,:) == 0 ) && gain - pm < 12 % Inner 2 tiers ?
23 ii = find ( rx_pos (3 ,:) == 0 ,1) ; % Check if beam is already full
24 rx_pos (: , ii ) = ls . rx_position (: , irx ) ; % Assign UE
25 rx_assigned ( ib , find ( rx_assigned ( ib ,:) ==0 ,1) ) = ii ;
26 end
27 end
28 end
29 ii = reshape ( rx_assigned ’ ,1 ,[]) ; % Order UEs by beam a s s i g n m e n t
30 l (1 , isc ) . rx_position = rx_pos (: , ii ) ; % Store list of UEs
31 l (1 , isc ) . set_scenario ( ’ Q u a D R i G a _ N T N _ R u r a l _ L O S ’) ; % Set p r o p a g a t i o n c o n d i t i o n s
32
33 % Antenna a s s i g n m e n t
34 if sc { isc ,4} ~= 3 % FR1 and FR3 use single p o l a r i z a t i o n
35 l (1 , isc ) . tx_array = sub_array ( satant (1 , sc { isc ,2}) ,1 ) ;
36 l (1 , isc ) . rx_array = sub_array ( ueant (1 , sc { isc ,3}) ,1 ) ;
37 else % FR4 uses dual p o l a r i z a t i o n
38 satant1 = sub_array ( satant (1 , sc { isc ,2}) ,1 ) ; % RHCP @ s a t e l l i t e
39 satant2 = sub_array ( satant (1 , sc { isc ,2}) ,2 ) ; % LHCP @ s a t e l l i t e
40 ueant1 = sub_array ( ueant (1 , sc { isc ,3}) ,1 ) ; % RHCP @ UE
41 ueant2 = sub_array ( ueant (1 , sc { isc ,3}) ,2 ) ; % LHCP @ UE
42 for itx = 1 : l (1 , isc ) . no_tx
43 if mod ( FR4 ( itx ) , 2) == 1 % FR4 index is an odd number
44 l (1 , isc ) . tx_array (1 , itx ) = satant1 ; % ... use RHCP
45 else % FR4 index is an even number
46 l (1 , isc ) . tx_array (1 , itx ) = satant2 ; % ... use LHCP
47 end
48 end
49 for irx = 1 : l (1 , isc ) . no_rx % Set the c o r r e s p o n d i n g UE a n t e n n a s
50 if mod ( FR4 ( ceil (( irx -0.5) / no_ ms_per_ beam ) ) , 2 ) == 1
51 l (1 , isc ) . rx_array (1 , irx ) = ueant1 ;
52 else
53 l (1 , isc ) . rx_array (1 , irx ) = ueant2 ;
54 end
55 end
56 end
57
58 % UE antenna o r i e n t a t i o n
59 if sc { isc ,3} == 1 || sc { isc ,3} == 2 % R e f l e c t o r antenna in KA band
60 tx_pos = l (1 , isc ) . tx_track (1 ,1) . i n i t i a l _ p o s i t i o n ; % Get s a t e l l i t e p o s i t i o n
61 orientation = zeros (3 ,1) ; % Init . o i e n t a t i o n vector
62 for ir = 1 : l (1 , isc ) . no_rx
63 rx_pos = l (1 , isc ) . rx_track (1 , ir ) . i n i ti a l _ p o s i t i o n ; % Get UE p o s i t i o n
64 rt = tx_pos - rx_pos ; % C a l c u l a t e p o i n t i n g vector
65 rt = rt / norm ( rt ) ; % N o r m a l i z e to unit length
66 orientation (2) = asin ( rt (3) ) ; % C a l c u l a t e UE tilt angle
67 orientation (3) = atan2 ( rt (2) , rt (1) ) ; % C a l c u l a t e UE heading angle
68 l (1 , isc ) . rx_track (1 , ir ) . orientation = orientation ; % Set antenna o r i e n t a t i o n
69 end
70 end
71 end

Show layout plots Here, we visualize the layout for the GSO and the LEO600 cases. The method
”qd layout.power map” projects the beams onto a 2D map, including the antenna gains and the path
gain. Hence, the variable ”map” in the following code block contains the received power for the three tires
of beams relative to 0 dBm transmit power. We then calculate the geometry factor (GF), i.e. the ratio of
the strongest (serving) beam to the interfering beams plus noise. The generated plots show the positions of
the terminals and the GF.
1 close all % Close all open figures
2 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
3 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
4 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
5 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
6 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
7 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
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.7]) % Default paper size
9
10 show_id = [1 ,6]; % Select cases to plot
11 for iid = 1 : numel ( show_id )
12 isc = show_id ( iid ) ;

Copyright: Fraunhofer Heinrich Hertz Institute 251


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

13
14 if sc { isc ,4} == 1; FR = FR1 ; % Select FR1
15 elseif sc { isc ,4} == 2; FR = FR3 ; % Select FR3
16 else ; FR = FR4 ; % Select FR4
17 end
18
19 ls = copy ( l (1 , isc ) ) ; % Copy layout to local v a r i a b l e
20 ls . no_tx = 37; % Only show 3 tiers of beams
21
22 dst = be a m_ se pa r at io n ( isc ) /18; % Map r e s o l u t i o n ( d i s t a n c e btw . pixels )
23 cov = be a m_ se pa r at io n ( isc ) *5; % Area of i n t e r e s t
24 [ map , x_coords , y_coords ] = ls . power_map ( ’5G - A L L S T A R _ R u r a l _ L O S ’ ,...
25 ’ quick ’ , dst , - cov , cov , - cov , cov ,1.5 ) ; % G e n e a r t e c o v e r a g e maps for each beam
26
27 Ns = noise_thermal + 10* log10 ( sc { isc ,8}*1 e6 ) + sc { isc ,7} - sc { isc ,6}; % Noise
28 P = cat (3 , map { FR (1: ls . no_tx ) ==1}) ; % Path gain map for each beam
29 Pmax = max (P ,[] ,3) ; % Serving beam power for each map pixel
30 GF = Pmax ./ ( sum (P ,3) - Pmax + 10.^( Ns /10) ) ; % G e o m e t r y factor for each pixel
31 GF = 10* log10 ( GF ) ; % L o g a r i t h m i c scale
32
33 ls . visualize ([] ,[] ,0) ; % Show Sat and MT p o s i t i o n s on the map
34 hold on
35 imagesc ( x_coords , y_coords , GF ) ; % Plot the G e o m e t r y Factor
36 hold off
37 axis ([ -1 1 -1 1]* cov ) % Adjust ap size to c o v e r a g e area
38 caxis ( max ( ceil ( GF (:) ) ) +[ -25 0]) % Adjust c o l o r m a t range
39 colmap = colormap ;
40 colormap ( colmap *0.7 + 0.3 ) ; % Adjust colors to be " lighter "
41 set ( gca , ’ layer ’ , ’ top ’) % Show grid on top of the map
42 colorbar ( ’ south ’) % P o s i t i o n of the c o l o r m a r
43 title ([ ’ Beam Geometry - ’ , sc { isc ,1}]) % Title
44 end

Copyright: Fraunhofer Heinrich Hertz Institute 252


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

Note that the power map function uses the antenna of the first UE as receive antenna, including its orien-
tation, but it does not update the antenna orientation. In the simulation setup, the first UE is at a random
location within the coverage area of the first beam. The power-map function moves this antenna to each
pixel in the map to obtain a receive power value at this location. Hence, only at the true position of the
first UE within the first beams is the terminal antenna pointed directly towards the satellite. All other map
positions show less power due to the misalignment of the receive antenna. This is not a problem for the GSO
satellite since virtually all UEs point their antenna southwards at 45 deg elevation. The misalignment at
other map points is well within the main lobe of the receiver dish antenna. However, for the LEO satellite,
there is a significant misalignment error towards the edges of the map. This effect does not have an influence
on the results since each UE has its antenna perfectly aligned.

Run simulations and return results Based on the system-level simulation assumptions for described in
3GPP TR 38.821 Table 6.1.1.1-5, the results of the coupling loss, geometry SIR and geometry SINR are
calculated. The 3GPP TR 38.821 results are reported in Table 6.1.1.2-1 for the DL and in Table 6.1.1.2-1
for the UL. These results are representative of the average performance reported by the different companies.
Here, we obtain the results from the QuaDRiGa simulation setup. This is done by obtaining the channel
coefficients for each beam to UE link and then calculating the received power values for each beam. The
table is plotted at the end of this section. The first 30 results are for the downlink, the remainder is for the
uplink.
1 clc % Clear Command Window
2 disp ( ’ | Coupling Loss | Geometry SIR | Geometry SINR ’) ;
3 fprintf ( ’ ’) ; for n =1:3; fprintf ( ’| @ 0.05 | Median | @ 0.95 ’) ; end ; fprintf ( ’\ n ’) ;
4
5 results = zeros ( size ( sc ,1) ,9) ; % Init . results v a r i a b l e
6 for isc = 1 : size ( sc ,1)
7 if isc == 1 || isc == 31
8 for n =1:97; fprintf ( ’ - ’) ; end ; fprintf ( ’\ n ’) ; % Bar
9 end
10
11 c = l (1 , isc ) . get_channels ; % Obtain c h a n n e l s for all UE p o s i t i o n s
12
13 if sc { isc ,4} == 1; FR = FR1 ; % Select FR1
14 elseif sc { isc ,4} == 2; FR = FR3 ; % Select FR3
15 else ; FR = FR4 ; % Select FR4
16 end

Copyright: Fraunhofer Heinrich Hertz Institute 253


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

17
18 Ns = noise_thermal + 10* log10 ( sc { isc ,8}*1 e6 ) + sc { isc ,7} - sc { isc ,6}; % Noise
19
20 pow = zeros ( l (1 , isc ) . no_rx , l (1 , isc ) . no_tx ) ; % Power values of all beams
21 pow_srv = zeros ( l (1 , isc ) . no_rx , 1 ) ; % Serving beam power
22 b_srv = zeros ( l (1 , isc ) . no_rx , 1 ) ; % Serving beam number
23 for ir = 1 : l (1 , isc ) . no_rx
24 for it = 1 : l (1 , isc ) . no_tx
25 pow ( ir , it ) = sum ( abs ( c ( ir , it ) . coeff (:) ) .^2 ) ; % C a l c u l a t e power for all beams
26 end
27 b_srv ( ir ,1) = ceil (( ir -0.5) ./ n o_ms_per _beam ) ; % C a l c u l a t e serving beam number
28 pow_srv ( ir ,1) = pow ( ir , b_srv ( ir ,1) ) ; % C a l c u l a t e serving beam power
29 end
30
31 CPL = -10* log10 ( pow_srv ) ; % C o u p l i n g loss
32 [ Sh , bins ] = qf . acdf ( CPL ) ; % C a l c u l a t e c o u p l i n g loss CDF
33 results ( isc ,1) = bins ( find ( Sh >=0.05 ,1) ) ; % 5 th p e r c i n t i l e
34 results ( isc ,2) = median ( CPL ) ; % Median
35 results ( isc ,3) = bins ( find ( Sh >=0.95 ,1) ) ; % 95 th p e r c e n t i l e
36
37 SIR = []; SINR = []; % Init . SIR and SINR
38 for n = 1:4
39 ii_mt = FR ( b_srv ) == n ; % Find all UEs that use the same freq .
40 ii_sat = FR (1: l (1 , isc ) . no_tx ) == n ; % Find all beams that use the same freq .
41 SIR = [ SIR ; 10* log10 ( pow_srv ( ii_mt ) ./( sum ( pow ( ii_mt , ii_sat ) ,2) - pow_srv ( ii_mt ) ) ) ];
42 SINR = [ SINR ; 10* log10 ( pow_srv ( ii_mt ) ./...
43 ( sum ( pow ( ii_mt , ii_sat ) ,2) - pow_srv ( ii_mt ) +10.^( Ns /10) ) ) ];
44 end
45
46 [ Sh , bins ] = qf . acdf ( SIR ) ; % C a l c u l a t e SIR CDF
47 results ( isc ,4) = bins ( find ( Sh >=0.05 ,1) ) ; % 5 th p e r c i n t i l e
48 results ( isc ,5) = median ( SIR ) ; % Median
49 results ( isc ,6) = bins ( find ( Sh >=0.95 ,1) ) ;
50
51 [ Sh , bins ] = qf . acdf ( SINR ) ;
52 results ( isc ,7) = bins ( find ( Sh >=0.05 ,1) ) ; % 5 th p e r c i n t i l e
53 results ( isc ,8) = median ( SINR ) ; % Median
54 results ( isc ,9) = bins ( find ( Sh >=0.95 ,1) ) ; % 95 th p e r c e n t i l e
55
56 disp ([ ’ SC ’ , num2str ( isc , ’ %02 d ’) , ’ ’ , sprintf ( ’ |% 8.1 f ’ , results ( isc ,:) ) ]) ; % Plot table line
57 end

1 | Coupling Loss | Geometry SIR | Geometry SINR


2 | @ 0.05 | Median | @ 0.95 | @ 0.05 | Median | @ 0.95 | @ 0.05 | Median | @ 0.95
3 -------------------------------------------------------------------------------------------------
4 SC01 | 110.8 | 113.6 | 116.0 | -4.3 | -1.1 | 2.2 | -4.5 | -1.4 | 1.9
5 SC02 | 110.8 | 113.4 | 115.9 | 6.3 | 8.7 | 11.4 | 5.6 | 7.8 | 10.6
6 SC03 | 110.9 | 113.2 | 116.5 | 7.1 | 9.7 | 12.1 | 5.6 | 8.4 | 10.6
7 SC04 | 140.9 | 143.2 | 145.5 | -4.5 | -1.5 | 1.6 | -5.7 | -3.2 | -0.4
8 SC05 | 140.6 | 143.1 | 145.5 | 6.2 | 8.6 | 10.9 | 2.2 | 4.5 | 6.7
9 SC06 | 94.7 | 97.6 | 101.7 | -6.6 | -1.2 | 2.6 | -6.9 | -1.5 | 2.2
10 SC07 | 95.1 | 97.8 | 101.7 | 3.9 | 8.8 | 11.2 | 3.1 | 7.9 | 10.1
11 SC08 | 95.0 | 97.9 | 102.0 | 4.9 | 9.6 | 12.6 | 3.5 | 8.0 | 11.0
12 SC09 | 125.3 | 127.9 | 130.6 | -4.2 | -1.2 | 2.6 | -4.4 | -1.3 | 2.4
13 SC10 | 125.5 | 128.2 | 131.0 | 5.5 | 8.5 | 11.4 | 5.1 | 8.0 | 10.9
14 SC11 | 100.8 | 103.8 | 107.1 | -5.0 | -1.4 | 2.1 | -5.3 | -1.7 | 1.8
15 SC12 | 101.5 | 104.0 | 107.6 | 5.1 | 8.5 | 11.1 | 4.3 | 7.6 | 10.0
16 SC13 | 101.1 | 103.9 | 107.6 | 5.5 | 9.7 | 12.4 | 4.3 | 8.1 | 10.9
17 SC14 | 131.5 | 134.5 | 136.8 | -4.6 | -1.4 | 2.2 | -4.7 | -1.6 | 2.0
18 SC15 | 131.3 | 134.0 | 137.5 | 5.9 | 8.8 | 11.8 | 5.4 | 8.4 | 11.1
19 SC16 | 119.5 | 121.2 | 123.9 | -4.7 | -1.2 | 1.4 | -6.0 | -2.5 | -0.3
20 SC17 | 119.3 | 121.5 | 123.9 | 6.5 | 8.6 | 10.8 | 2.9 | 5.0 | 7.1
21 SC18 | 119.3 | 121.4 | 124.5 | 7.2 | 9.8 | 11.9 | 1.4 | 4.4 | 6.4
22 SC19 | 146.2 | 148.7 | 150.9 | -4.5 | -1.3 | 2.0 | -8.2 | -5.7 | -3.0
23 SC20 | 146.4 | 148.4 | 150.8 | 6.2 | 8.7 | 10.8 | -1.8 | 0.6 | 2.6
24 SC21 | 103.2 | 105.9 | 110.1 | -6.1 | -1.3 | 1.6 | -7.2 | -2.9 | -0.2
25 SC22 | 102.5 | 105.7 | 109.2 | 5.6 | 8.8 | 11.5 | 1.7 | 5.0 | 8.0
26 SC23 | 103.2 | 105.9 | 109.8 | 6.0 | 9.7 | 12.1 | 0.2 | 3.9 | 6.4
27 SC24 | 131.2 | 134.5 | 136.9 | -5.0 | -1.4 | 2.0 | -5.5 | -2.1 | 1.5
28 SC25 | 131.0 | 134.3 | 137.5 | 5.4 | 8.5 | 11.0 | 3.8 | 6.7 | 9.2
29 SC26 | 110.3 | 114.4 | 119.9 | 2.1 | 7.8 | 10.9 | -6.3 | -0.8 | 3.1
30 SC27 | 108.2 | 111.6 | 114.5 | 5.8 | 8.9 | 11.5 | 2.2 | 5.1 | 8.1
31 SC28 | 109.1 | 111.8 | 115.3 | 6.4 | 9.6 | 12.1 | 0.7 | 4.0 | 6.5
32 SC29 | 137.3 | 140.5 | 143.4 | -4.7 | -1.7 | 2.2 | -5.3 | -2.4 | 1.6

Copyright: Fraunhofer Heinrich Hertz Institute 254


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 5 MODEL CALIBRATION

33 SC30 | 137.3 | 140.3 | 143.6 | 5.2 | 8.5 | 10.9 | 3.3 | 6.7 | 9.3
34 -------------------------------------------------------------------------------------------------
35 SC31 | 111.1 | 113.6 | 115.6 | -3.8 | -1.6 | 1.8 | -4.2 | -2.0 | 1.2
36 SC32 | 111.2 | 113.6 | 116.3 | 6.1 | 8.7 | 10.8 | 4.7 | 7.2 | 9.4
37 SC33 | 111.0 | 113.4 | 115.7 | 7.1 | 9.6 | 12.2 | 5.0 | 7.4 | 9.8
38 SC34 | 140.8 | 143.2 | 145.3 | -4.3 | -1.3 | 1.5 | -12.2 | -9.9 | -7.5
39 SC35 | 140.3 | 142.9 | 145.3 | 6.6 | 8.9 | 11.3 | -11.5 | -9.0 | -6.4
40 SC36 | 95.1 | 97.8 | 102.4 | -6.6 | -1.3 | 1.7 | -6.6 | -1.3 | 1.6
41 SC37 | 95.2 | 97.4 | 100.7 | 5.6 | 8.9 | 11.2 | 5.5 | 8.8 | 11.1
42 SC38 | 94.9 | 97.6 | 100.6 | 6.6 | 9.7 | 12.4 | 6.5 | 9.6 | 12.4
43 SC39 | 125.3 | 128.0 | 131.5 | -5.0 | -0.9 | 2.3 | -5.7 | -1.7 | 1.3
44 SC40 | 125.3 | 128.4 | 131.3 | 5.3 | 8.1 | 11.4 | 1.1 | 3.7 | 6.6
45 SC41 | 104.6 | 107.1 | 111.4 | -6.2 | -1.2 | 2.2 | -6.3 | -1.3 | 2.0
46 SC42 | 104.3 | 107.1 | 111.2 | 4.7 | 8.8 | 11.5 | 4.4 | 8.4 | 11.1
47 SC43 | 104.4 | 107.2 | 110.5 | 6.2 | 9.8 | 12.3 | 5.7 | 9.1 | 11.5
48 SC44 | 131.5 | 134.1 | 137.2 | -5.3 | -1.1 | 2.1 | -7.2 | -3.7 | -0.7
49 SC45 | 131.3 | 134.1 | 137.0 | 5.7 | 8.6 | 11.5 | -3.6 | -0.7 | 2.1
50 SC46 | 119.1 | 121.3 | 124.1 | -4.2 | -1.3 | 2.0 | -6.3 | -3.6 | -0.7
51 SC47 | 119.2 | 121.3 | 123.8 | 6.3 | 8.9 | 11.0 | 1.2 | 3.7 | 5.6
52 SC48 | 118.9 | 121.5 | 123.8 | 7.5 | 9.9 | 11.9 | 0.1 | 2.4 | 4.7
53 SC49 | 146.4 | 148.5 | 150.9 | -4.5 | -1.4 | 1.6 | -17.1 | -14.8 | -12.6
54 SC50 | 146.1 | 148.6 | 150.9 | 6.6 | 8.4 | 10.8 | -16.9 | -14.7 | -12.1
55 SC51 | 102.7 | 105.6 | 109.1 | -5.7 | -1.4 | 1.8 | -5.8 | -1.5 | 1.7
56 SC52 | 102.9 | 105.8 | 109.5 | 4.5 | 8.4 | 11.3 | 4.3 | 8.2 | 11.0
57 SC53 | 102.8 | 105.6 | 109.1 | 6.0 | 9.3 | 12.4 | 5.7 | 8.8 | 12.0
58 SC54 | 132.4 | 134.5 | 136.8 | -4.6 | -1.4 | 1.5 | -6.7 | -4.1 | -1.5
59 SC55 | 131.5 | 134.4 | 136.8 | 5.6 | 8.2 | 11.1 | -3.4 | -1.1 | 1.9
60 SC56 | 109.9 | 115.1 | 120.4 | 0.3 | 6.9 | 10.8 | -2.1 | 3.9 | 8.2
61 SC57 | 109.2 | 111.8 | 114.7 | 5.3 | 8.4 | 10.9 | 4.4 | 7.6 | 10.1
62 SC58 | 108.9 | 111.5 | 115.4 | 5.9 | 9.3 | 12.0 | 4.6 | 7.8 | 10.4
63 SC59 | 137.4 | 140.2 | 143.2 | -5.2 | -1.4 | 2.1 | -10.5 | -7.5 | -4.6
64 SC60 | 137.6 | 140.2 | 143.2 | 5.6 | 8.4 | 10.9 | -9.4 | -6.4 | -3.8

Copyright: Fraunhofer Heinrich Hertz Institute 255


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 References

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


parameters of wideband MIMO channel in urban multi-cell scenario,” Proc. EUCAP ’11, 2011.
[Online]. Available: https://ieeexplore.ieee.org/document/5782386

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

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

[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.

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

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


channel models,” Tech. Rep., 2017.

[16] S. Jaeckel, L. Raschkowski, F. Burkhardt, and L. Thiele, “A spatially consistent geometric D2D
small-scale fading model for multiple frequencies,” Proc. IEEE VTC Fall ’19, 2019. [Online]. Available:
http://arxiv.org/abs/1906.12149

[17] 3GPP TR 38.821 v16.0.0, “Solutions for nr to support non-terrestrial networks (ntn),” Tech. Rep., 12
2020.

Copyright: Fraunhofer Heinrich Hertz Institute 256


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 References

[18] S. Jaeckel, N. Turay, L. Raschkowski, L. Thiele, R. Vuohtoniemi, M. 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, 2019. [Online]. Available:
http://arxiv.org/abs/1906.12145

[19] 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, 2016-11-06.

[20] 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

[21] 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.

[22] 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.

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

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

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

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

[27] 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.

[28] 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.

[29] 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.

[30] 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.

[31] 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.

[32] 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.

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

[34] 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.

Copyright: Fraunhofer Heinrich Hertz Institute 257


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 References

[35] 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.

[36] 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.

[37] 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.

[38] 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.

[39] 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.

[40] 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.

[41] 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.

[42] 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.

[43] 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.

[44] [Online]. Available: https://www.quadriga-channel-model.de

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

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

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

[48] 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.

[49] 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.

[50] 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.

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

[52] 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.

Copyright: Fraunhofer Heinrich Hertz Institute 258


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 References

[53] 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.

[54] 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.

[55] 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

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

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

[58] 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.

[59] 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.

[60] 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.

[61] 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.

[62] 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.

[63] 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.

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

[65] 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.

[66] 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.

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

[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 TR 38.811 v15.2.0, “Study on new radio (NR) to support non terrestrial networks,” Tech. Rep.,
09 2018.

Copyright: Fraunhofer Heinrich Hertz Institute 259


eMail: quadriga@hhi.fraunhofer.de
QuaDRiGa v2.6.1 References

[71] ITU-R S.1503-3, “Functional description to be used in developing software tools for determining confor-
mity of non-geostationary-satellite orbit fixed-satellite service systems or networks with limits contained
in article 22 of the radio regulations,” Tech. Rep., 01 2018.

[72] 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 260


eMail: quadriga@hhi.fraunhofer.de

You might also like