I'm simulating a QPSK system in Matlab and I'm trying to calculate the theoretical bit error rate to compare it with the simulated ber. The formula that I'm aware of involves the term Eb/N0, but how do I calculate it, knowing just the SNR and the energy per bit? I seem to need to know the bandwidth of the signal but since I'm just sending constellation points with no carrier (so just complex numbers), there is no symbol duration, so I can't calculate N0 from N0 = Pn/B.

Any help would be greatly appreciated.

  • $\begingroup$ Have you checked this? $\endgroup$
    – Tendero
    Dec 26, 2017 at 17:23

1 Answer 1


TL;DR The theoretical BER of an ideal QPSK system is $\displaystyle Q\left(\sqrt{\frac{2E_b}{N_0}}\right)$ where $E_b$ is the energy per bit and $\frac{N_0}{2}$ is the two-sided power spectral density of the additive white Gaussian noise channel.

The receiver in a standard QPSK system is essentially two BPSK receivers using phase-orthogonal carriers. With a standard matched filter, the signal output in each BPSK receiver has value $E_b$ while the noise variance is $\sigma^2 = E_b N_0/2$. Putting in the complex-value stuff, the signal output in the QPSK system is a complex number taking on values $(\pm E_b \pm jE_b)$ perturbed by complex Gaussian noise $N_i+jN_Q$ whose real and imaginary parts are independent zero-mean Gaussian random variables with variance $E_b N_0/2$. The decisions that each BPSK receiver makes are independent (because the noise in the receivers are independent), and since each receiver needs to decide between $E_b+N$ and $-E_b+N$, each receiver makes errors with probability $\displaystyle Q\left(\frac{E_b}{\sqrt{E_bN_0/2}}\right) = Q\left(\sqrt{\frac{2E_b}{N_0}}\right)$. Notice the complete lack of information about the symbol duration $T$ or the channel bandwidth $B$.

"But, but, but..." you splutter, "All this is nonsense. My receiver has signal output $(\pm A \pm jA)$ and the noise variance is measured to be $(12+j12)$, not this $E_b$ stuff that you keep on yammering about, and what I want to know is how do I get $E_b$ and $N_0$ when I simulate the system!"

Not to worry. The BPSK receiver is a linear receiver (except for the sampler and decision device), and so the output that you are measuring is really some constant $K$ times $E_b$, and the noise variance $12$ is just $K^2E_bN_0/2$. So, when you run your simulations, generating gazillions of complex numbers $(\pm A \pm jA)$, perturbing them with complex Gaussian noise of variance $(12+j12)$, your simulated BER should be quite close to $$Q\left(\frac{A}{\sqrt{12}}\right) = Q\left(\frac{KE_b}{\sqrt{K^2E_bN_0/2}}\right)=Q\left(\sqrt{\frac{2E_b}{N_0}}\right).$$ In short, you don't need to know the value of $K$ or to calculate the value of $E_b$ or $N_0$ explicitly; just use your measured values and go from there; it all comes out in the wash.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.