Main Content

nrTransformPrecode

Generate transform precoded symbols

Description

example

tpSym = nrTransformPrecode(modSym,mrb) generates transform precoded symbols for modulation symbols modSym, as defined in TS 38.211 Section 6.3.1.4 and 6.3.2.6.4 [1]. mrb is the number of resource blocks allocated for the physical uplink shared channel (PUSCH), physical uplink control channel (PUCCH) format 3, or PUCCH format 4 transmission. mrb determines the length of the subblocks in modSym which are transform precoded separately.

In the NR uplink, transform precoding is used together with CP-OFDM modulation to create an SC-FDMA (DFT-s-OFDM) waveform. Transform precoding applies to only these transmissions:

  • Before MIMO precoding in the PUSCH with single-layer transmission.

  • After symbol modulation in the PUCCH format 3 transmission.

  • After block-wise spreading in the PUCCH format 4 transmission.

Examples

collapse all

Generate a random sequence of binary values corresponding to a PUSCH codeword of 960 bits.

cw = randi([0 1],960,1);

Perform PUSCH scrambling initialized with the specified physical layer cell identity number and RNTI.

ncellid = 42;
rnti = 101;
scrambled = nrPUSCHScramble(cw,ncellid,rnti);

Modulate the scrambled PUSCH codeword by using modulation scheme 16-QAM.

modulation = '16QAM';
modSym = nrSymbolModulate(scrambled,modulation);

Perform layer mapping using a single transmission layer.

layeredSym = nrLayerMap(modSym,1);

Generate transform precoded symbols by using an allocated PUSCH bandwidth of 2 resource blocks.

tpSym = nrTransformPrecode(layeredSym,2);

Input Arguments

collapse all

Modulation symbols, specified as a complex matrix. The number of rows in modSym must be a multiple of mrb×12. Typically, modSym is specified as a column vector, corresponding to single-layer transmission. If modSym is a matrix, the nrTransformPrecode function processes each column separately and returns a matrix.

Data Types: double
Complex Number Support: Yes

Number of resource blocks allocated for the PUSCH, PUCCH format 3, or PUCCH format 4 transmission, specified as a positive integer. mrb determines the length of the subblocks in modSym which are transform precoded separately. Preferred mrb values are of the form 2α2 × 3α3 × 5α5, where α2, α3, and α5 are nonnegative integers, as specified in the standard.

Data Types: double

Output Arguments

collapse all

Transform precoded symbols, returned as a complex matrix. tpSym inherits the dimensionality of the input modSym.

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

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

See Also

Functions

Introduced in R2019a