Main Content


Recover transform deprecoded symbols



tdpSym = nrTransformDeprecode(modSym,mrb) recovers transform deprecoded symbols for modulation symbols modSym, corresponding to the inverse operation of transform precoding from TS 38.211 Section and [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 deprecoded separately.

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

  • After MIMO deprecoding in the PUSCH with single-layer transmission.

  • Before symbol demodulation in the PUCCH format 3 transmission.

  • Before block-wise despreading in the PUCCH format 4 transmission.


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);

Recover the corresponding transform deprecoded symbols.

tdpSym = nrTransformDeprecode(tpSym,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 nrTransformDeprecode 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 deprecoded 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 deprecoded symbols, returned as a complex matrix. tdpSym inherits the dimensionality of the input modSym.

Data Types: double
Complex Number Support: Yes


[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


Introduced in R2019a