out = lteULPrecode(in,nrb)
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);
in— Complex modulation symbols
Complex modulation symbols, specified as an NSym-by-NL matrix of complex symbols. NSym is the number of symbols and NL is the number of layers.
Complex Number Support: Yes
nrb— Number of resource blocks
Number of resource blocks, specified as a nonnegative integer.
out— Precoded PUSCH output symbols
Precoded PUSCH output symbols, returned as an NSym-by-NL matrix of complex symbols. NSym is the number of symbols, and NL is the number of layers.
The dimension and size of the input and output symbol matrices are the same.