5.6 Estimating Probability of Error for QAM
The easiest QAM to analyze is the “squared” (SQ) -QAM, where the number of bits is an even integer and the QAM constellation was obtained by the Cartesian product of two PAM constellations of symbols each. For example, two 2-PAMs with symbols can be used to obtain a 4-QAM with symbols . In this case, the analysis is simplified by observing that PAM uses dimension while QAM uses dimensions, and the expressions “per dimension” are equivalent. For example, when using QAM, the filtered AWGN has a variance of per dimension, such that the total noise power is but the noise “per dimension” is the same as when using a PAM.
-PAM | SQ -QAM | |
The SQ QAM constellation has energy given by
and the energy “per dimension” is . This energy can be obtained from Eq. (2.10) by noting that one dimension has the energy of a -PAM:
A similar reasoning can be applied to other expressions: when a appears in a PAM expression, it changes to in the equivalent per dimension SQ QAM expression and a in PAM changes to in the SQ QAM. Table 5.1 gives two examples.
Hereafter, an over line will be used to denote “per dimension” quantities. For example, the SER “per dimension” is
and the number of bits per symbol per dimension is
The exact probability of error expressions for SQ -QAM is
Discarding the term , which is typically very small, an approximated probability of error expression for SQ -QAM is
| (5.12) |
Note that the expression below is exact for PAM and a good approximation for QAM:
| (5.13) |

The previous analysis assumed SQ QAM, where is even and the constellation has the same number of symbols at both dimensions. When is odd, the constellation is typically organized as a “cross” and called CR QAM. Figure 5.8 illustrates four examples of CR QAM constellations.
The expressions for CR QAM (note that ) are:
5.6.1 Estimating probability of error for PSK

The PSK modulation uses dimensions but the information is conveyed only by the symbol phase because the symbol amplitude is constant. This is obtained by placing the constellation points with uniform angular spacing around a circle. PSK is often used when the channel imposes a nonlinear amplitude distortion. Figure 5.9 provides four example of -PSK constellations.
The binary PSK is called BPSK. The quaternary PSK uses symbols and is called QPSK. It corresponds to a QAM and its can be obtained from the corresponding QAM expression. For a PSK other than BPSK and QPSK (i. e., for ), there is no simple expression for the [ url5psk]. A relatively tight bound for PSK is
Two important facts is that translating and rotating a constellation does not change . For example, the QAM constellations leads to the same as .
5.6.2 Statistical validity of error probability estimations
One needs to be careful when estimating the BER using a simulation that transmits bits and counts the errors at the receiver. This is called Monte Carlo simulation and requires a large number of bits when the BER is small. For example, when , an error is expected to occur at each 100 transmitted bits, but only at each 10,000 transmitted bits if .

If there are no errors in a simulation using few bits, it does not necessarily mean that the actual BER is zero, but it may be the case that there were not enough bits in the transmitted signal. As a rule of thumb, 100 (or more) errors should occur in a simulation in order to have a robust estimate of the BER. In other words, if the expected BER is , a reasonable number of bits to be transmitted over the channel in a simulation to get a robust BER estimate is . At a high SNR, this can require transmitting millions, or even billions of bits. For example, when dealing with , the transmission of bits should be planned. The code Listing 5.3 was used to generate Figure 5.10, which illustrates the issue.
1%Perform a symbol-based simulation for binary PAM / PSK 2d=20; %Distance between symbols 3A=d/2; %Amplitude A=d/2 Volts 4Nbits = 1000; %Number of transmitted bits 5bits = rand(1,Nbits)>0.5; %bits (0 or 1) 6symbols = A*2*(bits-0.5); %symbols (-A or A) 7snr_dB = linspace(0,10,100); %SNR in dB 8snr = 10 .^ (0.1*snr_dB); %linear SNR 9noisePower = A^2 ./ snr; %noise power (sigma^2) 10V=length(noisePower); %number of points in grid 11ber = zeros(1,V); %pre-allocate space 12for i=1:V 13 %generate noise 14 noise = sqrt(noisePower(i)) * randn(size(symbols)); 15 %AWGN 16 receivedSymbols = symbols + noise; 17 %recover bits using ML threshold equal to 0 18 decodedBits = receivedSymbols > 0; 19 ber(i) = sum(decodedBits ~= bits)/Nbits; %estimate BER 20end 21%compare with theoretical expression: 22if 1 %first option 23 theoreticalBER = ak_qfunc(d ./ (2*sqrt(noisePower)) ); 24else %second option 25 theoreticalBER = ak_qfunc(sqrt(snr)); 26end 27clf, semilogy(snr_dB,ber,snr_dB,theoreticalBER,'--'); 28xlabel('SNR (dB)'); ylabel('BER'); grid; 29legend('Simulated','Theoretical');
Listing 5.3 used only Nbits = 1000 bits and the accuracy of the estimate became low when the SNR increased. This is expected because for dB, the theoretical BER is smaller than and having no errors leads to the misleading estimate of . In this case, reducing the maximum SNR or increasing the number of bits is mandatory for a robust estimate of .