Some of the functions in the LTE Toolbox™ require a large number of parameters. To simplify the process, the LTE Toolbox groups relevant parameters together into structures.
Consider, as an example, the task of generating PCFICH symbols
and mapping indices. For this task, you can call the functions ltePCFICH
, and ltePCFICHIndices
.
The ltePCFICH
function also requires cw
,
an input bit vector. For this input, you can call the lteCFI
function. All three functions require
a parameter structure, enb
, that represents the
eNodeB cell-wide settings.
The function ltePCFICH
requires enb
to
have at least the following fields.
NCellID
— Physical layer
cell identity
CellRefP
— Number of cell-specific
reference signal antenna ports. Valid values are 1, 2, and 4.
NSubframe
— Subframe number
In comparison, the function ltePCFICHIndices
requires enb
to
have at least the following fields.
NCellID
— Physical layer
cell identity
NDLRB
— Number of downlink
resource blocks
Finally, the function lteCFI
only
requires enb
to have one field, CFI
.
In all cases, if additional fields are present and not required, the
function ignores them.
This example shows how to create a cell-wide settings structure. In particular, you can create a parameter structure, enb
, that has all the fields required by the lteCFI
, ltePCFICH
, and |ltePCFICHIndices
functions.
Create a new parameter structure, enb
, with only one field, CFI
.
enb.CFI = 1;
Create a 32-element bit vector, cw
, representing the rate 1/16 block encoding of the control format indicator (CFI) value. To do so, call the lteCFI
function. Provide enb
as an input argument.
cw = lteCFI(enb);
Add additional fields to the parameter structure, enb
.
enb.NCellID = 0; enb.CellRefP = 1; enb.NSubframe = 0; enb.NDLRB = 9;
Generate the PCFICH complex symbols by calling the ltePCFICH
function, providing the enb
structure and the cw
bit vector as input arguments.
sym = ltePCFICH(enb,cw);
Although ltePCFICH
does not require that enb
have the NDLRB
field, this does not cause a problem. In this case, the function ignores any non-required fields.
Generate the PCFICH mapping indices by calling the ltePCFICHIndices
function, providing the enb
structure as an input argument.
ind = ltePCFICHIndices(enb);
Although ltePCFICHIndices
does not require the enb.NSubframe
field, it does not cause a problem. The function ignores any fields that it does not require.
You can remove fields from a structure using the MATLAB® rmfield
function but, as shown, removing the field is not necessary.
Many functions in the LTE Toolbox require a parameter
structure called enb
. This parameter represents
the eNodeB, or cell-wide, settings which are
common to all user equipments (UEs) in the cell. This structure can
include the following fields, which are among the most common.
NCellID
— Physical layer
cell identity
CellRefP
— Number of cell-specific
reference signal antenna ports. Valid values are 1, 2, and 4.
CyclicPrefix
— Length of
cyclic prefix. Valid values are 'Normal'
and 'Extended'
.
NSubframe
— Subframe number
NDLRB
— Number of downlink
resource blocks
Different functions require different fields. Not all
functions that require the enb
structure need all
the fields listed above. Some functions require only a subset of those
listed above. In this case, any non-required fields are ignored.
When optional parameter fields are not specified, a function
in the LTE Toolbox may assume default settings. In this
case, the toolbox produces warning messages to specify the default
values that it is using. You may control these warnings using the lteWarning
function.
This example shows how to pass optional inputs to certain functions to change the output format provided from the function.
Create a new parameter structure, enb
.
enb.NCellID = 0;
enb.CellRefP = 1;
enb.NSubframe = 0;
enb.NDLRB = 9;
enb.Ng = 'Sixth';
For example, consider the case where a list of indices for a certain physical channel is generated using ltePCFICHIndices
.
The input argument, enb
, is a structure with the appropriate fields. By default, these indices are one-based, as opposed to the zero-based indices specified in the technical specification (TS) documentation.
ind = ltePCFICHIndices(enb); firstIndex = ind(1)
firstIndex = uint32
2
Change the base number used in the index generation by providing an additional optional input argument. Specify '0based'
to generate zero-based indices or '1based'
to generate one-based indices.
ind = ltePCFICHIndices(enb, '0based');
firstIndex_0based = ind(1)
firstIndex_0based = uint32
1
ind = ltePCFICHIndices(enb, '1based');
firstIndex_1based = ind(1)
firstIndex_1based = uint32
2
The first index generated when no optional argument is provided matches the first index when '1based'
is specified. The optional input is not required. If you do not specify an optional input, the function uses the default value.
Specify multiple output format options for a function by providing a cell array input argument, opts
.
opts = {'sub', '1based', 'reg'}; pcfichInd = ltePCFICHIndices(enb, opts)
pcfichInd = 4x3 uint32 matrix
1 1 1
25 1 1
55 1 1
79 1 1
The generated PCFICH indices are in subscript indexing style, one-based, and refer to resource element groups. The cell array of options that you specify indicates the format for the returned indices.
Varying the order of the opts
cell entries produces the same result.
opts = {'1based', 'sub', 'reg'}; pcfichInd = ltePCFICHIndices(enb, opts)
pcfichInd = 4x3 uint32 matrix
1 1 1
25 1 1
55 1 1
79 1 1
The order in which you provide the opts
inputs is not relevant. Both cases produce the same values in the output argument, pcfichInd
.
lteCFI
| ltePCFICH
| ltePCFICHIndices
| lteWarning
| rmfield