Precoding
Precoding is a generalization of beamforming to support multi-stream (or multi-layer) transmission in multi-antenna wireless communications. In conventional single-stream beamforming, the same signal is emitted from each of the transmit antennas with appropriate weighting (phase and gain) such that the signal power is maximized at the receiver output. When the receiver has multiple antennas, single-stream beamforming cannot simultaneously maximize the signal level at all of the receive antennas. In order to maximize the throughput in multiple receive antenna systems, multi-stream transmission is generally required. In point-to-point systems, precoding means that multiple data streams are emitted from the transmit antennas with independent and appropriate weightings such that the link throughput is maximized at the receiver output. In multi-user MIMO, the data streams are intended for different users (known as SDMA) and some measure of the total throughput (e.g., the sum performance or max-min fairness) is maximized. In point-to-point systems, some of the benefits of precoding can be realized without requiring channel state information at the transmitter, while such information is essential to handle the inter-user interference in multi-user systems. Precoding in the downlink of cellular networks, known as network MIMO or coordinated multipoint (CoMP), is a generalized form of multi-user MIMO that can be analyzed by the same mathematical techniques. Precoding in Simple Words 
Precoding is a technique that exploits transmit diversity by weighting the information stream, i.e. the transmitter sends the coded information to the receiver to achieve pre-knowledge of the channel. The receiver is a simple detector, such as a matched filter, and does not have to know the channel state information. This technique will reduce the corrupted effect of the communication channel. For example, you are sending the information ,
and it will pass through the channel ,
and add Gaussian noise . The received signal at the receiver front-end will be ;

The receiver will have to know the information about  and . It will suppress the effect of  by increasing SNR, but what about ? It needs information about the channel, , and this will increase the complexity. The receiver (mobile units) has to be simple for many reasons like cost or size of mobile unit. So, the transmitter (the base station) will do the hard work and predict the channel. Let us call the predicted channel 
and for a system with precoder the information will be coded: . The received signal will be . If your prediction is perfect,  and  and it turns out to be the detection problem in Gaussian channels which is simple. To prevent a potential misunderstanding here, precoding does not cancel out the impact of the channel, but it aligns the vector containing the transmit symbols (i.e. transmit vector) with the eigenvector(s) of the channel. In simple terms, it transforms the transmit symbols' vector in such a way that the vector reaches the receiver in the strongest form that is possible in the given channel. Why do they call it "coding"? It is a preprocessing technique that performs transmit diversity and it is similar to equalization, but the main difference is that you have to optimize the precoder with a decoder. Channel equalization aims to minimize channel errors, but the precoder aims to minimize the error in the receiver output. Precoding for Point-to-Point MIMO Systems 
In point-to-point multiple-input multiple-output (MIMO) systems, a transmitter equipped with multiple antennas communicates with a receiver that has multiple antennas. Most classic precoding results assume narrowband, slowly fading channels, meaning that the channel for a certain period of time can be described by a single channel matrix which does not change faster. In practice, such channels can be achieved, for example, through OFDM. The precoding strategy that maximizes the throughput, called channel capacity, depends on the channel state information available in the system. Statistical channel state information
If the receiver knows the channel matrix and the transmitter has statistical information, eigenbeamforming is known to achieve the MIMO channel capacity. In this approach, the transmitter emits multiple streams in eigendirections of the channel covariance matrix. Full channel state information
If the channel matrix is completely known, singular value decomposition (SVD) precoding is known to achieve the MIMO channel capacity. In this approach, the channel matrix is diagonalized by taking an SVD and removing the two unitary matrices through pre- and post-multiplication at the transmitter and receiver, respectively. Then, one data stream per singular value can be transmitted (with appropriate power loading) without creating any interference whatsoever. Precoding for Multi-user MIMO Systems

