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 (Eb/N0). Using this app, you can:
Plot theoretical BER vs. Eb/N0 estimates and upper bounds.
Plot BER vs. Eb/N0 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
.
Eb/N0 range
— Range of Eb/N0 values over which the BER is evaluated0:18
(default) | vectorSpecifies the range of Eb/N0 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 evaluatedAWGN
(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 linkPSK
(default) | DPSK
| OQPSK
| PAM
| QAM
| FSK
| MSK
| CPFSK
Specifies the modulation type of the communication link.
Modulation order
— Modulation order of the communication link2
(default) | 4
| 8
| 16
| 32
| 64
Specifies the modulation order of the communication link.
Differential encoding
— Differential encoding of the input dataOff
(default) | On
Specifies if the input data sequence is differentially encoded.
Demodulation type
— Demodulation typeCoherent
| 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 BERNone
(default) | Convolutional
| Block
Specifies the type of channel coding used to estimate the theoretical BER.
Synchronization
— Synchronization errorPerfect 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 methodHard
(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 trellispoly2trellis(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 typeGeneral
(default) | Hamming
| Golay
| Reed-Solomon
Specify the block code used in the BER evaluation.
N
— Codeword lengthSpecify the codeword length as a positive integer.
K
— Message lengthSpecify the message length as a positive integer such that K is less than N.
dmin
— Minimum code distanceSpecify 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 symbol16
(default) | positive integerSpecify the number of samples per symbol as a positive integer.
Transmitted signal
— Transmitted sample sequencerectpulse(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 sequencerectpulse(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 coefficientsones(16,1)/16
(default) | scalar | vectorSpecify the numerator of the receive filter coefficients as a vector.
Denominator
— Denominator of the receive filter coefficients1
(default) | scalar | vectorSpecify the denominator of the receive filter coefficients as a vector.
Simulation MATLAB file or Simulink model
— File name of the BER simulationSpecify the name of the MATLAB file or Simulink model containing the simulation code.
BER variable name
— Name of the variable containing the BER simulation dataSpecify the name of the MATLAB workspace variable that contains the BER simulation data.
Number of errors
— Number of errors measured before simulation stop100
(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 stop1e8
(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.