Documentation

lteULPrecode

SC-FDMA precoding

Syntax

Description

example

out = lteULPrecode(in,nrb) performs SC-FDMA precoding of the complex modulation symbols in for PUSCH configuration with a bandwidth of nrb resource blocks. in is a MSymb-by-NLayers matrix of values and out has the same dimensions.

Examples

collapse all

Perform SC-FDMA Precoding on Complex Modulation Symbols

UL precoding is a step in the PUSCH processing chain. The chain includes scrambling, symbol mapping, UL precoding, RE mapping, and SC-FDMA modulation.

Create a UE-specific configuration structure, get PUSCH indices, and generate a bit stream sized according to configuration structure.

ue = lteRMCUL('A3-2');
[puschInd, info] = ltePUSCHIndices(ue,ue.PUSCH);
ueDim = lteULResourceGridSize(ue);
bits = randi([0,1],info.G,ue.PUSCH.NLayers);

Perform scrambling, symbol modulation, and UL precoding.

scrBits = lteULScramble(ue,bits);
symbols = lteSymbolModulate(scrBits,ue.PUSCH.Modulation);
precodedSymbols = lteULPrecode(symbols,ue.NULRB);

Generate resource mapping grid, populate the grid with the precoded symbols, and perform SC-FDMA modulation.

grid = lteULResourceGrid(ue);
grid(puschInd) = precodedSymbols;
[timeDomainSig,infoScfdma] = lteSCFDMAModulate(ue,grid);

Input Arguments

collapse all

in — Complex modulation symbolsnumeric matrix

Complex modulation symbols, specified as a numeric matrix of size MSymb-by-NLayers.

Data Types: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64
Complex Number Support: Yes

nrb — Number of resource blocksscalar integer

Number of resource blocks, specified as a scalar integer.

Data Types: double

Output Arguments

collapse all

out — Precoded PUSCH output symbolsnumeric matrix

Precoded PUSCH output symbols, returned as a numeric matrix of size MSymb-by-NLayers.

Data Types: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64
Complex Number Support: Yes

Introduced in R2014a

Was this topic helpful?