Main Content


Generate PDSCH resource element indices



[ind,info] = nrPDSCHIndices(carrier,pdsch) returns ind in matrix form, which contains 1-based physical downlink shared channel (PDSCH) resource element (RE) indices, as defined in TS 38.211 Sections and [1]. The number of columns in ind is equal to the number of antenna ports configured. carrier specifies the carrier configuration parameters for a specific OFDM numerology and pdsch specifies the PDSCH configuration . The function also returns the structure info, which contains additional information about the associated physical reference signals, PDSCH bit capacity, and PDSCH symbol capacity.

[ind,info] = nrPDSCHIndices(carrier,pdsch,Name,Value) specifies output formatting options using one or more name-value pair arguments. Unspecified options take default values.


collapse all

Create a carrier configuration object with default properties. Specify the physical layer cell identity as 42 and slot number as 10.

carrier = nrCarrierConfig;
carrier.NCellID = 42;
carrier.NSlot = 10;

Create a PDSCH configuration object with a 16-QAM modulation scheme. Set the radio network temporary identifier to 1005, size of the BWP to 25, starting PRB index of the BWP to 10, and PRB set to occupy the whole BWP.

pdsch = nrPDSCHConfig;
pdsch.Modulation = '16QAM';
pdsch.RNTI = 1005;
pdsch.NID = []; % Set NID equal to the NCellID property of carrier
pdsch.NSizeBWP = 25;
pdsch.NStartBWP = 10;
pdsch.PRBSet = 0:pdsch.NSizeBWP-1;

Generate PDSCH indices in subscript form and set the index orientation to bandwidth part.

[ind,info] = nrPDSCHIndices(carrier,pdsch,'IndexStyle','subscript','IndexOrientation','bwp')
ind = 3900x3 uint32 matrix

    1    1    1
    2    1    1
    3    1    1
    4    1    1
    5    1    1
    6    1    1
    7    1    1
    8    1    1
    9    1    1
   10    1    1

info = struct with fields:
                G: 15600
               Gd: 3900
        NREPerPRB: 156
    DMRSSymbolSet: 2
    PTRSSymbolSet: [1x0 double]

Generate PDSCH symbols of data type single.

numDataBits = info.G;
cws = randi([0 1],numDataBits,1);
sym = nrPDSCH(carrier,pdsch,cws,'OutputDataType','single')
sym = 3900x1 single column vector

  -0.9487 + 0.9487i
  -0.9487 - 0.9487i
  -0.3162 - 0.9487i
   0.9487 - 0.3162i
  -0.9487 + 0.3162i
   0.3162 + 0.9487i
   0.3162 + 0.9487i
  -0.3162 + 0.3162i
   0.3162 + 0.3162i
   0.9487 - 0.3162i

Input Arguments

collapse all

Carrier configuration parameters for a specific OFDM numerology, specified as an nrCarrierConfig object. This function uses only these properties of the nrCarrierConfig object.

PDSCH configuration parameters, specified as an nrPDSCHConfig object. This function only uses these nrPDSCHConfig object properties.

Property FieldValuesDescription

[] (default), integer from 1 to 275

Size of the bandwidth part (BWP) in terms of number of physical resource blocks (PRBs). The default value of [] implies that the value is equal to NSizeGrid of carrier input argument.


[] (default), integer from 0 to 2473

Starting PRB index of BWP relative to CRB 0. The default value of [] implies that the value is equal to NStartGrid of carrier input argument.


nrPDSCHReservedConfig (default), cell array of nrPDSCHReservedConfig objects

Reserved PRBs and OFDM symbols pattern in BWP, specified as a cell array of objects, of class nrPDSCHReservedConfig.


[] (default), nonnegative integer vector

Reserved resource elements (RE) indices within the BWP


'QPSK' (default), '16QAM', '64QAM', or '256QAM', a string scalar, a string array, or a cell array of character vectors

Modulation scheme(s) of codeword(s)


1 (default), integer from 1 to 8

Number of transmission layers. For one codeword, use an integer between 1 to 4. For two codewords, use an integer between 5 to 8.


'A' (default), 'B'

Mapping type of PDSCH


[0 14] (default), two-element vector of nonnegative integers

OFDM symbols allocated for PDSCH


[0:51] (default), vector of nonnegative integer from 0 to 274

PRBs allocated for PDSCH within the BWP


0 (default), 1

VRB-to-PRB interleaving, specified as one of these values.

  • 0 — Disable VRB-to-PRB interleaving.

  • 1 — Enable VRB-to-PRB interleaving.


2 (default), 4

Bundle size in terms of number of PRBs for VRB-to-PRB interleaving


1 (default), integer from 0 to 65,535

Radio network temporary identifier of the user equipment


nrPDSCHDMRSConfig configuration object

DMRS configuration object only uses these properties.

  • DMRSConfigurationType

  • DMRSTypeAPosition

  • DMRSLength

  • DMRSAdditionalPosition

  • CustomSymbolSet

  • DMRSPortSet

  • NumCDMGroupsWithoutData

For more information, see nrPDSCHDMRSConfig.


0 (default), 1

PT-RS configuration, specified as one of these values.

  • 0 — Disable PT-RS configuration.

  • 1 — Enable PT-RS configuration.


nrPDSCHPTRSConfig configuration object

PDSCH PT-RS configuration, specified as a nrPDSCHPTRSConfig configuration object.

Name-Value Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: 'IndexStyle','subscript','IndexBase','0based' specifies the RE indexing form and base, respectively, of the output.

RE indexing form, specified as one of these values:

  • 'index' — The indices are in linear index form.

  • 'subscript' — The indices are in [subcarrier, symbol, antenna] subscript row form.

Data Types: char | string

RE indexing base, specified as one of these values:

  • '1based' — The index counting starts from 1.

  • '0based' — The index counting starts from 0.

Data Types: char | string

Indexing orientation of resource elements, specified as the comma-separated pair consisting of 'IndexOrientation' and one of these values:

  • 'carrier' — Indices are referenced with respect to carrier grid.

  • 'bwp' — Indices are referenced with respect to bandwidth part.

Data Types: char | string

Output Arguments

collapse all

PDSCH resource element indices, returned as one of these values.

  • N-by-P matrix — The function returns this type of value when 'IndexStyle' is set to 'index'.

  • M-by-3 matrix — The function returns this type of value when 'IndexStyle' is set to 'subscript'. The matrix rows correspond to the [subcarrier, symbol, antenna] subscripts based on the number of subcarriers, OFDM symbols, and number of antennas, respectively.

Depending on the value of 'IndexBase', the function returns either 1-based or 0-based indices. Depending on the value of 'IndexOrientation', the function returns either carrier oriented indices or BWP oriented indices.

Data Types: uint32

PDSCH resource information, returned as a structure containing these fields.


Bit capacity of the PDSCH. This value must be equal to the length of the codeword from the DL-SCH transport channel. Nominally, the value of G is set to the outlen property of nrDLSCH System object™.


Number of resource elements per layer or port


The OFDM symbol locations in a slot containing demodulation reference signal (DM-RS) (0-based)


Number of REs per PRB allocated to PDSCH. This value excludes any reserved resources.


The OFDM symbol locations in a slot containing phase tracking reference signal (PT-RS) (0-based)


[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

Introduced in R2020a