itpp::Modulator_ND Class Reference
Communications Module » Digital Modulation

Base class for an N-dimensional (ND) vector (MIMO) modulator. More...

`#include <itpp/comm/modulator_nd.h>`

Inheritance diagram for itpp::Modulator_ND:

## Public Types

enum | Soft_Demod_Method { FULL_ENUM_LOGMAP , FULL_ENUM_MAXLOG , ZF_LOGMAP }
| Soft demodulation method. More...

## Public Member Functions

| Modulator_ND (LLR_calc_unit llrcalc_in=LLR_calc_unit())
| Default constructor.
virtual | ~Modulator_ND ()
| Destructor.
void | set_llrcalc (LLR_calc_unit llrcalc_in)
| Set LLR calculation unit.
LLR_calc_unit | get_llrcalc () const
| Get LLR calculation unit.
int | get_dim () const
| Get number of dimensions.
ivec | get_k () const
| Get number of bits per modulation symbol per dimension.
ivec | bits_per_symbol () const
| Get number of bits per modulation symbol per dimension.
ivec | get_M () const
| Get number of modulation symbols per dimension.
Array< ivec > | get_bits2symbols () const
| Get bit pattern in decimal.
Array< bmat > | get_bitmap () const
| Get Bit mapping table.

## Protected Member Functions

QLLRvec | probabilities (QLLR l)
| Convert LLR to log-probabilities.
Array< QLLRvec > | probabilities (const QLLRvec &l)
| Convert LLR to log-probabilities, vector version.
void | marginalize_bits (itpp::QLLRvec &llr, Soft_Demod_Method method) const
| Marginalize (sum) over the bits.
void | demodllrbit0 (itpp::QLLR &llr) const
| Hardcoded implementation of 1:st bit demodulation.
void | demodllrbit1 (itpp::QLLR &llr) const
| Hardcoded implementation of 2:nd bit demodulation.
void | demodllrbit2 (itpp::QLLR &llr) const
| Hardcoded implementation of 3:rd bit demodulation.
void | demodmaxbit0 (itpp::QLLR &maxllr) const
| Hardcoded implementation of 1:st bit demodulation.
void | demodmaxbit1 (itpp::QLLR &maxllr) const
| Hardcoded implementation of 2:nd bit demodulation.
void | demodmaxbit2 (itpp::QLLR &maxllr) const
| Hardcoded implementation of 3:rd bit demodulation.
void | update_LLR (const Array< QLLRvec > &logP_apriori, const ivec &s, QLLR scaled_norm, QLLRvec &num, QLLRvec &denom)
| Update LLR (for internal use) More...
void | update_LLR (const Array< QLLRvec > &logP_apriori, int s, QLLR scaled_norm, int j, QLLRvec &num, QLLRvec &denom)
| Update LLR, for scalar channel (for internal use) More...

## Protected Attributes

int | nt
| Number of dimensions.
int | nb
| Number of bits in the symbol vector.
LLR_calc_unit | llrcalc
| LLR calculation unit.
ivec | k
| Number of bits per modulation symbol.
ivec | M
| Number of modulation symbols along each dimension.
bool | demod_initialized
| Flag indicating whether the demodulator has been initialized.
Array< bmat > | bitmap
| Bit mapping table (one table per dimension)
Array< ivec > | bits2symbols
| Bit pattern in decimal form ordered and the corresponding symbols (one pattern per dimension)
double | gaussnorm
| The normalization factor in the exponent (in front of the square norm) in the Gaussian distribution.
itpp::vec | hnorms
| Norms part dependent on H.
itpp::QLLRvec | Qnorms
| Norms part depending on both H and y.
itpp::QLLRvec | llrapr
| A prioi information.
itpp::ivec | bpos2cpos
| The bit to column mapping.
itpp::ivec | bitcumsum
| The cumulative sum of bits in the symbol vector.
itpp::Array< itpp::Vec< unsigned > > | gray2dec
| The Gray to decimal mapping.

## Detailed Description

Base class for an N-dimensional (ND) vector (MIMO) modulator.

See `ND_UPAM` class for examples.

Note
  Can also be used for scalar modulation/demodulation as an alternative to `Modulator_1D` or `Modulator_2D`. Mixed use of `Modulator_1D` or `Modulator_2D` and `Modulator_ND` is not advised.
  For issues relating to the accuracy of LLR computations, please see the documentation of `LLR_calc_unit`

Definition at line 63 of file modulator_nd.h.

## Member Enumeration Documentation

## Soft_Demod_Method

enum itpp::Modulator_ND::Soft_Demod_Method

Soft demodulation method.

Enumerator
FULL_ENUM_LOGMAP | Log-MAP demodulation by "brute-force" enumeration of all points.
FULL_ENUM_MAXLOG | Max-Log demodulation by "brute-force" enumeration of all points.
ZF_LOGMAP | Zero-Forcing Log-MAP approximated demodulation.

Definition at line 67 of file modulator_nd.h.

## Member Function Documentation

## update_LLR() [1/2]

void itpp::Modulator_ND::update_LLR | ( | const Array< QLLRvec > & | logP_apriori,
|  | const ivec & | s,
|  | QLLR | scaled_norm,
|  | QLLRvec & | num,
|  | QLLRvec & | denom
| ) |  |

protected

Update LLR (for internal use)

This function updates the numerator and denominator in the expression

Parameters

  [in] | logP_apriori | Vector of a priori probabilities per bit
  [in] | s | Symbol vector
  [in] | scaled_norm | Argument of the exponents in the above equation
  [out] | num | Logarithm of the numerator in the above expression
  [out] | denom | Logarithm of the denominator in the above expression

Definition at line 94 of file modulator_nd.cpp.

References bitmap, itpp::LLR_calc_unit::jaclog(), k, llrcalc, and nt.

Referenced by itpp::Modulator_NCD::demodulate_soft_bits(), and itpp::Modulator_NRD::demodulate_soft_bits().

## update_LLR() [2/2]

void itpp::Modulator_ND::update_LLR | ( | const Array< QLLRvec > & | logP_apriori,
|  | int | s,
|  | QLLR | scaled_norm,
|  | int | j,
|  | QLLRvec & | num,
|  | QLLRvec & | denom
| ) |  |

protected

Update LLR, for scalar channel (for internal use)

This function updates the numerator and denominator in the expression

Parameters

  [in] | logP_apriori | Vector of a priori probabilities per bit
  [in] | s | Symbol
  [in] | scaled_norm | Argument of the exponents in the above equation
  [in] | j | Channel index (dimension)
  [out] | num | Logarithm of the numerator in the above expression
  [out] | denom | Logarithm of the denominator in the above expression

Definition at line 68 of file modulator_nd.cpp.

References bitmap, itpp::LLR_calc_unit::jaclog(), k, and llrcalc.

The documentation for this class was generated from the following files:

- itpp/comm/modulator_nd.h
- itpp/comm/modulator_nd.cpp

Generated on Tue Aug 17 2021 10:59:15 for IT++ by Doxygen 1.9.1