Main Content

nrLowPAPRS

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

Description

example

seq = nrLowPAPRS(u,v,alpha,m) generates type 1 low peak to average power ratio (low-PAPR) sequences, seq of length m, as defined in TS 38.211, Section 5.2.2 [1]. u specifies the sequence group numbers. v specifies the base sequence numbers (0 or 1) within the sequence group. The function applies phase rotations to the base sequence corresponding to the cyclic shifts specified by alpha. When you specify u, v, and alpha input arguments in vector form, the function generates multiple low-PAPR type 1 sequences.

Type 1 low-PAPR sequences are used for the generation of the demodulation reference signal (DM-RS) for the physical uplink shared channel (PUSCH), sounding reference signals (SRS), physical uplink control channel (PUCCH) formats 0 and 1 modulation symbols, and DM-RS for the PUCCH format 1, 3 and 4.

example

seq = nrLowPAPRS(u,cinit,m) generates type 2 low-PAPR sequences, seq, as defined in TS 38.211, Section 5.2.3 [1]. cinit specifies the sequence initializations. When you specify u and cinit input arguments in vector form, the function generates multiple type 2 low-PAPR sequences.

Type 2 low-PAPR sequences are used for the generation of the DM-RS for the PUSCH and PUCCH formats 3 and 4, when configured with Release 16 DM-RS transform precoding.

example

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

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
      ⋮

Generate a type 2 low-PAPR sequence of length 36 for sequence group number 11. Specify the sequence initializations as [18, 209].

u = 11;
cinit = [18, 209];
m = 36;
seq = nrLowPAPRS(u,cinit,m)
seq = 36×2 complex

  -0.4714 - 0.4714i   0.0000 + 0.9428i
  -1.8745 + 0.9602i   0.0489 + 0.1049i
   1.4169 - 1.1518i   0.8459 - 0.1127i
  -0.2357 - 0.2357i   1.2016 - 0.0231i
  -1.0127 - 1.0239i  -0.1278 - 0.0469i
  -0.6247 + 0.2351i  -0.4183 + 0.2929i
  -0.8797 - 0.0632i  -1.0291 + 0.9659i
  -0.6351 + 0.2740i   0.9863 - 0.7222i
  -0.7476 + 0.4365i   0.2328 + 0.5454i
   0.0000 + 0.0000i  -0.4714 - 0.4714i
      ⋮

Input Arguments

collapse all

Sequence group numbers, specified as a vector of integers from 0 to 29. When the sequence length m is less than 30 for type 2 low-PAPR sequence, the u argument is used to get the base sequence.

Data Types: double

Base sequence numbers within a sequence group, specified as a vector of binary values 0 and 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 numbers 0 and 1 apply.

Data Types: double

Cyclic shifts, specified as a vector of nonnegative values. The function applies different phase rotations to the base sequence corresponding to the specified cyclic shifts.

Data Types: double

Pseudorandom binary sequence (PRBS) initializations, specified as a vector of nonnegative integers. When the sequence length m is greater than or equal to 30, the cinit argument is used to get the base sequence for type 2 low-PAPR sequence.

Data Types: double

Low-PAPR sequence length, specified as a nonnegative integer. When the value of m is less than 30, the sequence length must be 6, 12, 18, or 24. 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 one of these values.

  • M-by-NumAlpha-by-NumU-by-NumV matrix — The function returns this type of value for type 1 low-PAPR sequence. M is the sequence length length provided by input m. NumAlpha is the number of cyclic shifts provided in the input alpha. NumU is the number of sequence groups provided in the input u. NumV is the number of base sequence numbers within the sequence group provided in the input v.

  • M-by-NumCinit-by-NumU matrix — The function returns this type of value for type 2 low-PAPR sequence. NumCinit is the number of PRBS initializations provided in the input cinit.

When input m is 0, the output argument seq is an empty vector.

Data Types: single | double
Complex Number Support: Yes

References

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

Extended Capabilities

Introduced in R2019a