## 1 Introduction  
Multiple-input multiple-output (MIMO) systems have been widely used with beamforming techniques to enhance spectral efficiency (SE). The main idea of multi-antenna beamforming is to concentrate the radiation pattern energy toward a desired angular direction where the target user is located. Therefore, the signal-to-noise ratio (SNR) at the receiver side is increased while interference with near users is avoided. The use of multiple antennas in a massive MIMO (mMIMO) approach provides a higher array gain and a narrower beam. As the number of transmit antennas grows, the beam becomes more directive, improving both the SE and energy efficiency (EE). MIMO systems provide diversity which is essential to improve link reliability and robustness against fading channels. Furthermore, spatial multiplexing is also enabled with digital beamforming, commonly known as precoding. This arises as a key solution to achieve the expected values of data rate in 5G and beyond 5G (B5G) networks. Data symbols could be spatially multiplexed through multiple parallel layers using the same time and frequency resources and thus improving the SE. This is achieved by properly designing the precoding and combining matrices at the transmitter and receiver side, respectively [1, 2, 3, 4].  
Several digital precoding techniques have been developed to obtain a multi-layer transmission to a single-user MIMO (SU-MIMO) or multi-user MIMO (MU-MIMO). The most commonly used linear precoding techniques reported in the scientific literature are singular value decomposition (SVD), zero forcing (ZF), maximum ratio transmission (MRT), maximum ratio combining (MRC), and minimum mean squared error (MMSE) [3; 5; 6; 7]. In [5], the capacity of SU-MIMO Gaussian channels is studied. This work proves that SVD is the optimal precoding scheme for SU-MIMO systems. Then, authors in [6] explain the paradigm shift of MIMO systems when a multi-user scenario is considered. The advantages and challenges of different precoding techniques such as ZF and MMSE for MU-MIMO systems are described. In [7], the concept of massive MIMO is introduced to increase the array gain. The conjugate beamforming for downlink and matched filter decoding for uplink have been illustrated. In [3], a summary of the main precoding techniques for SU-MIMO and MU-MIMO is provided. Recently, the use of multi-antenna beamforming techniques in combination with reconfigurable intelligent surfaces (RIS) has been investigated to improve the SE and energy-efficiency of the network [8; 9; 10; 11]. Furthermore, novel beamforming methods have been proposed for satellite systems [12; 13].  
The above techniques have been proposed for single-carrier and multi-carrier waveforms such as orthogonal frequency division multiplexing (OFDM). However, these methods are based on the perfect knowledge of all the coefficients of the channel state information (CSI) matrix at both the transmitter and receiver sides. This is unfeasible in real systems due to the large signal overhead to communicate the estimated CSI matrix between the transmitter and receiver. Therefore, several efforts have been made to obtain solutions that achieve the best trade-off between performance and signal overhead. With this aim, codebook-based strategies are implemented to select from a set of predefined precoding matrices the one that achieves the best system performance. To reduce feedback overhead, the selection of the precoder at the transmitter side is only based on a quantified version of the estimated CSI matrix by the receiver. This is a well-studied topic in the state of the art [14; 15; 16; 17; 18; 19; 20; 21] and it has already been applied in the standardization of the communication systems [2; 3].