es optimization of the phases according to the frequency over a large band. Nonetheless, digital beamforming may not always be ideally suited for practical implemen- tations of 5G applications. The very high complexity and requirements regarding the hard- ware may significantly increase cost, energy consumption, and complicate integration in mobile devices. Digital beamforming is better suited for use in base stations, since perfor- mance outweighs mobility in this case. Digital beamforming can accommodate multi-stream transmission and serve multiple users simultaneously, which is a key driver of the technol- ogy [56]. Multiple antennas at the transmitter and receiver can be used to achieve array and diversity gain instead of capacity gain. In this case, the same symbol weighted by a complex-valued scale factor is sent from each transmit antenna, SO that the input covariance matrix has unit rank. This scheme is referred to as beamforming. It must be noted that there are two con- ceptually and practically different classes of beamforming: (1) direction-of-arrival beam- forming (i.e., adjustment of transmit or receive antenna directivity) and (2) eigen- beamforming (i.e., a mathematical approach to maximize signal power at the receive antenna based on certain criterion). In this section, we only consider eigen-beamforming schemes. A classic eigen-beamforming scheme usually performs linear, single-layer, complex- valued weighting on the transmit symbols such that the same signal is transmitted from each transmit antenna using appropriate weighting factors. In this scheme, the objective is to maximize the signal power at the receiver output. When the receiver has multiple antennas, the single-layer beamforming cannot simultaneously maximize the signal power at the receive antennas; hence, precoding is used for multi-layer beamforming in order to maximize the throughput of a multi-antenna system. Precoding is a generalized beam- forming scheme to support multi-layer transmission in a MIMO system. Using precoding, mult