nrPUSCHPTRS
Description
returns sym
= nrPUSCHPTRS(carrier
,pusch
)sym
in matrix form, which contains phase tracking reference
signal (PT-RS) symbols of physical uplink shared channel (PUSCH), as defined in TS 38.211
Section 6.4.1.2.1 [1]. The number of columns in
sym
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.
Examples
Generate PUSCH PT-RS Symbols for CP-OFDM
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, transmitted precoding matrix indicator to 5, frequency density to 4, and resource element offset to '11'. 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.TPMI = 5; pusch.EnablePTRS = 1; pusch.PTRS.FrequencyDensity = 4; pusch.PTRS.REOffset = '11';
Generate PUSCH PT-RS symbols of data type single.
sym = nrPUSCHPTRS(carrier,pusch,'OutputDataType','single')
sym = 169x4 single matrix
-0.3536 + 0.3536i 0.0000 + 0.0000i 0.3536 - 0.3536i 0.0000 + 0.0000i
-0.3536 + 0.3536i 0.0000 + 0.0000i 0.3536 - 0.3536i 0.0000 + 0.0000i
0.3536 + 0.3536i 0.0000 + 0.0000i -0.3536 - 0.3536i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.3536 + 0.3536i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.3536 + 0.3536i 0.0000 + 0.0000i
-0.3536 + 0.3536i 0.0000 + 0.0000i 0.3536 - 0.3536i 0.0000 + 0.0000i
-0.3536 + 0.3536i 0.0000 + 0.0000i 0.3536 - 0.3536i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.3536 + 0.3536i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i -0.3536 + 0.3536i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i -0.3536 + 0.3536i 0.0000 + 0.0000i
⋮
Generate PUSCH PT-RS Symbols and Indices
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
carrier
— Carrier configuration parameters
nrCarrierConfig
object
Carrier configuration parameters for a specific OFDM numerology, specified as an nrCarrierConfig
object. This function uses only these properties of the nrCarrierConfig
object.
pusch
— PUSCH configuration parameters
nrPUSCHConfig
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)
datatype
— Data type of generated PT-RS symbols
'double'
(default) | 'single'
Data type for the generated PT-RS symbols, specified as 'double' or 'single'.
Data Types: char
| string
Output Arguments
sym
— PT-RS symbols
complex matrix
PT-RS symbols, returned as a complex matrix. The number of columns depends on the
TransmissionScheme
and TransformPrecoding
properties of nrPUSCHConfig
object.
The number of columns in sym
is returned as one of 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.
Data Types: double
| single
Complex Number Support: Yes
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™.
Usage notes and limitations:
The
datatype
input argument must be compile-time constant. For example,
when specifying 'single'
as the output data type, include
{coder.Constant('OutputDataType'),coder.Constant('single')}
in the
-args
value of the codegen
function. For more
information, see the coder.Constant
(MATLAB Coder) class.
Version History
Introduced in R2020aR2024a: Release 18 support for eight antenna ports, up to eight layers, and two codewords
The NumLayers
, NumAntennaPorts
, TPMI
, and CodebookType
object properties of the pusch
input add support to eight antenna ports, up to eight layers, and two codewords in PUSCH
transmissions.
R2023b: Configure intracell guard bands
Use the IntraCellGuardBands
object property of the carrier
input
to specify intracell guard bands.
R2023b: Support for release 16 interlacing for operation in unlicensed spectrum (NR-U)
Use the Interlacing
, RBSetIndex
, and InterlaceIndex
properties of the pusch
input
argument to configure interlaced PUSCH transmissions.
See Also
Functions
Objects
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)