Quadriga Documentation v2.6.1-0
Quadriga Documentation v2.6.1-0
Quadriga Documentation v2.6.1-0
Contributors
• 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 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
[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.
Contents
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
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
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
List of Tables
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
Glossary
List of Symbols
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.
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:
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”.
The following table provides some compatibility tests for different operating systems, architectures, MAT-
LAB versions, and QuaDRiGa versions.
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.
Open-Source
Members only
v1.0 v1.2 v1.4 v2.0 v2.2 v2.4
Model guidlines
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 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)
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.
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.
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
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.
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.
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.
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.
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.
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:
• 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.
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.
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.
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
Each simulation run in QuaDRiGa is done in three (and an optional fourth) step.
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).
”Satellite-LOS-Urban”, the parameters are extracted from the same spatially correlated generators as
for the starting segment.
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.
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:
• 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).
• 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.
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
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 (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.
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.
<<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()
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:
Static methods can be called directly from the command line without creating an instance of the class first.
They are printed in blue:
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:
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
This class controls the simulation options and calculates constants for other classes.
Properties
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
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
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
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]
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
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
3gpp-macro An antenna with a custom gain in elevation and azimuth. See. 3GPP TR 36.814
V9.0.0 (2010-03), Table A.2.1.1-2, Page 59
Ain - Half-Power in azimuth direction (default = 70 deg)
Bin - Half-Power in elevation direction (default = 10 deg)
Cin - Front-to back ratio (default = 25 dB)
Din - Electrical downtilt (default = 15 deg)
3gpp-3d The antenna model for the 3GPP-3D channel model (TR 36.873, v12.5.0, pp.17).
Ain - Number of vertical elements (M )
Bin - Number of horizontal elements (N )
Cin - The center frequency in [Hz]
Din - Polarization indicator
1. K=1, vertical polarization only
2. K=1, H/V polarized elements
3. K=1, +/-45 degree polarized elements
4. K=M, vertical polarization only
5. K=M, H/V polarized elements
6. K=M, +/-45 degree polarized elements
Ein - The electric downtilt angle in [deg] for Din = 4,5,6
Fin - Element spacing in [λ], Default: 0.5
3gpp-mmw Antenna model for the 3GPP-mmWave channel model (TR 38.901, v14.1.0, pp.21).
The parameters “Ain” - “Fin” are identical to the above model for the “3gpp-3d”
channel model. Additional parameters are:
Gin - Number of nested panels in a column (M g)
Hin - Number of nested panels in a row (N g)
Iin - Panel spacing in vertical direction (dg, V ) in [λ], Default: 0.5 M
Jin - Panel spacing in horizontal direction (dg, H) in [λ], Default: 0.5 N
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
[ 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.
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.
single
Calling object Object array
Description Set all properties to single precision to increase computation performance
[ 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
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
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
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.
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
h track = qd track.generate ( track type, track length, direction, street length min, street length mu, street length std,
curve radius, turn probability )
Calling object None (static method)
Description Generate tracks
This function creates tracks with specific properties. Currently supported are ”linear”, ”circular” and
”street”.
Track types linear Creates a linear track with given length and direction.
Direction describes the travel direction along the track in [rad] in mathematical
sense (i.e. 0 means east, pi/2 means north, pi means west and -pi/2 south). If
”track length” or ”direction” is not specified, then the default track is 1 m long
and has a random direction.
circular Creates a circular track with given length and starting-direction.
Direction defines the starting point on the circle in [rad]. Positive values define
the travel direction as counter clock-wise and negative values as clock-wise. E.g. 0
sets the start point in the east of the circle, traveling north; -2π sets it in the east,
traveling south. The default is random.
street Emulates a drive route through a city grid.
The mobile terminal starts at point 0, going into a specified direction. The trajec-
tory grid is build from street segments. The length of each street is specified by the
parameters ’street length min’, ’street length mu’, and ’street length sigma’.
At the end of a street (i.e. at a crossing), the terminal turns with a probability
specified by ’turn probability’. The change of direction is in between 75 and 105
degrees either left or right. The radius of the curve is given by ’curve radius’.
The track is set up in a way that prevents driving in circles.
Input track type The type of the track
track length the length in [m]
direction specifies the driving direction in [rad] of the first segment in mathematical sense
(0 means east, pi/2 means north). The default value is random
street length min the minimal street length in [m]. The default is 50 m. (for type ”street” only)
street length mu the median street length in [m]. The default is 187 m. This value was obtained
from measurements in Berlin, Germany. (for type ”street” only)
street length std the standard deviation of the street length in [m]. The default is 83 m. This value
was obtained from measurements in Berlin, Germany. (for type ”street” only)
curve radius the curve radius during a turn in [m]. The default is 10 m. (for type ”street” only)
turn probability the probability of a turn at a crossing. Possible values are in between 0 and 1. The
default is 0.5. (for type ”street” only)
Output h track A qd track object
[ dist, h track int ] = interpolate ( method, sample rate, movement profile, algorithm, update input )
Calling object Single object
Description Interpolates the snapshot positions along the track
This function interpolates the positions along the track such that it matches the given sample rate.
The channel model operates on a position-based sample grid. That means that the ’builder’ generates
one CIR for each position on the track. In practise, however, a time continuous evolution of the CIR is
often needed. This can be interpolated from the position-based grid, provided that the spatial sample
theorem is not violated (i.e. the channel needs to be sampled at least twice per half wave length). In
order to do that, enough sample points are needed along the track.
Interpolation distance The distance-based interpolation calculates the missing sample points and places
method them equally spaced along the track. This corresponds to a constant speed when
evaluating the output CIRs. The required minimum value for ’sample rate’ is
equal to ’1/samples per meter’ from the ’qd simulation parameters’ object.
time The time-based interpolation is needed in dual-mobility scenarios, where Tx and
Rx can move at different speeds. In this case the sample rate is given in [seconds]
and a movement profile must be given. If you use the set speed function of the
qd track object, the movement profile is automatically generated.
snapshot Time-based interpolation where positions on the track are given by snapshot num-
bers instead of distances. This is useful when the device is stationary but changes
it’s orientation over time, e.g. a radar antenna. The sample rate must be given
in [seconds]. The movement profile must contain the time-points (first row) vs.
snapshot number (second row). Snapshot indices start from 1. Fractional number
are possible (e.g. 1.5).
Input method Must be either ’distance’, ’time’ or ’snapshot’.
sample rate The interval between two (output) snapshots given in [meters] for distance-based
interpolation and [seconds] for time-based and snapshot-based interpolation.
movement profile A matrix describing the time (in seconds) vs. distance (in meters) for time-based
interpolation; or (input) snapshot-number vs. distance for snapshot-based inter-
polation. The first row describes the time points, the second row describes the
positions on the track relative to the start point.
algorithm Selects the interpolation algorithm. Optional are
• linear - Linear interpolation (default)
• cubic - Shape preserving piecewise cubic interpolation
Interpolation of the orientations are always done using the SLERP algorithm
(spherical linear interpolation).
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.
Output dist Distance of each interpolated position from the start of the track in [m]
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.
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
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.
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
[ 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.
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.
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
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.
[ 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
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)
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
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.
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
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
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 ]
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.
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.
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.
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
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
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
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.
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.
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).
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.
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
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.
[ loss, scale sf, loss init, scale sf init ] = get pl ( evaltrack, alt plpar, txpos )
Calling object Single object
Description Implements various path-loss models
This function implements various path-loss models such as defined by 3GPP 36.873 or 38.901. The
parameters of the various models are given in the configuration files in the folder ’quadriga src\config’.
When a builder object is initialized, the parameters appear in the structure ’qd builder.plpar’.
Input evaltrack A ’qd track’ object for which the PL should be calculated. If ’evaltrack’ is not
given, then the path loss is calculated for each Rx position. Otherwise the path
loss is calculated for the positions provided in ’evaltrack’.
alt plpar An optional alternative plpar which is used instead of ’qd builder.plpar’.
txpos The corresponding tx positions. This variable can be provided by:
1. A ’qd track’ object having the same number of snapshots as the
’evaltrack’;
2. A 3-element vector containing the fixed x,y, and z coordinate of the tx;
3. A [3 x N] matrix containing one tx position for each position on the
’evaltrack’;
4. The variable is unprovided or empty. In this case, the tx-positions are
obtained from the ’qd builder’ object.
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.
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.
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
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]
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
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
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.
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:
Properties
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).
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
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
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).
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 ]
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!)
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
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
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 ]
[ 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 ]
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 ]
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 ]
[ 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
[ 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.
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 ]
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.
Trajectories
Scenarios Transmitter Positions
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
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 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:
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).
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)
The two parameters DSγ and DSω modify the median value DSµ such that it
changes depending on the carrier frequency:
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:
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:
Each one of them is assumed to be log-normal distributed. Hence, we need the parameters µ and σ to define
the distributions. These spreads are translated into specific angles for each multipath cluster. Additionally,
we assume that clusters are the source of several multipath components that are not resolvable in the delay
domain. Thus, these sub-paths do not have specific delays, but they have different departure- and arrival
angles. Thus, we need an additional parameter cφ for each of the four angles that scales the dimensions of
the clusters in 3D-space. See Sec. 3.3 for details.
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 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).
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).
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).
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).
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).
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.
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)
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.
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.
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).
d2D
BP = E · (hBS − hE ) · (hMT − hE ) · fGHz (9)
q
2
d3D
BP = (d2D
BP ) + (hBS − hMT )
2
(10)
d2D
BP1 = E1 · (hBS − hE1 ) · (hMT − hE1 ) · fGHz (15)
d2D
BP2 = E2 · (hBS − hE2 ) · (hMT − hE2 ) · fGHz (16)
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
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
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)
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].
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 >
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).
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.
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.
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 >
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)
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.
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.
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.
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.
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.
This would set the center frequency to 3.5 GHz, the sample density to 2.5, and the channel update rate to 1 ms.
3 Technical Documentation
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).
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.
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.
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
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
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)
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.
A spatially correlated Gaussian stochastic process generates normal distributed random numbers
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)
dλ
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]
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 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)
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.
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).
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.
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).
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:
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.
• 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:
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.
Correlated paramters
...
Linear transformation to impose
White Gaussian
inter-parameter correlation
noise generator
...
...
...
...
...
BESD c71 ... c77 AESD
Sum-of sinusoids
autocorrelation
shaping
.4
.2
0
0 200 400 600
Delay [ns]
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 )
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λ ,
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
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
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
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.
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
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.
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λ ,
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
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.
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
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.
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.
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
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
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)
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
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
The final angles are then obtained by converting ĉl back to spherical coordinates.
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]).
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
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
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.
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.
An update of the arrival angles is obtained by transforming ar,l,m,s back to spherical coordinates.
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
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.
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
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
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
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.
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
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.
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.
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
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.
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.
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 ) ◦
z z
x y x y
horizontal pattern
z z
x y x y
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(Θ,Φ)
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 ϑ
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).
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).
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
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
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.
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.
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
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.
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
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.
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
1
Tx track
e nt
m overlapping part initial Rx pos.
seg segment 2
Rx track initial Rx pos. segment 1
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.
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
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.
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
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
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
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
2π
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
2π
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.
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.
1
0.9
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).
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.
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
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)
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
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
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.
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:
• 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.
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.
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
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
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:
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.
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
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
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
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 ’ ) ;
-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)
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 )
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
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
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
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
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 ’)
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
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 ’)
0
Tap power (dB)
-10
-20
-30
-40
-50
20 25 30 35 40 45 50
Distance from track start point
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
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
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.
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) ) ])
0.8
0.6
0.4
0.2
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 ] ’) ;
0.6
0.4
0.2
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 ’) ;
0.8
0.6
0.4
0.2
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.
0.6
0.4
0.2
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.
This tutorial shows how to set up scenarios with several transmitters and receivers and the use of scenarios.
First, we set up a basic simulation with two transmitters. One of them is outdoors, the other is indoors.
1 clear all
2
3 s = qd_simulation_parameters ; % Set up s i m u l a t i o n p a r a m e t e r s
4 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bars
5 s . c en t e r _ f r e q u e n c y = 2.53 e9 ; % Set center f r e q u e n c y
6 l = qd_layout ( s ) ; % Create new Q u a D R i G a layout
7
8 l . no_tx = 2; % Two BSs
9 l . tx_position (: ,1) = [ -142 ; 355 ; 64 ]; % Outdoor BS
10 l . tx_position (: ,2) = [ 5 ; 0; 10 ]; % Indoor BS
We create two different MTs. MT1 is indoors. The link to BS1 is in scenario ”WINNER UMa C2 NLOS”.
The link to BS2 is in ”WINNER Indoor A1 LOS”. MT1 has no segments. The rows in ”qd track.scenario”
indicate the scenario for each BS. If there is only one row, then all BSs get the same scenario. The second
MT is outdoors, far away from the indoor BS. The first part of the MT2 track is in LOS, the second is in
NLOS. The columns of track.scenario indicate the segments. Here, all BSs get the same scenarios.
1 l . no_rx = 2; % Two MTs
2 l . rx_track (1 ,1) = qd_track ( ’ linear ’ , 0.2 ) ; % Linear track with 20 cm length
3 l . rx_track (1 ,1) . name = ’ Rx1 ’; % Set the MT1 name
4 l . rx_track (1 ,1) . scenario = { ’ W I N N E R _ U M a _ C 2 _ N L O S ’; ’ W I N N E R _ I n d o o r _ A 1 _ L O S ’ }; % Two S c e n a r i o s
5
6 l . rx_track (1 ,2) = qd_track ( ’ linear ’ , 0.2 ) ; % Linear track with 20 cm length
7 l . rx_track (1 ,2) . name = ’ Rx2 ’; % Set the MT2 name
8
9 l . rx_position (: ,2) = [ 100;50;0 ]; % Start p o s i t i o n of the MT2 track
10 i n t e r p o l a t e _ p o s i t i o n s ( l . rx_track , s . s a m p l e s _ p e r _ m e t e r ) ; % I n t e r p o l a t e p o s i t i o n s
11
12 l . rx_track (1 ,2) . segment_index = [1 3]; % Set s e g m e n t s
13 l . rx_track (1 ,2) . scenario = { ’ W I N N E R _ U M a _ C 2 _ L O S ’ , ’ W I N N E R _ U M a _ C 2 _ N L O S ’ };
We calculate the channel coefficients and plot the list of created segments.
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
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
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
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
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.
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 ’) ;
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 ’) ;
20
10
KFC [dB]
0
-10
-20 Equal
+/- 3dB
-30
-30 -20 -10 0 10 20 30
KFP [dB]
1
DSC [ s]
0.5
Equal
+/- 10% Error
0
0 0.5 1 1.5
DSP [ s]
Now we compare the angular spreads calculated from the channel coefficients with the values in the builder.
Most values are in the 10% error corridor. The deviations come from the per-cluster angular spreads, the
limited resolution of the antenna and the dependency of the maximal angular spread on the K-Factor.
1 az = reshape ( az , c (1) . no_path , [] , l . no_rx ) ;
2
3 ang = reshape ( permute ( az , [3 ,2 ,1] ) , [] , c (1) . no_path ) ;
4 asa = qf . c a l c _ a n g u l a r _ s p r e a d s ( ang , pow ) ;
5 asa = mean ( reshape ( asa , l . no_rx ,[] ) ,2 ) ;
6
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 ’) ;
60
ASA C [deg]
40
20
Equal
+/- 10% Error
0
0 10 20 30 40 50 60 70 80
ASA P [deg]
30
ESAC [deg]
20
10
Equal
+/- 10% Error
0
0 5 10 15 20 25 30 35 40
ESAP [deg]
The transmitter at the BS sends a vertically polarized and a LHCP wave. When the wave is scattered, the
polarization is changed. The array antenna is able to measure the Jones-vector of the incoming wave (after
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 ’) ;
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 ’) ])
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
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 ’)
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 ’) ;
-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 ’) ;
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 ’) ;
-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
2.5
-100
5
7.5
-110
10
12.5 -120
15
17.5 -130
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).
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
-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 ’) ;
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
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 ’) ;
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]
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
This more complex tutorial shows how to manually define a state sequence (i.e. a sequence of scenario
transitions), manipulate antennas, create large-scale-parameters such as shadow fading and delay spread,
and obtain a time series of channel coefficients. This script recreates a measured drive test from the Park Inn
Hotel at Berlin Alexanderplatz. The transmitter was at the rooftop of the hotel while the mobile receiver
was moving south on Grunerstraße. A simplified version of the scenario is recreated in the simulation where
the scenarios along the track were classified by hand.
Channel model set-up and coefficient generation The following code configures some basic parameters.
1 close all
2 clear all
3
4 set (0 , ’ d e f a u l t T e x t F o n t S i z e ’ , 18) % Default Font Size
5 set (0 , ’ d e f a u l t A x e s F o n t S i z e ’ , 18) % Default Font Size
6 set (0 , ’ d e f a u l t A x e s F o n t N a m e ’ , ’ Times ’) % Default Font Type
7 set (0 , ’ d e f a u l t T e x t F o n t N a m e ’ , ’ Times ’) % Default Font Type
8 set (0 , ’ d e f a u l t F i g u r e P a p e r P o s i t i o n M o d e ’ , ’ auto ’) % Default Plot p o s i t i o n
9 set (0 , ’ D e f a u l t F i g u r e P a p e r T y p e ’ , ’ < custom > ’) % Default Paper Type
10
11 s = qd_simulation_parameters ; % New s i m u l a t i o n p a r a m e t e r s
12 s . c en t e r _ f r e q u e n c y = 2.53 e9 ; % 2.53 GHz carrier f r e q u e n c y
13 s . u s e _ a b s o l u t e _ d e l a y s = 1; % Include delay of the LOS path
14 s . s ho w _ p r o g r e s s _ b a r s = 0; % Disable p r o g r e s s bars
We generate a track of 500 m length. This track is then interpolated to 1 snapshot per meter. In this way, it
is possible to assign segments to the track using units of meters. The ”segment index” contains the segment
start points in units of meters relative to the track start point.
1 t = qd_track ( ’ linear ’ ,500 , -135* pi /180) ; % Track of 500 m length , d i r e c t i o n SE
2 t . i ni t i a l _ p o s i t i o n = [120; -120;0]; % Start p o s i t i o n
3 t. interpolate_positions ( 1 ); % I n t e r p o l a t e to 1 sample per meter
4 t . segment_index = [1 ,45 ,97 ,108 ,110 ,160 ,190 ,215 ,235 ,245 ,280 ,295 ,304 ,330 ,400 ,430 ]; % S e g m e n t s
We now assign the the scenarios to the segments. Since the measurements were done in a satellite context,
we use the ”MIMOSA 10-45 LOS” and ”MIMOSA 10-45 NLOS” scenario. The track is then interpolated
to 3 snapshots per meter.
1 Sl = ’ MIMOSA_10 -45 _LOS ’;
2 Sn = ’ MIMOSA_10 -45 _NLOS ’;
3 t . scenario = { Sn , Sl , Sn , Sl , Sn , Sn , Sn , Sl , Sn , Sl , Sn , Sl , Sn , Sn , Sn , Sn };
4 t. interpolate_positions ( 3 ); % I n t e r p o l a t e to 3 sample per meter
A new QuaDRiGa layout is created, simulations parameters and the receiver track get assigned. When the
channel coefficients are generated, there is a merging interval at the end of each segment during which paths
from the old segment disappear and new paths appear. The method ”correct overlap” adjusts the segment
start and end-points such that this transitions happens in the middle of the assigned segment start and
end-points.
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
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.
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 ’)
-90
-100
Power [dB]
-110
-120
-130 LOS
Ptotal
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 ’)
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 ’) ;
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 ’) ;
10
0
0 0.1 0.2 0.3 0.4 0.5
[ s]
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).
• Cluster delays and angles for each multi-path component are the same
• Spatial consistency of the LSPs is identical
Differences:
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
Antenna set-up Two different antenna configurations are used at the BS. The 2.6 GHz antenna is con-
structed from 8 vertically stacked patch elements with +/- 45 degree polarization. The electric downtilt
is set to 8 degree. The mm-wave antenna uses 64 dual-polarized elements in a 8x8 massive-MIMO array
configuration. The antennas are assigned to the BS by an array of ”qd arrayant” objects. Rows correspond
to the frequency, columns to the BS. There is only 1 BS in the layout. The mobile terminal uses a vertically
polarized omni-directional antenna for both frequencies.
1 a_2600_Mhz = qd_arrayant ( ’3 gpp -3 d ’ , 8 , 1 , s . c e n t e r _ f r e q u e nc y (1) , 6 , 8 ) ;
2 a_28000_MHz = qd_arrayant ( ’3 gpp -3 d ’ , 8 , 8 , s . c e n t e r _ f re q u e n c y (2) , 3 ) ;
3
4 l . tx_array (1 ,1) = a_2600_Mhz ; % Set 2.6 GHz antenna
5 l . tx_array (2 ,1) = a_28000_MHz ; % Set 28 Ghz antenna
6
7 l . rx_array = qd_arrayant ( ’ omni ’) ; % Set omni - rx antenna
Coverage preview Next, we create a preview of the antenna footprint. We calculate the map for the two
frequencies including path-loss and antenna patterns. The first plot is for the 2.6 GHz band.
1 s am pl e _d is ta n ce = 5; % One pixel every 5 m
2 x_min = -50; % Area to be samples in [ m ]
3 x_max = 550;
4 y_min = -300;
5 y_max = 300;
6 rx_height = 1.5; % Mobile t e r m i n a l height in [ m ]
7 tx_power = 30; % Tx - power in [ dBm ] per antenna element
8 i_freq = 1; % F r e q u e n c y index for 2.6 GHz
9
10 % C a l c u l a t e the map i n c l u d i n g path - loss and antenna p a t t e r n s
11 [ map , x_coords , y_coords ] = l . power_map ( ’3 GPP_38 .901 _UMa_LOS ’ , ’ quick ’ ,...
12 sample_distance , x_min , x_max , y_min , y_max , rx_height , tx_power , i_freq ) ;
13 P_db = 10* log10 ( sum ( map {1} , 4 ) ) ;
14
15 % Plot the results
16 l . visualize ([] ,[] ,0) ; % Show BS and MT p o s i t i o n s on the map
17 hold on ; imagesc ( x_coords , y_coords , P_db ) ; hold off % Plot the antenna f o o t p r i n t
18 axis ([ x_min , x_max , y_min , y_max ]) ;
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
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 ;
This tutorial shows how to include a deterministic ground reflection component into the channel. The effects
are then demonstrated for different carrier frequencies (2 GHz, 28 GHz, and 60 GHz).
Simulation assumptions are in accordance with 3GPP 38.901 v14.1.0, Section 7.6.8, p.60 (Explicit ground
reflection model). Some modifications are made as described in [Jaeckel, S.; Raschkowski, L.; Wu, S.; Thiele,
L. & Keusgen, W.; ”An Explicit Ground Reflection Model for mm-Wave Channels”, Proc. IEEE WCNC
Workshops ’17, 2017 ]. For all ground reflection simulations, a random ground humidity is assumed, which
changes the relative permittivity of the ground and, hence, the reflection coefficient will be different for each
segment. All ground reflection properties are controlled by the scenario configuration files in the ”config”
folder of the channel model. The parameter ”GR enabled” activates (1) or deactivates (0) the ground
reflection component. The parameter ”GR epsilon” can be used to fix the relative permittivity to a fixed
value.
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:
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
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 ’)
-70
-80
-90
-100
-110
0 10 20 30 40 50 60 70
BS-MT 2D distance in [m]
Plot path gain for 3GPP UMi LOS model The second plot sows the results for the 3GPP UMi LOS model.
The path loss is similar compared to the 2-ray model. A shadow-fading component induces slow changes
in the average received power. By default, the shadow fading is fully correlated between the 3 frequencies.
Small-scale-fading correlations are done according to 3GPP TR 38.901 V14.1.0, Section 7.6.5, pp 57. This
can be changed by not using ”l.get channels”, but executing the channgel generation steps maually in a
different order (see the 3GPP TR 38.901 full calibration for more deails). The NLOS components cause
some fast fading wihich is averaged out by the broadband processing. No ground reflection is included.
Hence, the fast fluctuations are absent.
1 H = c (1 ,2 ,1) . fr (100 e6 ,64) ; % 2 GHz b r o a d b a n d channel (100 MHz )
2 P_2ray_2Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ; % Average power
3
4 H = c (1 ,2 ,2) . fr (100 e6 ,64) ; % 28 GHz b r o a d b a n d channel (100 MHz )
5 P_2ray_28Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ; % Average power
6
7 H = c (1 ,2 ,3) . fr (100 e6 ,64) ; % 60 GHz b r o a d b a n d channel (100 MHz )
8 P_2ray_60Ghz = squeeze ( mean ( abs ( H (1 ,1 ,: ,:) ) .^2 ,3) ) ; % Average power
9
10 P = 10* log10 ( [ P_2ray_2Ghz , P_2ray_28Ghz , P_2ray_60Ghz ] ) ;
11
12 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
13 plot ( dist_2d , P )
14 axis ([0 , max ( dist_2d ) +10 , min ( P (:) ) -5 , max ( P (:) ) +5 ])
15 xlabel ( ’BS - MT 2 D distance in [ m ] ’)
16 ylabel ( ’ Path gain in [ dB ] ’)
17 title ( ’ Path gain for 3 GPP UMi LOS ’)
18 legend ( ’2 GHz ’ , ’ 28 GHz ’ , ’ 60 GHz ’)
-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 ’)
-80
-90
-100
-110
-120
0 10 20 30 40 50 60 70
BS-MT 2D distance in [m]
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:
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.
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.
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 ’)
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
Azimuth of Departure
300
Requested AS
Actual AS
200 LOS angle
NLOS angles
Angle [deg]
100
-100
-200
0 10 20 30 40 50
Distance from start point [m]
Elevation of Departure Elevation angles are bound between -90 and +90 degrees. The angles also do not
change rapidly except for the sudden changes when the model uses single-bounce propagation.
1 % C a l c u l a t e AS from the channel c o e f f i c i e n t s
2 mean_angle = angle ( sum ( pow _normali zed .* exp ( 1 j * b . EoD ) , 2 ) ) ;
3 ang = b . EoD - mean_angle * ones ( 1 , b . NumClusters ) ;
4 ang = angle ( exp ( 1 j * ang ) ) ;
5 as = sqrt ( sum ( p ow_norm alized .* ang .^2 ,2) - sum ( p ow_norma lized .* ang ,2) .^2 ) * 180/ pi ;
6
7 % Get angles in degres
8 ang = b . EoD *180/ pi ;
9
10 figure ( ’ Position ’ ,[ 100 , 100 , 760 , 400]) ; % New figure
11 plot ( dist , b . esD ’ , ’ -k ’ , ’ Linewidth ’ ,2 )
12 hold on
13 plot ( dist , as , ’ -. r ’ , ’ Linewidth ’ ,3 )
14 plot ( dist , ang (: ,1) , ’ Linewidth ’ ,2)
15 plot ( dist , ang (: ,2: end ) , ’ -- ’)
16 plot ( dist , zeros ( b . no_rx_positions ,1) , ’ -k ’)
17 hold off ; xlim ([0 , len ]) ; grid on
18 title ( ’ Elevation of Departure ’) ; xlabel ( ’ Distance from start point [ m ] ’) ; ylabel ( ’ Angle [ deg ] ’)
19 legend ( ’ Requested AS ’ , ’ Actual AS ’ , ’ LOS angle ’ , ’ NLOS angles ’)
Elevation of Departure
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
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
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 ] ’)
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 ;
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.
-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
-100
0
-120
-140
-500
0 2 4 6 8
Time [s]
-80
0 -100
-120
-140
-500
0 2 4 6 8
Time [s]
-100
0
-120
-140
-500
0 2 4 6 8
Time [s]
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.
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.
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
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
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 ] ) ;
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 ] ) ;
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 ] ) ;
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)
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
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 ;
59 end
60 end
61 toc
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
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 }) ;
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 }) ;
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
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:
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)
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
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)}
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 ] ) ;
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 ] ) ;
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.
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
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.
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
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
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)
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
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)
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)
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 ) ;
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
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
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
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)
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)
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 .
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
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)
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)
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
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
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)
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) ;
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).
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)
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
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 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 )
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
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 ’) ;
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 )
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
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) ;
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),
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
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
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 ) ;
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
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
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
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
References
[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.
[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.
[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.
[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
[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.
[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.
[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.
[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.
[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.
[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.
[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