What is the Difference Between Beamforming and Precoding?

I’ve got an email with this question last week. There is not one but many possible answers to this question, so I figured that I write a blog post about it.

One answer is that beamforming and precoding are two words for exactly the same thing, namely to use an antenna array to transmit one or multiple spatially directive signals.

Another answer is that beamforming can be divided into two categories: analog and digital beamforming. In the former category, the same signal is fed to each antenna and then analog phase-shifters are used to steer the signal emitted by the array. This is what a phased array would do. In the latter category, different signals are designed for each antenna in the digital domain. This allows for greater flexibility since one can assign different powers and phases to different antennas and also to different parts of the frequency bands (e.g., subcarriers). This makes digital beamforming particularly desirable for spatial multiplexing, where we want to transmit a superposition of signals, each with a separate directivity. It is also beneficial when having a wide bandwidth because with fixed phases the signal will get a different directivity in different parts of the band. The second answer to the question is that precoding is equivalent to digital beamforming. Some people only mean analog beamforming when they say beamforming, while others use the terminology for both categories.

Analog beamforming uses phase-shifters to send the same signal from multiple antennas but with different phases. Digital beamforming designs different signals for each antennas in the digital baseband. Precoding is sometimes said to be equivalent to digital beamforming.

A third answer is that beamforming refers to a single-user transmission with one data stream, such that the transmitted signal consists of one main-lobe and some undesired side-lobes. In contrast, precoding refers to the superposition of multiple beams for spatial multiplexing of several data streams.

A fourth answer is that beamforming refers to the formation of a beam in a particular angular direction, while precoding refers to any type of transmission from an antenna array. This definition essentially limits the use of beamforming to line-of-sight (LoS) communications, because when transmitting to a non-line-of-sight (NLoS) user, the transmitted signal might not have a clear angular directivity. The emitted signal is instead matched to the multipath propagation so that the multipath components that reach the user add constructively.

A fifth answer is that precoding consists of two parts: choosing the directivity (beamforming) and choosing the transmit power (power allocation).

I used to use the word beamforming in its widest meaning (i.e., the first answer), as can be seen in my first book on the topic. However, I have since noticed that some people have a more narrow or specific interpretation of beamforming. Therefore, I nowadays prefer only talking about precoding. In Massive MIMO, I think that precoding is the right word to use since what I advocate is a fully digital implementation, where the phases and powers can be jointly designed to achieve high capacity through spatial multiplexing of many users, in both NLoS and LOS scenarios.

