Bit error rate (BER) for uncoded AWGN channels

`ber = berawgn(EbNo,'pam',M)`

ber = berawgn(EbNo,'qam',M)

ber = berawgn(EbNo,'psk',M,* dataenc*)

ber = berawgn(EbNo,'oqpsk',

`dataenc`

ber = berawgn(EbNo,'dpsk',M)

ber = berawgn(EbNo,'fsk',M,

`coherence`

ber = berawgn(EbNo,'fsk',2,

`coherence`

ber = berawgn(EbNo,'msk',

`precoding`

ber = berawgn(EbNo,'msk',

`precoding`

berlb = berawgn(EbNo,'cpfsk',M,modindex,kmin)

[BER,SER] = berawgn(EbNo, ...)

The `berawgn`

function returns the BER of various
modulation schemes over an additive white Gaussian noise (AWGN) channel.
The first input argument, `EbNo`

, is the ratio of
bit energy to noise power spectral density, in dB. If `EbNo`

is
a vector, the output `ber`

is a vector of the same
size, whose elements correspond to the different E_{b}/N_{0} levels.
The supported modulation schemes, which correspond to the second input
argument to the function, are in the following table.

Modulation Scheme | Second Input Argument |
---|---|

Phase shift keying (PSK) | `'psk'` |

Offset quadrature phase shift keying (OQPSK) | `'oqpsk'` |

Differential phase shift keying (DPSK) | `'dpsk'` |

Pulse amplitude modulation (PAM) | `'pam'` |

Quadrature amplitude modulation (QAM) | `'qam'` |

Frequency shift keying (FSK) | `'fsk'` |

Minimum shift keying (MSK) | `'msk'` |

Continuous phase frequency shift keying (CPFSK) | `'cpfsk'` |

Most syntaxes also have an `M`

input that specifies
the alphabet size for the modulation. `M`

must have
the form 2^{k} for some positive integer `k`

.
For all cases, the function assumes the use of a Gray-coded signal
constellation.

`ber = berawgn(EbNo,'pam',M)`

returns
the BER of uncoded PAM over an AWGN channel with coherent demodulation.

`ber = berawgn(EbNo,'qam',M)`

returns the BER of uncoded
QAM over an AWGN channel with coherent demodulation. The alphabet size,
`M`

, must be at least 4. When $$k={\mathrm{log}}_{2}M$$ is odd, a rectangular constellation of size $$M=I\times J$$ is used, where $$I={2}^{\frac{k-1}{2}}$$ and $$J={2}^{\frac{k+1}{2}}$$. When *k* is even, a square constellation of size$${2}^{\frac{k}{2}}\times {2}^{\frac{k}{2}}$$ is used.

`ber = berawgn(EbNo,'psk',M,`

returns
the BER of coherently detected uncoded PSK over an AWGN channel. * dataenc*)

`dataenc`

`'diff'`

for differential data encoding or `'nondiff'`

for
nondifferential data encoding. If `dataenc`

`'diff'`

, `M`

must
be no greater than 4.`ber = berawgn(EbNo,'oqpsk',`

returns
the BER of coherently detected offset-QPSK over an uncoded AWGN channel.* dataenc*)

`ber = berawgn(EbNo,'dpsk',M) `

returns
the BER of uncoded DPSK modulation over an AWGN channel.

`ber = berawgn(EbNo,'fsk',M,`

returns
the BER of orthogonal uncoded FSK modulation over an AWGN channel. * coherence*)

`coherence`

`'coherent'`

for coherent demodulation or `'noncoherent'`

for
noncoherent demodulation. `M`

must be no greater
than 64 for `'noncoherent'`

.`ber = berawgn(EbNo,'fsk',2,`

returns
the BER for binary nonorthogonal FSK over an uncoded AWGN channel,
where * coherence*,rho)

`rho`

is the complex correlation coefficient.
See Nonorthogonal 2-FSK with Coherent Detection for the definition
of the complex correlation coefficient and how to compute it for nonorthogonal
BFSK.`ber = berawgn(EbNo,'msk',`

returns
the BER of coherently detected MSK modulation over an uncoded AWGN
channel. Setting * precoding*)

`precoding`

`'off'`

returns
results for conventional MSK while setting `precoding`

`'on'`

returns
results for precoded MSK.`ber = berawgn(EbNo,'msk',`

specifies
whether the detection is coherent or noncoherent.* precoding*,coherence)

`berlb = berawgn(EbNo,'cpfsk',M,modindex,kmin) `

returns
a lower bound on the BER of uncoded CPFSK modulation over an AWGN
channel. `modindex`

is the modulation index, a positive
real number. `kmin`

is the number of paths having
the minimum distance; if this number is unknown, you can assume a
value of 1.

`[BER,SER] = berawgn(EbNo, ...)`

returns
both the BER and SER.

The numerical accuracy of this function's output is limited by approximations related to the numerical implementation of the expressions.

You can generally rely on the first couple of significant digits of the function's output.

As an alternative to the `berawgn`

function,
invoke the BERTool GUI (`bertool`

), and use the **Theoretical** tab.

[1] Anderson, John B., Tor Aulin, and Carl-Erik Sundberg, *Digital
Phase Modulation*, New York, Plenum Press, 1986.

[2] Cho, K., and Yoon, D., “On the
general BER expression of one- and two-dimensional amplitude modulations”, *IEEE
Trans. Commun.*, Vol. 50, Number 7, pp. 1074-1080, 2002.

[3] Lee, P. J., “Computation of the
bit error rate of coherent M-ary PSK with Gray code bit mapping”, *IEEE
Trans. Commun.*, Vol. COM-34, Number 5, pp. 488-491, 1986.

[4] Proakis, J. G., *Digital Communications*,
4th ed., McGraw-Hill, 2001.

[5] Simon, M. K, Hinedi, S. M., and Lindsey,
W. C., *Digital Communication Techniques – Signal
Design and Detection*, Prentice-Hall, 1995.

[6] Simon, M. K, “On the bit-error
probability of differentially encoded QPSK and offset QPSK in the
presence of carrier synchronization”, *IEEE Trans.
Commun.*, Vol. 54, pp. 806-812, 2006.

[7] Lindsey, W. C., and Simon, M. K, *Telecommunication
Systems Engineering*, Englewood Cliffs, N.J., Prentice-Hall,
1973.