In multi-user MIMO, a multi-antenna transmitter communicates simultaneously with multiple receivers (each having one or multiple antennas). This is known as space-division multiple access (SDMA). From an implementation perspective, precoding algorithms for SDMA systems can be sub-divided into linear and nonlinear precoding types. The capacity achieving algorithms are nonlinear, but linear precoding approaches usually achieve reasonable performance with much lower complexity. Linear precoding strategies include maximum ratio transmission (MRT), zero-forcing (ZF) precoding, and transmit Wiener precoding. There are also precoding strategies tailored for low-rate feedback of channel state information, for example random beamforming. Nonlinear precoding is designed based on the concept of dirty paper coding (DPC), which shows that any known interference at the transmitter can be subtracted without the penalty of radio resources if the optimal precoding scheme can be applied on the transmit signal. While performance maximization has a clear interpretation in point-to-point MIMO, a multi-user system cannot simultaneously maximize the performance for all users. This can be viewed as a multi-objective optimization problem where each objective corresponds to maximization of the capacity of one of the users. The usual way to simplify this problem is to select a system utility function; for example, the weighted sum capacity where the weights correspond to the system's subjective user priorities. Furthermore, there might be more users than data streams, requiring a scheduling algorithm to decide which users to serve at a given time instant. Linear precoding with full channel state information

This suboptimal approach cannot achieve the weighted sum rate, but it can still maximize the weighted sum performance (or some other metric of achievable rates under linear precoding). The optimal linear precoding does not have any closed-form expression, but it takes the form of a weighted MMSE precoding for single-antenna receivers. The precoding weights for a given user are selected to maximize a ratio between the signal gain at this user and the interference generated at other users (with some weights) plus noise. Thus, precoding can be interpreted as finding the optimal balance between achieving strong signal gain and limiting inter-user interference. Finding the optimal weighted MMSE precoding is difficult, leading to approximate approaches where the weights are selected heuristically. A common approach is to concentrate on either the numerator or the denominator of the mentioned ratio; that is, maximum ratio transmission (MRT) and zero-forcing (ZF) precoding. MRT only maximizes the signal gain at the intended user. MRT is close-to-optimal in noise-limited systems, where the inter-user interference is negligible compared to the noise. ZF precoding aims at nulling the inter-user interference, at the expense of losing some signal gain. ZF precoding can achieve a performance close to the sum capacity when the number of users is large or the system is interference-limited (i.e., the noise is weak compared to the interference). A balance between MRT and ZF is obtained by the so-called regularized zero-forcing (also known as signal-to-leakage-and-interference ratio (SLNR) beamforming and transmit Wiener filtering) All of these heuristic approaches can also be applied to receivers that have multiple antennas. Also for multiuser MIMO system setup, another approach has been used to reformulate the weighted sum rate optimization problem to a weighted sum MSE problem with additional optimization MSE weights for each symbol in. However, still this work is not able to solve this problem optimally (i.e., its solution is suboptimal). On the other hand, duality approach also considered in  and  to get sub-optimal solution for weighted sum rate optimization. Note that the optimal linear precoding can be computed using monotonic optimization algorithms, but the computational complexity scales exponentially fast with the number of users. These algorithms are therefore only useful for benchmarking in small systems. Linear precoding with limited channel state information

In practice, the channel state information is limited at the transmitter due to estimation errors and quantization. Inaccurate channel knowledge may result in significant loss of system throughput, as the interference between the multiplexed streams cannot be completely controlled. In closed-loop systems, the feedback capabilities decide which precoding strategies that are feasible. Each receiver can either feedback a quantized version of its complete channel knowledge or focus on certain critical performance indicators (e.g., the channel gain). If the complete channel knowledge is fed back with good accuracy, then one can use strategies designed for having full channel knowledge with minor performance degradation. Zero-forcing precoding may even achieve the full multiplexing gain, but only provided that the accuracy of the channel feedback increases linearly with signal-to-noise ratio (in dB). Quantization and feedback of channel state information is based on vector quantization, and codebooks based on Grassmannian line packing have shown good performance. Other precoding strategies have been developed for the case with very low channel feedback rates. Random beamforming (or opportunistic beamforming) was proposed as a simple way of achieving good performance that scales like the sum capacity when the number of receivers is large. In this suboptimal strategy, a set of beamforming directions are selected randomly and users feed back a few bits to tell the transmitter which beam gives the best performance and what rate they can support using it. When the number of users is large, it is likely that each random beamforming weight will provide good performance for some user. In spatially correlated environments, the long-term channel statistics can be combined with low-rate feedback to perform multi-user precoding. As spatially correlated statistics contain much directional information, it is only necessary for users to feed back their current channel gain to achieve reasonable channel knowledge. As the beamforming weights are selected from the statistics, and not randomly, this approach outperforms random beamforming under strong spatial correlation. In multiuser MIMO systems where the number of users are higher than the number of transmit antennas, a multiuser diversity can be achieved by performing user scheduling before applying zero-forcing beamforming. Multiuser diversity is a form of selection diversity among users, the base station can schedule its transmission to those users with favorable channel fading conditions to improve the system throughput. In order to achieve multiuser diversity and apply zero-forcing precoding, the CSI of all users are required at the base station. However, the amount of overall feedback information increases with the number of users. Therefore, it is important to perform a user selection at the receiver to determine the users which feed back their quantized CSI to the transmitter based on a pre-defined threshold. DPC or DPC-like nonlinear precoding
Dirty paper coding is a coding technique that pre-cancels known interference without power penalty. Only the transmitter needs to know this interference, but full channel state information is required everywhere to achieve the weighted sum capacity. This category includes Costa precoding, Tomlinson-Harashima precoding and the vector perturbation technique. Mathematical Description

