Theoretical {binfunest}  R 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 
pv 
a vector of BERs. 
offset 
an offset in Decibels for guesses in 
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. SeeDQPSK
above. 
PSQPSKdB
is polarizationshifted 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 Mary phase shift keying ofM
points in a circle. 
MPSKdB.8
simply returnsMPSKdB(x, 8)

QAMdB.8.star
is the optimal star configuration of 8ary Quadrature Amplitude Modulation (QAM), such that the legs are at\pm1
and\pm(1+\sqrt3)
. 
QAMdB(x, M)
is generic rectangular QAM constellation ofM
points. 
QAMdB.16
Returns the BER for the rectangular QAM constellation according to Proakis Eq. 5280. 
mod_Inv
will take a functionf(x)
and return the x such thatf(x)==perr
but it does this based on thelog( f(x))
and thelog( perr)
, sof(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 cround(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
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)))