Main Content

nrPUSCHPTRSIndices

Generate PUSCH PT-RS Indices

Since R2020a

Description

ind = nrPUSCHPTRSIndices(carrier,pusch) returns ind in matrix form, which contains phase tracking reference signal (PT-RS) resource elements (RE) of the physical uplink shared channel (PUSCH), as defined in TS 38.211 Section 6.4.1.2.2 [1]. The number of columns in ind depends on the transmission scheme and transform precoding. carrier specifies the carrier configuration parameters for a specific OFDM numerology and pusch specifies the PUSCH configuration parameters. When you enable transform precoding, the indices are generated relative to the start of the PUSCH allocation.

example

ind = nrPUSCHPTRSIndices(carrier,pusch,Name,Value) specifies output formatting options using one or more name-value pair arguments. Unspecified options take default values.

example

Examples

collapse all

Create a carrier configuration object with default properties. This object corresponds to a 10 MHz carrier with 15 kHz subcarrier spacing.

carrier = nrCarrierConfig;

Create a PUSCH configuration object with codebook-based transmission and enable the PT-RS configuration. Set the number of antenna ports to 4 and transform precoding to 0. When transform precoding is 0, the waveform type is cyclic-prefix orthogonal frequency division multiplexing (CP-OFDM).

pusch = nrPUSCHConfig;
pusch.TransformPrecoding = 0;
pusch.TransmissionScheme = 'codebook';
pusch.NumAntennaPorts = 4;
pusch.EnablePTRS = 1;

Create a PUSCH phase tracking reference signal (PT-RS) configuration object with specified properties.

ptrs = nrPUSCHPTRSConfig;
ptrs.TimeDensity = 2;
ptrs.FrequencyDensity = 4;
ptrs.REOffset = '11';

Assign the PUSCH PT-RS configuration object to PTRS property of PUSCH configuration object.

pusch.PTRS = ptrs;

Generate PUSCH PT-RS indices in subscript form

ind = nrPUSCHPTRSIndices(carrier,pusch,'IndexStyle','subscript')
ind = 312x3 uint32 matrix

    21     1     1
    69     1     1
   117     1     1
   165     1     1
   213     1     1
   261     1     1
   309     1     1
   357     1     1
   405     1     1
   453     1     1
      ⋮

Create a carrier configuration object with 30 kHz subcarrier spacing and 5 MHz transmission bandwidth.

carrier = nrCarrierConfig;
carrier.SubcarrierSpacing = 30;
carrier.NSizeGrid = 11;

Create a PUSCH configuration object with intraslot frequency hopping and enable the PT-RS configuration. Set the transform precoding to 1, starting physical resource blocks (PRB) index of the second hop to 3 and PRB set to 0:5. When transform precoding is 1, the waveform type is discrete fourier transform spread orthogonal frequency division multiplexing (DFT-s-OFDM).

pusch = nrPUSCHConfig;
pusch.PRBSet = 0:5;
pusch.TransformPrecoding = 1;
pusch.FrequencyHopping = 'intraSlot';
pusch.SecondHopStartPRB = 3;
pusch.EnablePTRS = 1;

Create a PUSCH phase tracking reference signal (PT-RS) configuration object with specified properties.

ptrs = nrPUSCHPTRSConfig;
ptrs.TimeDensity = 2;
ptrs.NumPTRSSamples = 4;
ptrs.NumPTRSGroups = 8;
ptrs.NID = 750;

Assign the PUSCH PT-RS configuration object to PTRS property of PUSCH configuration object.

pusch.PTRS = ptrs;

Generate PUSCH PT-RS symbols of data type single.

sym = nrPUSCHPTRS(carrier,pusch,'OutputDataType','single')
sym = 192x1 single column vector

   0.7071 + 0.7071i
  -0.7071 + 0.7071i
  -0.7071 - 0.7071i
   0.7071 - 0.7071i
  -0.7071 + 0.7071i
   0.7071 + 0.7071i
  -0.7071 + 0.7071i
   0.7071 + 0.7071i
   0.7071 + 0.7071i
  -0.7071 + 0.7071i
      ⋮

Generate PUSCH PT-RS indices in subscript form.

ind = nrPUSCHPTRSIndices(carrier,pusch,'IndexStyle','subscript')
ind = 192x3 uint32 matrix

    1    1    1
    2    1    1
    3    1    1
    4    1    1
   12    1    1
   13    1    1
   14    1    1
   15    1    1
   21    1    1
   22    1    1
      ⋮

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.

PUSCH configuration parameters, specified as an nrPUSCHConfig object. This function uses only these nrPUSCHConfig object properties.

For operation with shared spectrum channel access for frequency range 1 (FR1), set the Interlacing property to true, then use the RBSetIndex and InterlaceIndex object properties to specify the allocated frequency resources. (since R2023b)

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

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

Resource element indexing orientation, 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.

Dependencies

This property is applicable only when TransformPrecoding is set to 0.

Data Types: char | string

Output Arguments

collapse all

PT-RS 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'. The number of columns depends on the TransmissionScheme and TransformPrecoding properties of nrPUSCHConfig object and returned as one these values.

    • Number of PT-RS antenna ports configured — When transform precoding is disabled and transmission scheme is non-codebook.

    • Number of antenna ports configured — When transform precoding is disabled and transmission scheme is codebook.

    • Number of transmission layers — When transform precoding is enabled.

  • 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. This index orientation is applicable only when TransformPrecoding is set to 0. For DFT-s-OFDM, the indices are relative to the shared channel allocation.

Data Types: uint32

References

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

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2020a

expand all