Description of Point-to-Point MIMO

The standard narrowband, slowly fading channel model for point-to-point (single-user) MIMO communication is described in the page on MIMO communication. Description of Multi-user MIMO
Consider a downlink multi-user MIMO system where a base station with  transmit antennas and  single-antenna users. The channel to user  is described by the  vector  of channel coefficients and its th element describes the channel response between the th transmit antenna and the receive antenna. The input-output relationship can be described as

where  is the  transmitted vector signal,  is the received signal, and  is the zero-mean unit-variance noise. Under linear precoding, the transmitted vector signal is

where  is the (normalized) data symbol and  is the  linear precoding vector. The signal-to-interference-and-noise ratio (SINR) at user  becomes

where  is the noise variance for channel to user  and the corresponding achievable information rate is  bits per channel use. The transmission is limited by power constraints. This can, for example, be a total power constraint  where  is the power limit. A common performance metric in multi-user systems is the weighted sum rate

for some positive weights  that represent the user priority. The weighted sum rate is maximized by weighted MMSE precoding that selects

for some positive coefficients  (related to the user weights) that satisfy  and  is the optimal power allocation. The suboptimal MRT approach removes the channel inversion and only selects 

while the suboptimal ZF precoding makes sure that  for all i ≠ k and thus the interference can be removed in the SINR expression:

Uplink-downlink duality

For comparison purposes, it is instructive to compare the downlink results with the corresponding uplink MIMO channel where the same single-antenna users transmit to the same base station, having  receive antennas. The input-output relationship can be described as

where  is the transmitted symbol for user ,  is the transmit power for this symbol,  and  are the  vector of received signals and noise respectively,  is the  vector of channel coefficients. If the base station uses linear receive filters to combine the received signals on the  antennas, the SINR for the data stream from user  becomes

where  is the unit-norm receive filter for this user. Compared with the downlink case, the only difference in the SINR expressions is that the indices are switched in the interference term. Remarkably, the optimal receive filters are the same as the weighted MMSE precoding vectors, up to a scaling factor:

Observe that the coefficients  that was used in the weighted MMSE precoding are not exactly the optimal power coefficients in the uplink (that maximize the weighted sum rate) except under certain conditions. This important relationship between downlink precoding and uplink receive filtering is known as the uplink-downlink duality. As the downlink precoding problem usually is more difficult to solve, it often useful to first solve the corresponding uplink problem. Limited feedback precoding 
The precoding strategies described above was based on having perfect channel state information at the transmitter. However, in real systems, receivers can only feed back quantized information that is described by a limited number of bits. If the same precoding strategies are applied, but now based on inaccurate channel information, additional interference appears. This is an example on limited feedback precoding. The received signal in multi-user MIMO with limited feedback precoding is mathematically described as

In this case, the beamforming vectors are distorted as , where  is the optimal vector and  is the error vector caused by inaccurate channel state information. The received signal can be rewritten as

where  is the additional interference at user  according to the limited feedback precoding. To reduce this interference, higher accuracy in the channel information feedback is required, which in turn reduces the throughput in the uplink. See also
802.11n
Channel state information
Cooperative diversity
Space–time code
Space–time trellis code
Spatial multiplexing
Zero-forcing precoding

References

Radio resource management