Main Content

berfading

BER and SER for uncoded data over Rayleigh and Rician fading channels

Description

The berfading function returns the bit error rate (BER) and symbol error rate (SER) over a Rayleigh or Rician fading channel for uncoded data using a specified modulation scheme. The first input argument, EbNo, is the energy per bit to noise power spectral density ratio (Eb/N0) in dB. Values in the ber and ser output vectors correspond to the theoretical error rates at the specified Eb/N0 levels for a Gray-coded signal constellation. For more information, see Analytical Expressions Used in berfading Function and Bit Error Rate Analysis App.

ber = berfading(EbNo,modtype,M,divorder) returns the BER for PAM or QAM data over an uncoded Rayleigh fading channel with coherent demodulation at the specified Eb/N0 levels for the modulation type, modulation order, and diversity order (specified by modtype, M, and divorder, respectively).

example

ber = berfading(EbNo,'psk',M,divorder) returns the BER for coherently detected PSK data over an uncoded Rayleigh fading channel.

ber = berfading(EbNo,'depsk',2,divorder) specifies coherently detected PSK data with differential data encoding over an uncoded Rayleigh fading channel. In this case, the modulation order is 2.

ber = berfading(EbNo,'oqpsk',divorder) specifies coherently detected OQPSK data over an uncoded Rayleigh fading channel.

ber = berfading(EbNo,'dpsk',divorder) specifies DPSK data over an uncoded Rayleigh fading channel. For DPSK modulation, the resulting BER assumes slow fading (such that any two consecutive symbols are affected by the same fading coefficient).

ber = berfading(EbNo,'fsk',M,divorder,coherence) returns the BER for orthogonal FSK data over an uncoded Rayleigh fading channel. coherence specifies the coherent detection type.

ber = berfading(EbNo,'fsk',2,divorder,coherence,rho) specifies binary nonorthogonal FSK data over an uncoded Rayleigh fading channel. rho specifies the complex correlation coefficient. The modulation order is 2. For the definition of the complex correlation coefficient and how to compute it for nonorthogonal BFSK modulation, see Nonorthogonal 2-FSK with Coherent Detection.

ber = berfading(___,K) returns the BER over an uncoded Rician fading channel using any input argument combination from previous syntaxes. K is the ratio of specular to diffuse energy in linear scale. If you use the modulation type 'fsk', rho is required and must be specified before K.

ber = berfading(EbNo,'psk',2,1,K,phaserr) returns the BER of BPSK data over an uncoded Rician fading channel. phaserr specifies the imperfect phase synchronization, which is the standard deviation of the reference carrier phase error.

[ber,ser] = berfading(___) returns the BER and SER using any input argument combination from previous syntaxes.

Examples

collapse all

Generate a vector of Eb/N0 values to evaluate.

EbNo = 8:2:20;

Initialize a BER results vector.

ber = zeros(length(EbNo),20);

Generate BER versus Eb/N0 curves for 16-QAM in a Rayleigh fading channel. Vary the diversity order from 1 to 20.

for L = 1:20 
    ber(:,L) = berfading(EbNo,'qam',16,L);
end

Plot the results.

semilogy(EbNo,ber,'b')
text(18.5, 0.02, sprintf('L=%d',1))
text(18.5, 1e-11, sprintf('L=%d',20))
title('QAM over Rayleigh Fading Channel with Diversity Order 1 to 20')
xlabel('E_b/N_0 (dB)')
ylabel('BER')
grid on

Figure contains an axes object. The axes object with title QAM over Rayleigh Fading Channel with Diversity Order 1 to 20, xlabel E indexOf b baseline /N indexOf 0 baseline blank (dB), ylabel BER contains 22 objects of type line, text.

Input Arguments

collapse all

Energy per bit to noise power spectral density ratio in dB, specified as a scalar or vector.

For cases where diversity is used, the Eb/N0 on each diversity branch is EbNo/divorder.

Data Types: single | double

Modulation type, specified as one of these options.

modtype ValueModulation SchemeDependencies
'pam'

Pulse amplitude modulation (PAM)

