MMSE-based joint uplink equalization and combining


  • [out,csi] = lteEqualizeULMIMO(ue,chs,in,hest,noiseest)



[out,csi] = lteEqualizeULMIMO(ue,chs,in,hest,noiseest) performs joint equalization and combining of the received PUSCH symbols in in, given UE-specific settings structure, ue, PUSCH configuration structure, chs, channel estimate, hest and noise power estimate, noiseest. MMSE equalization is performed on the product of the channel matrix and precoding matrices, thus performing MMSE equalization between transmit and receive layers and returning the result in out.


collapse all

Equalize and Deprecode PUSCH Symbols

Extract, equalize, and deprecode PUSCH symbols from an RMC A3-2 grid.

Generate a resource grid using multiple antennas to transmit a single PUSCH codeword.

ue = lteRMCUL('A3-2');
ue.TotSubframes = 1;
ue.NTxAnts = 2;
ue.PUSCH.NLayers = 2;
[~,txGrid] = lteRMCULTool(ue,[1;0;0;1]);

Extract the PUSCH symbols from this transmit grid.

[ind,indInfo] = ltePUSCHIndices(ue,ue.PUSCH);
puschSym = txGrid(ind);

Create an ideal, or identity, channel estimate and an ideal, or zero, noise estimate.

hest = permute(repmat(eye(ue.NTxAnts),[1,1,indInfo.Gd]),[3,1,2]);
nest = 0.0;

Equalize and deprecode the PUSCH symbols, using the channel and noise estimates.

[out,csi] = lteEqualizeULMIMO(ue,ue.PUSCH,puschSym,hest,nest);
NPRB = size(ue.PUSCH.PRBSet,1);
deprecoded = lteULDeprecode(out,NPRB);

Input Arguments

collapse all

ue — UE-specific settingsstructure

UE-specific settings, specified as a structure that can contain the following fields.

Parameter FieldRequired or OptionalValuesDescription

1 (default), 2, 4

Number of transmission antennas.

Data Types: struct

chs — PUSCH configuration structurestructure

PUSCH configuration structure, specified as a structure that can contain the following fields. The PMI parameter field is only required if ue.NTxAnts is set to 2 or 4.

Parameter FieldRequired or OptionalValuesDescription

1 (default), 2, 3, 4

Number of transmission layers.

The following parameter is required only when ue.NTxAnts is set to 2 or 4.

Nonnegative scalar integer from 0 (default) to 23

Precoder matrix indication. This PMI is to be used during precoding of the DRS reference symbols. For more information, see lteULPMIInfo.

Data Types: struct

in — Received PUSCH input symbolsnumeric matrix

Received PUSCH input symbols, specified as a numeric matrix of size M-by-NRxAnts, where M is the number of received symbols for each of the NRxAnts receive antennas.

Data Types: double
Complex Number Support: Yes

hest — Channel estimate3-D numeric array

Channel estimate, specified as a 3-D numeric array of size M-by-NRxAnts-by-NTxAnts, where M is the number of received symbols in in, NRxAnts is the number of receive antennas, and NTxAnts is the number of transmit antenna ports, given by ue.NTxAnts.

Data Types: double

noiseest — Noise power estimatenumeric scalar

Noise power estimate as power spectral density per RE on rxgrid, specified as a numeric scalar. Such an estimate is provided by the lteULChannelEstimate function.

Data Types: double

Output Arguments

collapse all

out — Equalized output symbolscomplex-valued numeric matrix

Equalized output symbols, returned as a complex-valued numeric matrix of size M-by-NU, where M is the number of received symbols for each receive antenna and NU is the number of transmit layers.

Data Types: double
Complex Number Support: Yes

csi — Soft channel state informationnumeric matrix

Soft channel state information, returned as a numeric matrix of the same size as out, M-by-NU. This output provides an estimate, via MMSE, of the received gain for each received layer.

Data Types: double

Introduced in R2013b

Was this topic helpful?