Configuration
Table of contents
Configuration file is in YAML format. For more information about why YAML, please refer to this blog.
version
This field (version
) takes a string value representing the targeted mmCEsim version.
For compatibility convenience, this string can be used by the compiler
to decide the behavior.
The current default value is the same as the compiler version (0.3.0
).
meta
The meta
is a map that provides metadata which can be used in the report.
The used fields now include: title
, description
, author
.
physics
The physics
map contains physical system settings.
frequency
The bandwidth is specified in frequency
filed.
which can have value narrow
for narrowband or wide
for wideband.
off_grid
This is actually about the model.
With the geometric channel model with grid,
there can be off-grid (or power leakage) problems.
Recently, there are also super resolution formulations to solve the problem.
But we still adopt the grid representation for its popularity and simplicity.
By setting off_grid
field inside physics
to false
,
the off grid effect is discarded, i.e. all angles fall on the grid.
The default value is true
.
carriers
For a wideband system,
you may specify the number of carriers used in OFDM.
Its corresponding macro in CALC is
`CARRIERS_NUM`
.
nodes
A sequence (array) of nodes in the channel network. Transmitter (Tx), Receiver (Rx), Reconfigurable Intelligent Surface (RIS) are all considered node (channels are the connecting edges to these nodes). For each of its elements, you need to specify the following fields.
id
You need to specify a unique id
for each node.
They are used in channels
so that we know the direction of channel.
role
The role
field has valid values transmitter
(Tx
), receiver
(Rx
),
and RIS
(IRS
).
num
The field num
can be used to replicate several copies of the same node.
This is often used for multi-user scenarios.
Currently, this value is discarded, and the number is always 1.
size
The size
means the antenna/element number for a node.
For transmitters and receivers, it is the antenna number.
For RIS, it is the number of reflecting elements.
The value is a scalar for uniform linear array (ULA),
and is a 2-value array (for example [8, 4]
) for uniform planar array (UPA).
For a 2-value array that has the second value set to 1,
it is still regarded as a ULA.
Its corresponding macros in CALC are
`SIZE[<id>]`
, `SIZE[<id>].x`
, `SIZE[<id>].y`
,
`SIZE.T.x`
, `SIZE.T.y`
, `SIZE.T`
,
`SIZE.R.x`
, `SIZE.R.y`
, `SIZE.R`
, `SIZE.*`
.
beam
The number of beams. Dimensions similar to Size.
Its corresponding macros in CALC are
`BEAM[<id>]`
, `BEAM[<id>].x`
, `BEAM[<id>].y`
,
`BEAM.T.x`
, `BEAM.T.y`
, `BEAM.T`
,
`BEAM.R.x`
, `BEAM.R.y`
, `BEAM.R`
, `BEAM.*`
.
grid
The number of grids.
Dimensions similar to Size.
This is used in CALC function \dictionary
and macro `DICTIONARY.T`
and `DICTIONARY.R`
.
Its corresponding macros in CALC are
`GRID[<id>]`
, `GRID[<id>].x`
, `GRID[<id>].y`
,
`GRID.T.x`
, `GRID.T.y`
, `GRID.T`
,
`GRID.R.x`
, `GRID.R.y`
, `GRID.R`
, `GRID.*`
.
beamforming
In the beamforming
field, the variable name variable
is set,
and the beamforming scheme scheme
is defined.
The scheme
supports random
and custom
.
For a custom beamforming scheme, you also need to set the formula
field with ALG language.
The random active beamforming scheme (for Tx and Rx) is defined in
/include/mmcesim/sys/random_RIS_BF.alg
as
`VAR` = \randn(SIZE, TIMES) # generate random
`VAR` = `VAR` / \abs(Psi) # normalize
macro
User-defined macros are defined here. Please refer to documentation of macro for more information.
channels
The configuration channels
is a sequence (array) of channel links.
The settings for each channel link is shown below.
id
Similar to ID in Nodes,
each channel link has a unique identifier as in field id
.
from
The node which the link channel is transmitted from.
(from
)
to
The node which the link channel transmits to.
(to
)
sparsity
The sparsity
(number of clusters) of the channel.
gains
The channel gains
consisting of pass loss.
There are two types of gains supported (mode
):
normal
and uniform
.
For normal
gains, mean
and variance
need to be specified.
For uniform
gains, min
and max
need to be set.
sounding
Information related to the sounding procedure is defined here.
variables
Channel variables
names are defined here.
received
: received signal vectornoise
: received noise vectorchannel
: the cascaded channel
preamble
The preamble
is code part before main simulation
(including sounding, estimation and report generation).
Custom functions can be defined here.
This part is specified using the ALG language.
estimation
The main code for estimation
.
Function ESTIMATE
is used here
to call the compressed sensing (CS) algorithms
either defined in the standard ALG library
or in the preamble.
Basic MIMO Example
For a basic MIMO example, the estimation part is about converting the mmWave channel estimation to a compressed sensing problem before using
ESTIMATE
, and recover the channel from the sparse result withRECOVER
.
This part is specified using the ALG language.
conclusion
In conclusion
,
additional code after each simulation job
is added here.
This part is specified using the ALG language.
appendix
The code in appendix
is added after all jobs are done.
This part is specified using the ALG language.
simulation
backend
The backend
includes cpp
(C++ with Armadillo library),
python
(Python with NumPy library)
and matlab
or octave
.
This sets the language it exports to and the backend simulation bases on.
jobs
report
Text Report
The simulation report can be exported as plain text report, for example
LaTeX and PDF Report
LaTeX and its generated PDF report is also supported in addition to the
plain text .rpt
report.
Example