None

'qam'

Quadrature amplitude modulation (QAM)

The modulation order M must be at least 4.

  • When k = log2M is odd, the symbols lie in a rectangular constellation of size M = I × J, where I=2k12 and J=2k+12.

  • When k is even, the symbols lie in a square constellation of size 2k2×2k2.

'psk'

Phase shift keying (PSK)

None

'oqpsk'

Offset quadrature phase shift keying (OQPSK)

None

'dpsk'

Differential phase shift keying (DPSK)

None

'fsk'

Frequency-shift keying (FSK)

When you set the input coherence to 'noncoherent', modulation order M must be in the range [2, 64].

Data Types: char | string

Modulation order, specified as an integer equal to 2k, where k is a positive integer.

Example: 4 or 2^2

Data Types: single | double

Diversity order, specified as a positive integer that represents the number of diversity branches.

When you specify a divorder value greater than 1, the error rate is computed using diversity. For cases where diversity is used, the Eb/N0 on each diversity branch is EbNo/divorder.

Data Types: single | double

Coherent detection type, specified as one of these options.

  • 'coherent' — For coherent detection

  • 'noncoherent' — For noncoherent detection

Dependencies

To enable this argument, set the modtype argument to 'fsk'.

Data Types: char | string

Complex correlation coefficient, specified as a complex scalar. For more information about the complex correlation coefficient and how to compute it for nonorthogonal binary FSK (BFSK) modulation, see Nonorthogonal 2-FSK with Coherent Detection.

Dependencies

To enable this argument, set the modtype argument to 'fsk' and the M argument to 2.

Data Types: single | double
Complex Number Support: Yes

Ratio of specular to diffuse energy in linear scale, specified as a nonnegative scalar.

Data Types: single | double

Standard deviation of the reference carrier phase error in radians, specified as a nonnegative scalar.

Data Types: single | double

Output Arguments

collapse all

BER for uncoded data over a Rayleigh or Rician channel, returned as a scalar or vector. The BER is computed for each Eb/N0 setting specified by input EbNo according to the modulation type specified by input modtype and related dependencies.

Data Types: double

SER for uncoded data over a Rayleigh or Rician channel, returned as a scalar or vector. The SER is computed for each Eb/N0 setting specified by input EbNo according to the modulation type specified by input modtype and related dependencies.

Data Types: double

Limitations

The numerical accuracy of the output returned by this function is limited by approximations related to the numerical implementation of the expressions to roughly two significant digits.

Alternatives

You can configure the Theoretical tab in the Bit Error Rate Analysis app to compute theoretical BER values instead of using the berfading function.

References

[1] Proakis, John G. Digital Communications. 4th ed. New York: McGraw Hill, 2001.

[2] Modestino, J. and Shou Mui. “Convolutional Code Performance in the Rician Fading Channel.” IEEE Transactions on Communications 24, no. 6 (June 1976): 592–606. https://doi.org/10.1109/TCOM.1976.1093351.

[3] Cho, K., and D. Yoon. "On the General BER Expression of One- and Two-Dimensional Amplitude Modulations." IEEE® Trans. Commun. 50, no. 7 (2002): 1074-80.

[4] Lee, P. J. "Computation of the Bit Error Rate of Coherent M-ary PSK with Gray Code Bit Mapping." IEEE Trans. Commun. 34, no. 5 (1986): 488-91.

[5] Lindsey, W. C. "Error probabilities for Rician fading multichannel reception of binary and N-ary signal." IEEE Transactions on Information Theory, vol. 10, no. 4, pp. 339-350, October 1964, doi: 10.1109/TIT.1964.1053703.

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

[7] Simon, M. K., and Alouini, M. S. Digital Communication over Fading Channels – A Unified Approach to Performance Analysis. 1st ed. Wiley, 2000.

[8] Simon, M. K. "On the Bit-Error Probability of Differentially Encoded QPSK and Offset QPSK in the Presence of Carrier Synchronization." IEEE Trans. Commun. 54, (2006): 806-12.

Version History

Introduced before R2006a