PHICH precoding


  • out = ltePHICHPrecode(in,cp,ngroup)
  • out = ltePHICHPrecode(enb,ngroup,in)



out = ltePHICHPrecode(in,cp,ngroup) precodes the N-by-NU matrix of layers, in, onto P=NU antennas, given cyclic prefix length, cp, and PHICH group, ngroup. It performs PHICH precoding according to TS 36.211, Section 6.9.2 [1]. This function returns an M-by-P matrix, where P is the number of transmission antennas and M is the number of symbols per antenna.

out = ltePHICHPrecode(enb,ngroup,in) precodes the N-by-NU matrix of layers, in, onto P=NU antennas for PHICH group, ngroup, using the cell-wide settings structure, enb.


collapse all

Precode PHICH symbols

This example shows precoding of an arbitrary set of PHICH symbols for reference measurement channel (RMC) R.11, PHICH group 1.

Initialize a cell-wide parameter configuration structure, enb, for RMC R.11

rc = 'R.11';
enb = lteRMCDL(rc);
nLayers = enb.PDSCH.NLayers;

Generate an arbitrary set of input symbols as the PHICH symbols

re = randi([0,1], 40, nLayers);
im = randi([0,1], 40, nLayers);
symbols = complex(re, im);

Precode the PHICH symbols using normal cyclic prefix (set in enb.CyclicPrefix as per R.11), and PHICH group 1

nGroup = 1;
precodedSym = ltePHICHPrecode(symbols ,enb.CyclicPrefix, nGroup);

Have a peek at the first 5 precoded symbols of the output, columns represent the number of transmit antennas, for this example there are two transmit antennas

precodedSym(1:5, :)
ans =

   0.7071 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.7071 + 0.0000i
   0.7071 + 0.7071i   0.0000 + 0.7071i
   0.0000 + 0.7071i   0.7071 - 0.7071i
   0.0000 + 0.7071i  -0.7071 + 0.0000i

Input Arguments

collapse all

in — PHICH input symbolscomplex-valued numeric matrix

PHICH input symbols, specified as a complex-valued numeric matrix. in is a matrix of N-by-NU layers.

Data Types: double
Complex Number Support: Yes

cp — Cyclic prefix length'Normal' | 'Extended'

Cyclic prefix length, specified as a string.

Data Types: char

ngroup — PHICH grouppositive scalar integer

PHICH group number, specified as a positive scalar integer of 1 or more.

Data Types: double

enb — Cell-wide settingsscalar structure

Cell-wide settings, specified as a scalar structure. enb can contain the following field.

Parameter FieldRequired or OptionalValuesDescription

'Normal' (default), 'Extended'

Cyclic prefix length

Data Types: struct

Output Arguments

collapse all

out — Precoded outputnumeric matrix

Precoded output, returned as a numeric matrix of size M-by-P. M is the number of symbols per antenna and P is the number of transmission antennas.

Data Types: double
Complex Number Support: Yes


[1] 3GPP TS 36.211. "Physical Channels and Modulation." 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL:

Introduced in R2014a

Was this topic helpful?