MATLAB implementation
of the 3GPP Spatial Channel Model
(3GPP TR 25.996)
Implementation Documentation
1.21 (scm-05-07-2006)
July 5, 2006
scm-05-07-2006.zip
Version:
Date:
File:
Requires MATLAB 6.5.0 (R13) or later
Authors:
Jari Salo (formerly TKK)
Giovanni Del Galdo (TUI, giovanni.delgaldo@tu-ilmenau.de)
Jussi Salmi (TKK, jussi.salmi@tkk.fi)
Pekka Kyösti (EBIT, pekka.kyosti@elektrobit.com)
Marko Milojevic (TUI, marko.milojevic@tu-ilmenau.de)
Daniela Laselva (Nokia, daniela.laselva@nokia.com)
Christian Schneider (TUI, christian.schneider@tu-ilmenau.de)
TKK = Helsinki University of Technology
TUI = Technical University of Ilmenau
EBIT = Elektrobit
scm_05-07-2006
Document History:
July 5, 2006
14.05.2004
24.05.2004
27.05.2004
28.05.2004
29.05.2004
23.07.2004
26.07.2004
8.12.2004
14.12.2004
4.1.2005
6.3.2005
5.7.2006
Document created
First draft with chapters: Introduction, High level structure and Model
input/output interface
Chapter added.
(Giovanni) Small changes in the text.
(Jari) Added examples, small changes in the text.
(Pekka) Added/modified input parameters in Tables 1 to 3.
(Jari) Added Sections 2,5,6 + some editing work
(Jari) Edited the original WINNER internal document for public release.
(Jari) Added Section 6
(Jari) Modified polarization power normalization and Section 7.
(Jari) Corrected Table 5 and Table 6. Small editorial changes.
(Jari, Jussi) Corrected a minor bug in scm_mex_core.c, channel
coefficient computation remains unaffected. Minor/cosmetic changes in
some MATLAB functions.
Page 2 (18)
scm_05-07-2006
Table of Contents
July 5, 2006
1.
2.
3.
4.
5.
6.
7.
8.
9.
Introduction............................................................................................ 4
Installation.............................................................................................. 4
Description of files included in the package....................................... 5
4.1
4.2
5.1
5.2
6.1
6.2
6.3
6.4
7.1
7.2
7.3
Model input/output interface................................................................. 6
Input parameters......................................................................................................................6
Definition ................................................................................................................................8
Output parameters.................................................................................................................11
Optimized computation....................................................................... 11
scm_mex_core.m ..................................................................................................................11
interp_gain_c.m ....................................................................................................................12
Implementation notes.......................................................................... 12
Configuration of link parameters ..........................................................................................12
Normalization of the channel matrices with the polarization option.....................................13
Sectorized Base-Stations.......................................................................................................14
General Array Configurations...............................................................................................15
Examples.............................................................................................. 15
Basic examples of channel matrix generation.......................................................................15
Antenna patterns and a dual-polarized 2x4 MIMO system...................................................16
Another example about polarization option and xpd ............................................................17
Licensing and how to cite the work ................................................... 17
Acknowledgement............................................................................... 18
10. References ........................................................................................... 18
Page 3 (18)
scm_05-07-2006
July 5, 2006
1. Introduction
This document describes a MATLAB implementation of the 3GPP Spatial Channel
Model (SCM) [3GPP03]. The accompanying MATLAB code implements the system
level channel model described in Section 5 of [3GPP03], except the “far scatterer
clusters” feature from Section 5.5.2 and the intercell interference feature from Section
5.7. These features were left out of the implementation because they make certain
restricting assumptions about the network layout. The current implementation has no
built-in assumptions on network geometry and is hence usable for a variety of
simulation purposes.
The channel model takes the Multiple-Input Multiple-Output (MIMO) radio link
parameters, model configuration parameters, and antenna parameters as inputs, and
outputs the MIMO channel matrices. Channel matrices can be generated for multiple
BS-MS links with one function call. The output is a multi-dimensional array which
contains the channel impulse responses for a pre-defined number of radio links.
Mapping of MS-BS distances, array orientations and MS mobility parameters into the
SCM input format is left to the system simulator program. To make using of the model
easier default (random) parameters can be used. Channel convolution and other related
operations are beyond the scope of the implemented channel model.
The work presented in this report has been in most parts carried out in Workpackage 5
of the WINNER1 project [WIN].
2. Installation
The code has been created and tested using Matlab version 6.5.0 (Release 13). Older
versions might cause unexpected problems. While the software was primarily developed
on Windows operating systems (2000Pro, XP), Linux was also used in both
development and testing.
The SCM package installs as a MATLAB mini-toolbox. The installation proceeds as
follows:
1. Unzip the files into a directory called, for example, ‘winner’ and add it to
MATLAB path. See MATLAB command addpath for information on how to
add a directory to MATLAB path.
2. Type ‘help winner’ at MATLAB prompt to get started.
To compile the ANSI-C functions (optional) MATLAB’s mex compiler must be
properly configured. Compilation of the ANSI-C interpolation functions also requires
that GNU Scientific Library [GSL] is properly installed and configured in your system.
1 Wireless World Initiative New Radio
Page 4 (18)
scm_05-07-2006
3. Description of files included in the package
Table 1 lists the MATLAB and C-files included in the package. A short description of
each file is also given.
July 5, 2006
Table 1. MATLAB and ANSI-C files included in the distributed package
Filename
scm.m
scmparset.m
linkparset.m
antparset.m
pathloss.m
interp_gain.m
Description
This the main function called by the user to generate channel
matrices. It calls the auxiliary functions that generate bulk
parameters, do antenna pattern interpolation and compute the
actual channel matrices.
Helper function for setting the default parameter for the first
input struct
Helper function for setting the default parameter for the second
input struct
Helper function for setting the default parameter for the third
input struct
Function for computing the default pathloss according to
[3GPP03, Table 5.1]
Function for antenna pattern interpolation using MATLAB’s
interpolating functions
Function for computing “the big for loop” that generates the
channel matrices
scm_core.m
generate_bulk_par.m Function for generating the random “bulk” parameters for
interp_gain_c.m
scm_mex_core.m
scm_mex_core.c
macro and micro cells
MATLAB front end that calls interp_gain_mex.c
Help text file for scm_mex_core.c
Channel matrix generation implemented in ANSI-C for faster
computation
Antenna field pattern interpolation using GNU Scientific
Library (GSL) interpolating functions. This is faster than
interp_gain.m but requires that GSL is installed in the system.
See [GSL] for further information.
A utility function for computing the circular angle spread as
defined in [3GPP03, Annex A]. This function is not necessary
for channel matrix generation.
A utility function for computing rms delay spread. This
function is not necessary for channel matrix generation.
A utility function that generates the pattern of a slanted dipole
for vertical and horizontal polarizations. This is useful for
creating some simple MIMO antenna configurations.
interp_gain_mex.c
cas.m
ds.m
dipole.m
In addition to the files listed in Table 1 the distribution package also includes this
document, a readme text file and a license.txt file.
Page 5 (18)
July 5, 2006
scm_05-07-2006
4. Model input/output interface
The full syntax for the SCM function is ([ . ] indicates optional arguments):
[CHAN, [DELAYS], [FULLOUTPUT] ] = SCM( SCMPAR, LINKPAR, ANTPAR, [INITVALUES]).
Some quick comments:
• All input arguments are MATLAB structs. The first three input arguments are
mandatory. A helper function will be supplied so that their default values can be
set easily.
• The fourth input argument is optional. When given, SCM does not generate the
channel parameters randomly, but uses the user-supplied initial channel values.
• The first output argument is a 5D-array containing the MIMO channel matrices
for all links over a specified number of time samples.
• The second output argument includes multipath delays for all links. The path
delays are given in seconds.
• The third output argument is a MATLAB struct containing the randomly
generated link parameters and the final phases of the complex sinusoids. This
MATLAB struct can be used as INITVALUES in subsequent function calls.
The input and output parameters are explained in the following sections.
4.1 Input parameters
There are four input arguments, all of which are MATLAB structs. The first three
arguments are mandatory. Tables 1-4 describe the fields of the input structs.
Table 2: General channel model parameters. Common for all links, MATLAB struct SCMPAR.
Parameter name
NumBsElements
NumMsElements
Scenario
SampleDensity
NumTimeSamples
UniformTimeSampling
Definition
The number of elements in the BS array. This
parameter is ignored if antenna patterns are defined
in the input struct ANTPAR. In this case the number
of BS elements is extracted from the antenna
definition.
The number of elements in the MS array. This
parameter is ignored if antenna patterns are defined
in the input struct ANTPAR. In this case the number
of BS elements is extracted from the antenna
definition.
Selected SCM channel,scenario (‘suburban_macro’,
‘urban_macro’ or ‘urban_micro’)
Time sampling interval of the channel. A value
greater than one should be selected if Doppler
analysis is to be done.
Number of channel samples (impulse response
matrices) to generate per link.
If this parameter has value ‘yes’, the time sampling
interval of the channel for each user will be equal.
Sampling interval will be calculated from the
SampleDensity and the highest velocity found in the
input parameter vector MsVelocity. If this
parameter has value ’no’, then the time sampling
interval for each link will be different, if MSs have
different speeds (see linkpar.MsVelocity). Setting
this parameters ‘yes’ may be useful in some system-
level simulations where all simulated links need to
be sampled at equal time intervals, regardless of MS
Default value
Unit
2
2
’urban_micro’
-
2
100
‘no’
samples/half
wavelength
-
Page 6 (18)
scm_05-07-2006
July 5, 2006
speeds.
BS mean angle spread for urban macro
environment. Possible values are ‘eight’ and
‘fifteen’ degrees. This variable is ignored if
‘Scenario’ is not ‘urban_macro’.
Number of paths (channel taps). Path delays are
drawn from the delay distribution specified in
[3GPP03] regardless of the number of paths set.
Number of sub-paths per path. The only value
supported in the SCM specification is 20 subpaths,
see [3GPP03, Table 5.2].
Carrier center frequency. Affects path loss and time
sampling interval.
SCM options
('none','polarized','los','urban_canyon'). The options
are mutually exclusive.
Delay sampling interval (delay resolution). The
default corresponds to Tc/16, where Tc=1/3.84e6
[3GPP03, Sec. 5.3.1].
With this set to ‘yes’ the power of the elements of
the channel matrix (without pathloss) is normalized
to a constant, that does not depend on the XPD
ratios. See Section 6.2.
Path loss included in the channel matrices yes/no (if
‘no’, PL is calculated and returned in the third
output argument, but not multiplied with the
channel matrices)
Shadow fading included in the channel matrices
yes/no (if ‘no’ shadow fading is still computed and
returned in the third output argument, but not
multiplied with the channel matrices). Note that if
both path loss and shadowing are switched off the
average power of the channel matrix elements will
be one (with azimuthally uniform unit gain
antennas).
The name of the path loss function. Function
‘pathloss’ implements the default SCM path loss
model. If the default is used, center frequency is
taken from the parameter CenterFrequency. One can
define his/her own path loss function. For syntax,
see PATHLOSS.
Use optimized computation yes/no. With ‘yes’
faster C-function is used instead of m-function.
Note the C-function SCM_MEX_CORE.C must be
compiled before usage. For more information, see
SCM_MEX_CORE.M.
If optimized computation is used, complex
exponentials are taken from a look-up table to speed
up computation or calculated explicitly. This
parameter defines the lookup table size. Value 0
indicates that lookup table is not used, value –1 uses
the default table size 214 =16384. The size of the
table must be a power-of-two. If AnsiC_core = ‘no’
this parameter is ignored.
Random seed for fully repeatable channel
generation (if empty, seed is generated randomly).
Note that even if RandomSeed is fixed, two channel
realizations may still not be the same due to
potential differences between random number
generators in different MATLAB versions. Note
also that one must also use the same link and
antenna parameters.
BsUrbanMacroAS
NumPaths
NumSubPathsPerPath
CenterFrequency
ScmOptions
DelaySamplingInterval
XpdIndependentPower
PathLossModelUsed
ShadowingModelUsed
PathLossModel
AnsiC_core
LookUpTable
RandomSeed
‘eight’
6
20
2E9
‘none’
1.6276e-8
‘no’
‘no’
‘no’
‘pathloss’
‘no’
-
-
-
Hz
-
sec
-
-
-
-
-
0
integer
integer
Page 7 (18)
scm_05-07-2006
July 5, 2006
All parameters in this MATLAB struct are vectors of length K, where K is the number
of links. The values, if not specified in [3GPP03] are randomly generated; they are not
based on any specific network geometry or user mobility model and are provided for
easier usage of the model. For a brief example of link parameter configuration, see
Section 6.1.
Table 3: Link-dependent parameters, MATLAB struct LINKPAR.
Parameter name
Definition
MsBsDistance
Distance between BS and MS
ThetaBs
ThetaMs
OmegaBs
OmegaMs
MsVelocity
MsDirection
MsHeight
BsHeight
MsNumber
θBS (see Figure 1)
θMS (see Figure 1)
ΩMS (see Figure 1), this parameter is not currently
used.
ΩMS (see Figure 1), this parameter is not currently
used.
MS velocity
θv (see Figure 1)
Height of MS. Possibly needed for path loss
computation.
Height of BS. Possibly needed for path loss
computation.
Index number (positive integer) of the MS for each
simulated link. This parameter is needed for generating
shadow fading values with inter-site correlation.
Shadow fading is correlated for links between a single
MS and multiple BSs (inter-site correlation). There is
no correlation between shadow fading between
different MSs.
Default value
Users are approximately
uniformly distributed in a
circular cell over
distances of [35,500]
meters
U(-180,180)
U(-180,180)
NaN
NaN
10*ONES(1,K)
U(-180,180)
1.5*ONES(1,K)
32*ONES(1,K)
[1:K]
Unit
m
deg
deg
deg
deg
m/s
deg
m
m
-
The following parameters characterize the antennas. In this SCM implementation, only
linear arrays with dual-polarized elements are supported. The antenna patterns do not
have to be identical. The complex field pattern values for the randomly generated AoDs
and AoAs are interpolated.
Table 4. Antenna parameters, MATLAB struct ANTPAR
Parameter name
BsGainPattern
Definition
BS antenna field pattern values in a 4D array. The
dimensions are [ELNUM POL EL AZ] =
SIZE(BsGainPattern), where
ELNUM is the number of antenna elements in the array.
The elements may be dual-polarized.
POL – polarization. The first dimension is vertical
polarization, the second is horizontal. If the polarization
option is not used, vertical polarization is assumed (if both
are given).
EL – elevation. This value is ignored. Only the first
element of this dimension is used.
AZ – complex-valued field pattern in the azimuth
dimension given at azimuth angles defined in
Default
value
Unit
1
Page 8 (18)