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.

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