nrLowPAPRS

Generate low peak-to-average power ratio (low-PAPR) sequence

Description

example

seq = nrLowPAPRS(u,v,alpha,m) generates low-PAPR sequence seq of length m, as defined in TS 38.211, Section 5.2.2 [1]. u specifies one of the 30 sequence groups. v specifies the base sequence number within the sequence group, as 0 or 1. The function applies phase rotation to the base sequence corresponding to the cyclic shift specified by alpha. When alpha has more than one value, the function applies different phase rotations to the base sequence and returns several low-PAPR sequences in a matrix format.

Low-PAPR sequences are used for the generation of uplink (UL) demodulation reference signals (DM-RS), sounding reference signals (SRS), and physical uplink control channel (PUCCH) format 0 and 1 modulation symbols.

example

seq = nrLowPAPRS(___,'OutputDataType',datatype) specifies the data type of the low-PAPR sequence in addition to the input arguments in the previous syntax.

Examples

collapse all

Generate a low-PAPR sequence of length 36 for sequence group number 9, base sequence number 0, and the specified cyclic shift.

u = 9;
v = 0;
alpha = 2*pi;
m = 36;
seq = nrLowPAPRS(u,v,alpha,m)
seq = 36×1 complex

   1.0000 + 0.0000i
  -0.4404 - 0.8978i
   0.9795 + 0.2013i
   0.9190 + 0.3944i
   0.1514 - 0.9885i
   0.5290 + 0.8486i
   0.1514 + 0.9885i
   0.9795 - 0.2013i
  -0.7588 + 0.6514i
  -0.9949 + 0.1012i
      ⋮

Generate low-PAPR sequences of single data type and length 36 for sequence group number 9, base sequence number 0, and the specified cyclic shifts. Specifying more than one cyclic shifts as a vector results in the generation of multiple low-PAPR sequences.

u = 9;
v = 0;
alpha = [pi/2,pi];
m = 36;
seq = nrLowPAPRS(u,v,alpha,m,'OutputDataType','single')
seq = 36x2 single matrix

   1.0000 + 0.0000i   1.0000 + 0.0000i
   0.8978 - 0.4404i   0.4404 + 0.8978i
  -0.9795 - 0.2013i   0.9795 + 0.2013i
   0.3944 - 0.9190i  -0.9190 - 0.3944i
   0.1514 - 0.9885i   0.1514 - 0.9885i
  -0.8486 + 0.5290i  -0.5290 - 0.8486i
  -0.1514 - 0.9885i   0.1514 + 0.9885i
  -0.2013 - 0.9795i  -0.9795 + 0.2013i
  -0.7588 + 0.6514i  -0.7588 + 0.6514i
  -0.1012 - 0.9949i   0.9949 - 0.1012i
      ⋮

Input Arguments

collapse all

Sequence group number, specified as an integer from 0 to 29.

Data Types: double

Base sequence number within a sequence group, specified as 0 or 1. When the low-PAPR sequence length m is less than 72, the sequence group has only one base sequence. In this case, only base sequence number 0 applies. When the low-PAPR sequence length m is greater than or equal to 72, the sequence group has two base sequences. In this case, both base sequence number 0 and 1 apply.

Data Types: double

Cyclic shifts, specified as a nonnegative scalar or numeric vector of nonnegative values. A scalar specifies one cyclic shift. A vector of length N specifies N cyclic shifts. The number of cyclic shifts provided in alpha determines the number of low-PAPR sequences returned in seq. The function applies different phase rotations to the base sequence corresponding to the specified cyclic shifts.

Data Types: double

Low-PAPR sequence length, specified as a nonnegative integer. When m is 0, seq is an empty vector.

Data Types: double

Data type of the output symbols, specified as 'double' or 'single'.

Data Types: char | string

Output Arguments

collapse all

Low-PAPR sequence, returned as an m-by-N complex matrix, where N is the number of cyclic shifts provided in the input alpha. When m is 0, seq is an empty vector.

Data Types: single | double
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

See Also

Functions

Introduced in R2019a