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

Syntax

``ber = berfading(EbNo,modtype,M,divorder)``
``ber = berfading(EbNo,'psk',M,divorder)``
``ber = berfading(EbNo,'depsk',2,divorder)``
``ber = berfading(EbNo,'oqpsk',divorder)``
``ber = berfading(EbNo,'dpsk',divorder)``
``ber = berfading(EbNo,'fsk',M,divorder,coherence)``
``ber = berfading(EbNo,'fsk',2,divorder,coherence,rho)``
``ber = berfading(___,K)``
``ber = berfading(EbNo,'psk',2,1,K,phaserr)``
``[ber,ser] = berfading(___)``

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.

example

````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).```
````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 ${\mathit{E}}_{\mathrm{b}}/{\mathit{N}}_{0}$ values to evaluate.

`EbNo = 8:2:20;`

Initialize a BER results vector.

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

Generate BER versus ${\mathit{E}}_{\mathrm{b}}/{\mathit{N}}_{0}$ 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```

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'`

The modulation order `M` must be at least 4.

• When k = log2`M` is odd, the symbols lie in a rectangular constellation of size `M` = I × J, where $I={2}^{\frac{k-1}{2}}$ and $J={2}^{\frac{k+1}{2}}$.

• When k is even, the symbols lie in a square constellation of size ${2}^{\frac{k}{2}}×{2}^{\frac{k}{2}}$.

`'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 nonnegative integer that represents the number of diversity branches.

When you specify a `divorder` value greater than `0`, 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-1080.

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

[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-812.