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 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 ofM
points in a circle. -
MPSKdB.8
simply returnsMPSKdB(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+\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. 5-2-80. -
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 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
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)))