33 thoughts on “What is the Difference Between Beamforming and Precoding?”

    1. Yes, that is what I meant. You are right that it is important to say this explicitly when dealing with multi-antenna communications. I have updated the text. Thank you!

  1. I think “Massive Precoding” would make more sense as “Precoding” is well known already in classical MIMO. By classical MIMO I mean non-massive MIMO.

  2. Maybe a pseudo sixth answer is that precoding can be viewed as beamforming in the eigen direction of the channel rather than in any physical angular direction! However, in the TDD based massive MIMO with fewer resolvable paths (say mmWave) is it possible to set the downlink precoder as the steering matrix containing the angles of arrival estimated in the uplink? In that case, I think, the precoder maximizing the achievable rate and ‘conventional’ beamformer become similar!

    1. You are right, eigenbeamforming is a terminology that is being used even when the eigenvector does not correspond to correspond to a physical direction.

      If there is only a small number of resolvable paths, I think that the optimal precoder will be a linear combination of the steering vectors for the angles of arrivals of these paths. If the angles are all similar, the resulting beam will be almost as the steering vector of one of the angles. If the angles are very different, none of the steering vectors will be a good match.

      1. Just curious if there is a physical description of ‘eigen-direction of the channel’? Assuming an N-by-K complex channel matrix H contains gains and phase shifts per transmit-receive antenna, how the ‘channel direction’ information is embedded in H and what it actually means.

        1. I discourage from talking about eigen-directions of multiuser MIMO channels. It will just lead to confusion. (The terminology is more appropriate for point-to-point MIMO channels.)

  3. With analog beamforming, changing the phase of each antenna will create a specific antenna pattern pointing to a certain direction. I am wondering if the same happens with digital beamforming?

    1. Any analog beamforming can be implemented by digital beamforming, but the opposite is not true.

      With digital beamforming you can create antenna patterns that are not achievable with analog beamforming. It will basically be a superposition of any number of analog beams, resulting in an antenna pattern that might not have a distinct direction. For example, it can be tailored to a user channel to provide a strong signal in a non-line-of-sight situation (with many multipath components in different directions). In addition to that, you can assign different antenna patterns to different parts of the frequency spectrum, while analog beamforming must assign the same phases to the entire frequency band.

  4. I wonder that how can we get different directivity in different parts of the bands when phases of the signals are fixed?
    Please, explain in more detail.

    1. That is not possible and this is one of the key limitations of analog beamforming. If you have a strongly frequency-selective channel (e.g., non-line-of-sight propagation) you need different directivity in different parts of the band, which can be achieved by digital beamforming but not by analog beamforming.

  5. Professor Bjornson – I really enjoy your Youtube videos immensely. Since I’m new to learning about massive MIMO, can you simply tell me the most practical multiplier over the current LTE spectral efficiency with Massive MIMO? I’ve read multipliers up to and beyond 50. But looking for something practical that can be implemented. Also, and equally important, how much more of a mulitiplier does beamforming add to the MIMO mutlplier? I’m looking for X and Y below — SE with mMIMO and beamforming =(1.8 b/s/Hz)X(maximum practical MIMO multiplier below 6 GHz {assume 100 antenna elements}) X (beamforming multiplier). Thank you very much!

  6. Professor Bjornson thank you for this blog. I have a basic question to verify that I understood well. So if we consider ZF in massive MIMO for exemple serving simultaneously 10 users with M = 100 Tx antennas. The ZF beamformer at Tx will send signal corresponding to the different Rx users and also nulls from other antennas? The shaped beam for each user should contain the power in the estimated eigendirection and nulls I suppose from other antennas in the array?

    1. Each channel from the 100 TX antennas to one of the Rx users is represented by a 100-length vector. When transmitting to user 1, you find a beamforming direction (i.e., a vectors) that is orthogonal to the channels of user 2,…,10, but as parallel to the channel of user 1 as is possible under the orthogonality constraint. When you have done this for every user, you take each user’s beamforming vector multiply it with the intended signal of that user and add it all up. As a consequence, every antenna sends a combination of the signals from all the users.

      I’m not sure what you mean with “eigendirections” since this word has many different meanings in the literature, but it is not important here.

      For more details, you can check out my article:

      Emil Björnson, Mats Bengtsson, Björn Ottersten, “Optimal Multiuser Transmit Beamforming: A Difficult Problem with a Simple Solution Structure,” IEEE Signal Processing Magazine, vol. 31, no. 4, pp. 142-148, July 2014.

  7. In LTE digital beamforming, exactly how does the precoding matrix indicator (PMI) from a UE helps eNodeB in which direction to point the beam to that UE. I mean just be multiplying the symbols with precoding weights how beam is formed pointing exactly to the UE. How the angular direction intelligence built in to the PMI and how does the UE knows such angular intelligence for eNodeB to reach it.

    1. This is hard to answer precisely. There are many different transmission modes in LTE and what is standardized is typically what the UE should transmit and receive, while there is some flexibility in what the eNodeB can do.

      However, the typical digital beamforming in LTE consists of a codebook of precoding vectors, which I believe corresponds to different angular directions. The PMI is then used to select the most suitable precoding vector in the codebook. This approach is ok for single-user precoding, but not efficient for multi-user precoding, you need to fine-tune the precoding to reduce interference. In canonical Massive MIMO, this is achieved by sending uplink pilots to estimate the full channels, so that you can do zero-forcing or similar methods.

      1. Choosing a precoding vector from the codebook only guarantees the chosen is best in the codebook, while it may not be optimal among any possible precoding vectors, am I right? In massive MIMO, the eNodeB will find the real optimal precoding for each user? So codebook is not used anymore?

  8. Dear Dr. Björnson,

    First off: many thanks for the clarity with which you explain these issues! If you allow, I have a few questions/double-checks to further enhance my understanding:

    1. You write ‘what I advocate is a fully digital implementation’. Despite the optimality in terms of achievable performacnce, from other sources I learned that pure digital beamforming would be too expensive in terms of required components and also be too power-hungry, which is why hybrid digital/analog solutions are recommended elsewhere. I’d appreciate you comments on this view.

    2. Does such a hybrid solution still suffer from the undesirable characteristic of analog beamforming that you cannot direct beams differently in different parts of the frequency band/carrier? Would the key advantage then be that the hybrid approach supports single-user spatial multiplexing, while pure analog beamforming does not?

    3. Regarding the comment that was made by Dr. Shafin (‘that precoding can be viewed as beamforming in the eigendirection of the channel rather than in any physical angular direction’), just to double-check: in case of a perfect LOS channel, the mentioned eigendirection is (I hope) actually identical to the physical angular direction towards the receiver location, right?

    4. You state ‘precoding refers to the superposition of multiple beams for spatial multiplexing of several data streams’. In my understanding, transmission mode TM6 in LTE uses precoding based on PMI feedback for single-codeword/data stream transmission, so I suppose precoding is then not equivalent to spatial multiplexing, or am I misunderstanding?

    Thanks again, your explanations are much appreciated.



    1. 1. It is often said that a full digital implementation would be too expensive or power-hungry, but that argument (gut-feeling) is misleading since it builds on the assumption that we would use the same hardware components as in contemporary networks. The MAMMOET project (https://mammoet-project.eu) has demonstrated how to design Massive MIMO in an efficient manner. I recommend “Difference 2” in the following paper, which discusses what the actual bottlenecks of digital implementation is: https://arxiv.org/abs/1803.11023

      2. The digital part in hybrid beamforming can be used to get different beams in different parts of the band, as long as the beams are formed as linear combinations of the beams created in the analog domain.

      3. Correct.

      4. The terminology can be confusing since “precoding” and “spatial multiplexing” are terms being used in both single-user and multi-user communications. TM6 uses precoding/beamforming to serve a single user with a single data stream.

  9. Dear Dr. Björnson,

    Thanks for the detailed explanation.
    Regarding the second answer ‘precoding is equivalent to digital beamforming’, I think it’s not accurate in some cases. I would say from standard perspective, precoding describes the mapping between data layers and ‘logical’ antenna port. When the number of ‘logical’ antenna port is smaller than the number of TXRUs (antenna port to TXRU is not 1-to-1 mapping), precoding is not equivalent to digital beamforming. There is another mapping between the ‘logical’ antenna port and the TXRUs. (I am not sure what to call this mapping relationship) What’s your thinking?

    1. I don’t know the detailed standardization language, but I suppose you are right. I would personally call the entire mapping from the data layer to the physical antenna ports as “precoding”, even if one decides to split it up into one “data layer to logical port” mapping and one “logical port to physical antenna port” mapping.

  10. Hi Professor Björnson, I have a question about the analog beamforming. In hybrid digital and analog beamforming systems, the analog beamforming consisted with the Phase-shifter networks can only adjust the phase of signals. Why don’t we put some devices into the analog beamforming to adjust the amplitude of the signals? The function of Phase-shifters is to adjust the phase of the signals. So, is there any device that can adjust the amplitude of the signals and work together with the Phase-shifters in analog beamforming?

    1. I’m quite sure that you could build the system that you describe, but you would need a separate amplifier for each antenna and then the step towards a full digital implementation is small.

  11. Can you explain the difference between 3 types of power constraints:
    1. trace (Q) <= P.
    2. Q <= P (semidefinite matrix inequality, P is diagonal matrix with diagonal elements i_th are power buget for i_th user).
    3. Q_ii <= P_i.
    where P is the total power budget of all users, P_i is the maximum budget for i_th user and Q is the correlation matrix between all users. Q = E[x*x^H]. (x is user signal vector).

    1. I suppose you are asking about how to interpret these types of power constraints?

      1: The total power may not be larger than P, but it can be distributed arbitrarily between the antennas. Note that trace(Q) = \sum_i Q_ii.

      2 and 3: These are essentially the same thing and put a constraint on the maximum power for each individual antenna.

      1. Thanks alot Dr. Emil,
        1. I still wonder in some papers, they said 2 is for independent users (no cooperation, no sharing information) but in 3, they can “cooperate with each other in terms of signaling”?
        2. Moreover, can you explain in more detail mathematically? why in 1 they can share between each other but not in 2, 3?

        1. 1. I’m unsure how exactly 2 differs in interpretation from 3. 2 does indeed allow for cooperation between the users (Q-P can be positive semi-definite even if Q is non-diagonal). I suggest that you contact the authors of those papers to get their explanation.

          2. Constraint 1 means \sum_i Q_ii <= constant so you can assign the power in any way you like between the diagonal elements in Q. In contrast, Constraint 3 means Q_11 <= constant, Q_22 <= constant, ..., so there is a strict upper limit for each of the diagonal values. One cannot "borrow" power from one antenna and give it to another.

  12. Hi,

    Thanks for your comprehensive explanation.

    1- Assuming using digital beamforming, is it possible that an array antenna generates a single beam direction in different frequencies (Like different sub-carriers in OFDM) at the same time? if so, how ?

    2- The same question but for multiple beams. I mean, is it possible that an array antenna generates multiple beams in different frequencies at the same time?


    1. 1. Yes, that is what is normally done in digital beamforming. You select a different beamforming/precoding vector for each subcarrier.

      2. Yes, this is actually what multi-user MIMO (and Massive MIMO) is about.

      I recommend you to read my book “Massive MIMO Networks” (you can download it from massivemimobook.com) for further details on how this is done.

Leave a Reply

Your email address will not be published. Required fields are marked *