| Communications Toolbox | ![]() |
Bit error rate (BER) for coded AWGN channels
berub = bercoding(EbNo,'conv',decision,coderate,dspec)
berub = bercoding(EbNo,'block','hard',n,k,dmin)
berub = bercoding(EbNo,'block','soft',n,k,dmin)
As an alternative to the bercoding function, invoke the BERTool GUI (bertool) and use the Theoretical panel.
berub = bercoding(EbNo,'conv',decision,coderate,dspec) returns an upper bound on the BER of a binary convolutional code with coherent phase shift keying (PSK) modulation over an additive white Gaussian noise (AWGN) channel. EbNo is the ratio of bit energy to noise power spectral density, in dB. If EbNo is a vector, then berub is a vector of the same size, whose elements correspond to the different Eb/N0 levels. To specify hard-decision decoding, set decision to 'hard'; to specify soft-decision decoding, set decision to 'soft'. The convolutional code has code rate equal to coderate. The dspec input is a structure that contains information about the code's distance spectrum:
dspec.dfree is the minimum free distance of the code
dspec.weight is the weight spectrum of the code
To find distance spectra for some sample codes, use the distspec function or see [1] and [3].
Note The results for binary PSK and quaternary PSK modulation are the same. This function does not support M-ary PSK when M is other than 2 or 4. |
berub = bercoding(EbNo,'block','hard',n,k,dmin) returns an upper bound on the BER of an [n,k] binary block code with hard-decision decoding and coherent BPSK or QPSK modulation. dmin is the minimum distance of the code.
berub = bercoding(EbNo,'block','soft',n,k,dmin) returns an upper bound on the BER of an [n,k] binary block code with soft-decision decoding and coherent BPSK or QPSK modulation. dmin is the minimum distance of the code.
An example using this function for a convolutional code is in Plotting Theoretical Error Rates.
The next example finds an upper bound on the theoretical BER of a block code. It also uses the berfit function to perform curve fitting.
n = 23; k = 12; % Lengths of codewords and messages
dmin = 7; % Minimum distance
EbNo = 1:10;
ber_block = bercoding(EbNo,'block','hard',n,k,dmin);
berfit(EbNo,ber_block) % Plot BER points and fitted curve.
ylabel('Bit Error Probability');
title('BER Upper Bound vs. Eb/No, with Best Curve Fit');

The numerical accuracy of this function's output is limited by
Approximations in the analysis leading to the closed-form expressions that the function uses
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.
berawgn, berfading, bersync, distspec, Theoretical Performance Results
[1] Cedervall, M., and R. Johannesson, "A Fast Algorithm for Computing Distance Spectrum of Convolutional Codes," IEEE Transactions on Information Theory, Vol. IT-35, No. 6, Nov. 1989, pp. 1146-1159.
[2] Frenger, Pål, Pål Orten, and Tony Ottosson, "Convolutional Codes with Optimum Distance Spectrum," IEEE Communications Letters, Vol. 3, No. 11, Nov. 1999, pp. 317-319.
[3] Odenwalder, J. P., Error Control Coding Handbook, Final Report, LINKABIT Corporation, San Diego, CA, 1976.
[4] Proakis, John G., Digital Communications, 4th ed., New York, McGraw-Hill, 2001.
| berawgn | berconfint | ![]() |
© 1994-2005 The MathWorks, Inc.