QAM Theoretical BER in AWGN

Quadrature Amplitude Modulation (QAM) is an important modulation scheme as it allows for higher data rates and spectral efficiencies. The bit error rate (BER) of QAM can be calculated through Monte Carlo simulations. However this becomes quite complex as the constellation size of the modulation schemes increases. Therefore a theoretical approach is sometimes preferred. The BER for Gray coded QAM, for even number of bits per symbol, is shown below.

BER of 4-QAM, 16-QAM, 64-QAM, 256-QAM in AWGN
BER of 4-QAM, 16-QAM, 64-QAM, 256-QAM in AWGN

Gray coding ensures that a symbol error results in a single bit error. The code for calculating the theoretical QAM BER for k even (even number of bits per symbol) is given below. The formula for calculating the BER for k odd is different, however, the formula given below can be used a first estimate.


1. Each additional bit/symbol requires about 2dB extra in SNR to achieve the same BER.
2. 4-QAM is essentially QPSK modulation.

13 thoughts on “QAM Theoretical BER in AWGN

  1. My Octave version.

    I’m new to Octave and doing this sort of thing so please offer suggestions and corrections.

    function Y=Q(X)

    K=[2 4 6 8]
    title(“M-QAM BER v SNR”)
    grid on
    grid minor on
    ylim([1e-8 1e0])
    xlabel(“Eb/No (dB)”)
    print -dsvg q.svg

  2. This is the complete code. You should be able to reproduce the above Fig. If you are still unable to do so, please share your code here.


  3. Hello,
    I am not able to reproduce that graphic, could you send me the complete matlab code?

    Thank you!

  4. I simulate the BER performance of M-ary QAM over Rayleigh fading channel in Matlab tool, now I want to check that result with theoretical ber. So, please send to me theoretical BER equation of M-ary QAM over Rayleigh fading channel.

    Thanking you.

  5. Hello, it seems that everyone is in need of those codes :). Could you send me the code for matlab also??

    I’ll appreciate it. Thank you!!

  6. Gordon: Frankly speaking I could not figure this out easily and had to do a simulation. It turns out that there is significant difference (2-3 dB) at low EbNo but at higher signal to noise ratios the difference is reduced to a fraction of a dB.

    The simulation considered 64-QAM modulation but similar results are expected for other modulation schemes.

  7. May I know the sensitivity difference between the cases with and without gray coding?



  8. Hello,
    I tried to do the graphic that you upload to the website in order to calculate the theorical BER of 4-QAM, 16-QAM and 64-QAM.
    I am not able to reproduce that graphic, could you send me the complete matlab code??

    Thank you very much

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>