Theoretical: Theoretical error rate functions

TheoreticalR Documentation

Theoretical error rate functions

Description

Functions to calculate the theoretical performance of common modulation formats. Includes the functions dB (x) (returns 10log10(x)), undB(x) (reverses dB(x)), Q_( x) (Markum's Q function), and Q_Inv(x) (returns the SNR in Decibels to get probability x). Also includes mod_Inv, which returns the SNR required for a the function f to reach the supplied BER (bit error rate, or bit error probability).

Usage

is.wholenumber(x, tol = sqrt(.Machine$double.eps))

dB(x)

undB(x)

Q_(x)

Q_Inv(perr)

QPSKdB(x)

DQPSKdB(x)

DQPSKDDdB(x)

PSQPSKdB(x)

MPSKdB(x, M)

MPSKdB.8(x)

QAMdB.8.star(x)

QAMdB(x, M)

QAMdB.16(x)

mod_Inv(f, perr, guess = Q_Inv(perr))

mod_InvV(f, pv, offset = 0)

Arguments

x

a real number

tol

the tolerance to test x with.

perr

a probability of a bit error.

M

The integer number of symbols > 4.

f

a function (usually a BER function).

guess

a guess for the perr (the default usually works).

pv

a vector of BERs.

offset

an offset in Decibels for guesses in mod_InvV.

Details

The rest of the functions return the probability of a bit error given the SNR in Decibels.

  • QPSKdB is Quadrature Phase shift keyed: two bits per symbol.

  • DQPSK is differentially detected differentially coded QPSK.

  • DQPSKDDdB is differentially detected differential QPSK (coherently detected but differentially decoded. See DQPSK above.

  • PSQPSKdB is polarization-shifted QPSK: it is dual pole, but only one pole is active at any one time, thus supplying three bits per symbol. (See Agrell & Karlsson (2009, DOI:10.1109/JLT.2009.2029064)).

  • MPSKdB(x, M) is generic M-ary phase shift keying of M points in a circle.

  • MPSKdB.8 simply returns MPSKdB(x, 8)

  • QAMdB.8.star is the optimal star configuration of 8-ary Quadrature Amplitude Modulation (QAM), such that the legs are at \pm1 and \pm(1+√3).

  • QAMdB(x, M) is generic rectangular QAM constellation of M points.

  • QAMdB.16 Returns the BER for the rectangular QAM constellation according to Proakis Eq. 5-2-80.

  • mod_Inv will take a function f(x) and return the x such that f(x)==perr but it does this based on the log( f(x)) and the log( perr), so f(x)>0.

  • mod_InvV is a vectorized version (give it a vector of BERs and it returns a vector of SNRs).

Value

is.wholenumber(x) returns TRUE if c-round(x) < tol.

dB(x) returns 10*log10(x)

undB(x) returns 10^(x/10)

Q_Inv(x) returns 2*dB( -qnorm(x)), which is the SNR (in Decibels) required to get a probability of error of x. Q_Inv( Q_( undB( x/2))) = x and Q_( undB( Q_Inv( x)/2))=x

mod_Inv( f, x) returns a list with the SNR in Decibels to reach the BER perr such that f( mod_Inv( f, x)$x) = x. The returned list has elements $x as the SNR and $fval as the function value.

See Also

pracma::fzero()

Examples

dB( 10) # == 10
undB( 20) # == 100
Q_Inv( Q_( undB( 10/2))) # = 10
Q_( undB( Q_Inv( 0.001)/2)) # = 0.001

mod_Inv( QPSKdB, QPSKdB( 7)) # yields 7

mod_InvV(QPSKdB, QPSKdB(c(6,7)))


binfunest documentation built on Sept. 9, 2022, 9:07 a.m.