Main Content

Analyze bit error rate (BER) performance of communications systems

The **BER Analyzer** app calculates BER as a
function of the energy per bit to noise power spectral density ratio
(E_{b}/N_{0}). Using this
app, you can:

Plot theoretical BER vs. E

_{b}/N_{0}estimates and upper bounds.Plot BER vs. E

_{b}/N_{0}using the semianalytic technique. The semianalytic technique estimates BER performance by using a combination of simulation and analysis. Use this technique when the system error rate is small, for example, < 10^{–6}.Estimate BER performance by using MATLAB

^{®}functions or Simulink^{®}models.

MATLAB Toolstrip: On the

**Apps**tab, under**Signal Processing and Communications**, click the app icon.MATLAB command prompt: Enter

`bertool`

.

`E`_{b}/N_{0} range

— Range of E`0:18`

(default) | vectorSpecifies the range of E_{b}/N_{0} values,
in dB, over which the BER is evaluated. The values in the range vector
must be real.

**Example: **`5:10`

`Channel type`

— Type of channel over which the BER is evaluated`AWGN`

(default) | `Rayleigh`

| `Rician`

Specifies the type of channel over which the BER is evaluated.
The `Rayleigh`

and `Rician`

options
correspond to flat fading channels.

`Modulation type`

— Modulation type of the communication link`PSK`

(default) | `DPSK`

| `OQPSK`

| `PAM`

| `QAM`

| `FSK`

| `MSK`

| `CPFSK`

Specifies the modulation type of the communication link.

`Modulation order`

— Modulation order of the communication link`2`

(default) | `4`

| `8`

| `16`

| `32`

| `64`

Specifies the modulation order of the communication link.

`Differential encoding`

— Differential encoding of the input data`Off`

(default) | `On`

Specifies if the input data sequence is differentially encoded.

`Demodulation type`

— Demodulation type`Coherent`

| `Noncoherent`

Specifies if `Coherent`

or `Noncoherent`

demodulation
is used. This parameter is available only when the **Modulation
type** is `FSK`

or `MSK`

.

`Channel coding`

— Channel coding used in estimating the BER`None`

(default) | `Convolutional`

| `Block`

Specifies the type of channel coding used to estimate the theoretical BER.

`Synchronization`

— Synchronization error`Perfect synchronization`

(default) | `Normalized timing error`

| `RMS phase noise level`

Specifies the synchronization error in the demodulation process.
This parameter is available only when the **Modulation type** is `PSK`

and
the **Modulation order** is `2`

.

When

**Synchronization**is`Normalized timing error`

, specify the normalized error as a real number from`0`

to`0.5`

.When

**Synchronization**is`RMS phase noise level`

, specify the RMS phase noise as a nonnegative real number.

`Decision method`

— Decoding decision method`Hard`

(default) | `Soft`

Specify the method used to decode the received data. This parameter is available when either of these conditions exist:

**Channel coding**is set to**Convolutional****Channel coding**is set to**Block**and**Coding Type**is`General`

`Trellis`

— Convolutional code trellis`poly2trellis(7,[171 133])`

(default) | structureSpecify the convolutional code trellis as a structure variable.
You can generate this structure by using the `poly2trellis`

function.
The parameter is available only when the **Channel coding ** parameter
is `Convolutional`

.

`Coding type`

— Specify block coding type`General`

(default) | `Hamming`

| `Golay`

| `Reed-Solomon`

Specify the block code used in the BER evaluation.

`N`

— Codeword lengthpositive integer

Specify the codeword length as a positive integer.

`K`

— Message lengthpositive integer

Specify the message length as a positive integer such that **K** is
less than **N**.

`d`_{min}

— Minimum code distancepositive integer

Specify the minimum distance of the (N,K) block code as a positive
integer. This parameter is available when the **Coding type** is `General`

.

`Samples per symbol`

— Samples per symbol`16`

(default) | positive integerSpecify the number of samples per symbol as a positive integer.

`Transmitted signal`

— Transmitted sample sequence```
rectpulse(step(comm.BPSKModulator,
[0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0].'), 16)
```

(default) | vectorSpecify the transmit sequence as a real or complex column vector.

**Data Types: **`double`

**Complex Number Support: **Yes

`Received signal`

— Received sample sequence```
rectpulse(step(comm.BPSKModulator,
[0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0].'), 16)
```

(default) | vectorSpecify the received sequence as a real or complex column vector.

**Data Types: **`double`

**Complex Number Support: **Yes

`Numerator`

— Numerator of the receive filter coefficients`ones(16,1)/16`

(default) | scalar | vectorSpecify the numerator of the receive filter coefficients as a vector.

`Denominator`

— Denominator of the receive filter coefficients`1`

(default) | scalar | vectorSpecify the denominator of the receive filter coefficients as a vector.

`Simulation MATLAB file or Simulink model`

— File name of the BER simulationcharacter vector

Specify the name of the MATLAB file or Simulink model containing the simulation code.

`BER variable name`

— Name of the variable containing the BER simulation datacharacter vector

Specify the name of the MATLAB workspace variable that contains the BER simulation data.

`Number of errors`

— Number of errors measured before simulation stop`100`

(default) | positive integerSpecify the number of errors that must be measured before the simulation stops. Typically, 100 measured errors are enough to produce an accurate BER estimate.

`Number of bits`

— Number of bits processed before simulation stop`1e8`

(default) | positive integerSpecify the number of bits that must be processed before the simulation stops. This parameter is used to prevent the simulation from running too long.

**Note**

The Monte Carlo simulation stops when either the number of errors or number of bits threshold is reached.