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 [[space-division multiple access|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.<ref name=gesbert>D. Gesbert, M. Kountouris, R.W. Heath Jr., C.-B. Chae, and T. Sälzer, [https://dx.doi.org/10.1109/MSP.2007.904815 Shifting the MIMO Paradigm], IEEE Signal Processing Magazine, vol. 24, no. 5, pp. 36-46, 2007.</ref> 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.<ref name=fnt2013>E. Björnson and E. Jorswieck, [http://kth.diva-portal.org/smash/get/diva2:608533/FULLTEXT01 Optimal Resource Allocation in Coordinated Multi-Cell Systems], Foundations and Trends in Communications and Information Theory, vol. 9, no. 2-3, pp. 113-381, 2013.</ref>
==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 <math>s</math>,
and it will pass through the channel <math>h</math>,
and add Gaussian noise <math>n</math>.
The received signal at the receiver front-end will be <math>r = sh + n</math>;
The receiver will have to know the information about <math>h</math> and <math>n</math>. It will suppress the effect of <math>n</math> by increasing SNR, but what about <math>h</math>? It needs information about the channel, <math>h</math>, 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 <math>h_{\text{est}}</math>
and for a system with precoder the information will be coded: <math>{s \over h_{\text{est}}}</math>. The received signal will be <math>r = \left(\frac{h}{h_{\text{est}}}\right) s + n</math>.
If your prediction is perfect, <math>h_{\text{est}} = h</math> and <math>r = s + n</math> 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.<ref>{{Cite web|url=http://www.edaboard.com/thread130479.html|title = What exactly is precoding and what does it do?}}</ref>
==Precoding for Point-to-Point MIMO Systems ==
|