itpp::Modulator_NCD Class Reference
Communications Module » Digital Modulation

Base class for vector (MIMO) channel modulator/demodulators with complex valued components. More...

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

Inheritance diagram for itpp::Modulator_NCD:

## Public Types

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

## Public Member Functions

| Modulator_NCD ()
| Constructor.
virtual | ~Modulator_NCD ()
| Destructor.
Array< cvec > | get_symbols () const
| Get modulation symbols per dimension.
void | modulate_bits (const bvec &bits, cvec &symbols) const
| Modulate `bits` into `symbols`.
cvec | modulate_bits (const bvec &bits) const
| Modulation of bits.
void | init_soft_demodulator (const itpp::cmat &H, const double &sigma2)
| Soft MAP demodulation for multidimensional channel, by "brute-force" enumeration of all constellation points.
void | demodulate_soft_bits (const cvec &y, const QLLRvec &LLR_apriori, QLLRvec &LLR_aposteriori, Soft_Demod_Method method=FULL_ENUM_LOGMAP)
| Soft MAP demodulation for multidimensional channel, by "brute-force" enumeration of all constellation points.
void | demodulate_soft_bits (const cvec &y, const cmat &H, double sigma2, const QLLRvec &LLR_apriori, QLLRvec &LLR_aposteriori, Soft_Demod_Method method=FULL_ENUM_LOGMAP)
| Soft demodulation wrapper function for various methods.
QLLRvec | demodulate_soft_bits (const cvec &y, const cmat &H, double sigma2, const QLLRvec &LLR_apriori, Soft_Demod_Method method=FULL_ENUM_LOGMAP)
| Soft demodulation wrapper function for various methods.
void | demodulate_soft_bits (const cvec &y, const cvec &h, double sigma2, const QLLRvec &LLR_apriori, QLLRvec &LLR_aposteriori)
| Soft MAP demodulation for parallelchannels without crosstalk.
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

void | hxnormupdate (itpp::cvec &Hx, unsigned &bitstring, unsigned &ind, unsigned bit)
void | yxnormupdate (double &yx, itpp::QLLR &lapr, unsigned &bitstring, unsigned &ind, unsigned bit)
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)
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)

## Protected Attributes

Array< cvec > | symbols
| Vectors of modulation symbols (along each dimension)
itpp::cmat | H
| Complex-valued channel matrix.
itpp::Array< itpp::Array< itpp::cvec > > | hspacings
| The spacing between different constellation points multiplied by the different H columns.
itpp::Array< itpp::vec > | yspacings
| The spacing between different constellation points scaled by different y elements.
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.

## Friends

ITPP_EXPORT std::ostream & | operator<< (std::ostream &os, const Modulator_NCD &m)
| Print some properties of the MIMO modulator (mainly to aid debugging)

## Related Symbols

(Note that these are not member symbols.)
ITPP_EXPORT std::ostream & | operator<< (std::ostream &os, const Modulator_NCD &m)
| Print some properties of the MIMO modulator (mainly to aid debugging)

## Detailed Description

Base class for vector (MIMO) channel modulator/demodulators with complex valued components.

This class is equivalent to `Modulator_NRD` except for that all quantities are complex-valued.

See `ND_UPAM` for examples.

Note
  For issues relating to the accuracy of LLR computations, please see the documentation of `LLR_calc_unit`

Definition at line 447 of file modulator_nd.h.

## Member Enumeration Documentation

## Soft_Demod_Method

enum itpp::Modulator_ND::Soft_Demod_Method

inherited

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.

## Constructor & Destructor Documentation

## Modulator_NCD()

itpp::Modulator_NCD::Modulator_NCD | ( |  | ) |

inline

Constructor.

Definition at line 451 of file modulator_nd.h.

## ~Modulator_NCD()

virtual itpp::Modulator_NCD::~Modulator_NCD | ( |  | ) |

inlinevirtual

Destructor.

Definition at line 453 of file modulator_nd.h.

## Member Function Documentation

## get_symbols()

Array< cvec > itpp::Modulator_NCD::get_symbols | ( |  | ) | const

Get modulation symbols per dimension.

Definition at line 698 of file modulator_nd.cpp.

References it_assert, itpp::Array< T >::left(), itpp::Array< T >::length(), itpp::Modulator_ND::M, itpp::Modulator_ND::nt, and symbols.

## modulate_bits() [1/2]

void itpp::Modulator_NCD::modulate_bits | ( | const bvec & | bits,
|  | cvec & | symbols
| ) |  | const

Modulate `bits` into `symbols`.

Definition at line 709 of file modulator_nd.cpp.

References itpp::bin2dec(), itpp::Modulator_ND::bits2symbols, it_assert, itpp::Modulator_ND::k, itpp::length(), itpp::Array< T >::mid(), itpp::Modulator_ND::nt, itpp::Array< T >::set_size(), itpp::sum(), and symbols.

Referenced by modulate_bits().

## modulate_bits() [2/2]

cvec itpp::Modulator_NCD::modulate_bits | ( | const bvec & | bits | ) | const

Modulation of bits.

Definition at line 724 of file modulator_nd.cpp.

References modulate_bits(), and itpp::Modulator_ND::nt.

## init_soft_demodulator()

void itpp::Modulator_NCD::init_soft_demodulator | ( | const itpp::cmat & | H,
|  | const double & | sigma2
| ) |  |

Soft MAP demodulation for multidimensional channel, by "brute-force" enumeration of all constellation points.

This function computes the norms

used to compute the LLR values

without approximations. It is assumed that H is real-valued. Complex-valued channels can be handled using the `Modulator_NCD` class.

Definition at line 731 of file modulator_nd.cpp.

References itpp::Modulator_ND::bitcumsum, itpp::Modulator_ND::bits2symbols, itpp::Modulator_ND::bpos2cpos, itpp::cumsum(), itpp::Modulator_ND::demod_initialized, itpp::Modulator_ND::gaussnorm, itpp::Modulator_ND::gray2dec, H, itpp::Modulator_ND::hnorms, hspacings, it_assert_debug, itpp::Modulator_ND::k, itpp::Modulator_ND::M, itpp::Modulator_ND::nb, itpp::Modulator_ND::nt, itpp::pow2i(), itpp::prod(), itpp::Modulator_ND::Qnorms, itpp::reverse(), itpp::Array< T >::set_size(), itpp::sum(), symbols, and yspacings.

Referenced by demodulate_soft_bits().

## demodulate_soft_bits() [1/4]

void itpp::Modulator_NCD::demodulate_soft_bits | ( | const cvec & | y,
|  | const QLLRvec & | LLR_apriori,
|  | QLLRvec & | LLR_aposteriori,
|  | Soft_Demod_Method | method = `FULL_ENUM_LOGMAP`
| ) |  |

Soft MAP demodulation for multidimensional channel, by "brute-force" enumeration of all constellation points.

This function computes the LLR values

without approximations. Currently the following two demodulation methods are supported:

- FULL_ENUM_LOGMAP - exact demodulation, which use "brute-force" enumeration of all constellation points
- FULL_ENUM_MAXLOG - max-log approximate demodulation, which use "brute-force" enumeration to find the constellation points that give the smallest euclidian distances

Parameters

  [in] | y | Received vector (typically )
  [in] | LLR_apriori | Vector of a priori LLR values per bit
  [out] | LLR_aposteriori | Vector of a posteriori LLR values
  [in] | method | Soft demodulation method

The function performs an exhaustive search over all possible points `s` in the n-dimensional constellation. This is only feasible for relatively small constellations. The Jacobian logarithm is used to compute the sum-exp expression.

Referenced by demodulate_soft_bits(), and demodulate_soft_bits().

## demodulate_soft_bits() [2/4]

void itpp::Modulator_NCD::demodulate_soft_bits | ( | const cvec & | y,
|  | const cmat & | H,
|  | double | sigma2,
|  | const QLLRvec & | LLR_apriori,
|  | QLLRvec & | LLR_aposteriori,
|  | Soft_Demod_Method | method = `FULL_ENUM_LOGMAP`
| ) |  |

Soft demodulation wrapper function for various methods.

Soft demodulation wrapper function for various methods

Currently the following three demodulation methods are supported:

- FULL_ENUM_LOGMAP - exact demodulation, which use "brute-force" enumeration of all constellation points
  - FULL_ENUM_MAXLOG - max-log approximate demodulation, which use "brute-force" enumeration to find the constellation points that give the smallest euclidian distances
- ZF_LOGMAP - approximated methods with Zero-Forcing preprocessing, which sometimes tends to perform poorly, especially for poorly conditioned H

Parameters

  [in] | y | Received vector
  [in] | H | Channel matrix
  [in] | sigma2 | Noise variance per complex dimension, i.e. the sum of real and imaginary parts (typically )
  [in] | LLR_apriori | Vector of a priori LLR values per bit
  [out] | LLR_aposteriori | Vector of a posteriori LLR values
  [in] | method | Soft demodulation method

Definition at line 801 of file modulator_nd.cpp.

References demodulate_soft_bits(), H, init_soft_demodulator(), itpp::inv(), it_assert, itpp::Modulator_ND::k, itpp::ones_c(), itpp::real(), itpp::Array< T >::size(), itpp::sum(), itpp::zeros_i(), and itpp::Modulator_ND::ZF_LOGMAP.

## demodulate_soft_bits() [3/4]

QLLRvec itpp::Modulator_NCD::demodulate_soft_bits | ( | const cvec & | y,
|  | const cmat & | H,
|  | double | sigma2,
|  | const QLLRvec & | LLR_apriori,
|  | Soft_Demod_Method | method = `FULL_ENUM_LOGMAP`
| ) |  |

Soft demodulation wrapper function for various methods.

Currently the following three demodulation methods are supported:

- FULL_ENUM_LOGMAP - exact demodulation, which use "brute-force" enumeration of all constellation points
  - FULL_ENUM_MAXLOG - max-log approximate demodulation, which use "brute-force" enumeration to find the constellation points that give the smallest euclidian distances
- ZF_LOGMAP - approximated methods with Zero-Forcing preprocessing, which sometimes tends to perform poorly, especially for poorly conditioned H

Parameters

  [in] | y | Received vector
  [in] | H | Channel matrix
  [in] | sigma2 | Noise variance per complex dimension, i.e. the sum of real and imaginary parts (typically )
  [in] | LLR_apriori | Vector of a priori LLR values per bit
  [in] | method | Soft demodulation method

Returns
  Vector of a posteriori LLR values

Definition at line 831 of file modulator_nd.cpp.

References demodulate_soft_bits(), and H.

## demodulate_soft_bits() [4/4]

void itpp::Modulator_NCD::demodulate_soft_bits | ( | const cvec & | y,
|  | const cvec & | h,
|  | double | sigma2,
|  | const QLLRvec & | LLR_apriori,
|  | QLLRvec & | LLR_aposteriori
| ) |  |

Soft MAP demodulation for parallelchannels without crosstalk.

This function is a much faster equivalent to `demodulate_soft_bits` with . Its complexity is linear in the number of subchannels.

Definition at line 842 of file modulator_nd.cpp.

References it_assert, itpp::Modulator_ND::k, itpp::length(), itpp::Modulator_ND::llrcalc, itpp::Modulator_ND::M, itpp::Modulator_ND::nt, itpp::ones_i(), itpp::Modulator_ND::probabilities(), itpp::Array< T >::set_size(), itpp::Array< T >::size(), itpp::sqr(), itpp::sum(), symbols, itpp::LLR_calc_unit::to_qllr(), and itpp::Modulator_ND::update_LLR().

## hxnormupdate()

void itpp::Modulator_NCD::hxnormupdate | ( | itpp::cvec & | Hx,
|  | unsigned & | bitstring,
|  | unsigned & | ind,
|  | unsigned | bit
| ) |  |

protected

Definition at line 874 of file modulator_nd.cpp.

## yxnormupdate()

void itpp::Modulator_NCD::yxnormupdate | ( | double & | yx,
|  | itpp::QLLR & | lapr,
|  | unsigned & | bitstring,
|  | unsigned & | ind,
|  | unsigned | bit
| ) |  |

protected

Definition at line 895 of file modulator_nd.cpp.

## set_llrcalc()

void itpp::Modulator_ND::set_llrcalc | ( | LLR_calc_unit | llrcalc_in | ) |

inlineinherited

Set LLR calculation unit.

Definition at line 83 of file modulator_nd.h.

## get_llrcalc()

LLR_calc_unit itpp::Modulator_ND::get_llrcalc | ( |  | ) | const

inlineinherited

Get LLR calculation unit.

Definition at line 88 of file modulator_nd.h.

## get_dim()

int itpp::Modulator_ND::get_dim | ( |  | ) | const

inlineinherited

Get number of dimensions.

Definition at line 93 of file modulator_nd.h.

## get_k()

ivec itpp::Modulator_ND::get_k | ( |  | ) | const

inlineinherited

Get number of bits per modulation symbol per dimension.

Definition at line 98 of file modulator_nd.h.

## bits_per_symbol()

ivec itpp::Modulator_ND::bits_per_symbol | ( |  | ) | const

inlineinherited

Get number of bits per modulation symbol per dimension.

Definition at line 103 of file modulator_nd.h.

## get_M()

ivec itpp::Modulator_ND::get_M | ( |  | ) | const

inlineinherited

Get number of modulation symbols per dimension.

Definition at line 108 of file modulator_nd.h.

## get_bits2symbols()

Array< ivec > itpp::Modulator_ND::get_bits2symbols | ( |  | ) | const

inlineinherited

Get bit pattern in decimal.

Definition at line 113 of file modulator_nd.h.

## get_bitmap()

Array< bmat > itpp::Modulator_ND::get_bitmap | ( |  | ) | const

inlineinherited

Get Bit mapping table.

Definition at line 118 of file modulator_nd.h.

## probabilities() [1/2]

QLLRvec itpp::Modulator_ND::probabilities | ( | QLLR | l | ) |

protectedinherited

Convert LLR to log-probabilities.

Definition at line 53 of file modulator_nd.cpp.

References itpp::LLR_calc_unit::jaclog(), and itpp::Modulator_ND::llrcalc.

Referenced by demodulate_soft_bits(), itpp::Modulator_NRD::demodulate_soft_bits(), and itpp::Modulator_ND::probabilities().

## probabilities() [2/2]

Array< QLLRvec > itpp::Modulator_ND::probabilities | ( | const QLLRvec & | l | ) |

protectedinherited

Convert LLR to log-probabilities, vector version.

Definition at line 437 of file modulator_nd.cpp.

References itpp::length(), and itpp::Modulator_ND::probabilities().

## marginalize_bits()

void itpp::Modulator_ND::marginalize_bits | ( | itpp::QLLRvec & | llr,
|  | Soft_Demod_Method | method
| ) |  | const

protectedinherited

Marginalize (sum) over the bits.

Definition at line 124 of file modulator_nd.cpp.

References itpp::Modulator_ND::demodllrbit0(), itpp::Modulator_ND::demodllrbit1(), itpp::Modulator_ND::demodllrbit2(), itpp::Modulator_ND::demodmaxbit0(), itpp::Modulator_ND::demodmaxbit1(), itpp::Modulator_ND::demodmaxbit2(), itpp::Modulator_ND::FULL_ENUM_LOGMAP, itpp::Modulator_ND::FULL_ENUM_MAXLOG, it_error, itpp::LLR_calc_unit::jaclog(), itpp::Modulator_ND::llrcalc, itpp::Modulator_ND::nb, and itpp::Modulator_ND::Qnorms.

## demodllrbit0()

void itpp::Modulator_ND::demodllrbit0 | ( | itpp::QLLR & | llr | ) | const

protectedinherited

Hardcoded implementation of 1:st bit demodulation.

Definition at line 203 of file modulator_nd.cpp.

References itpp::LLR_calc_unit::jaclog(), itpp::Modulator_ND::llrcalc, itpp::Modulator_ND::nb, and itpp::Modulator_ND::Qnorms.

Referenced by itpp::Modulator_ND::marginalize_bits().

## demodllrbit1()

void itpp::Modulator_ND::demodllrbit1 | ( | itpp::QLLR & | llr | ) | const

protectedinherited

Hardcoded implementation of 2:nd bit demodulation.

Definition at line 222 of file modulator_nd.cpp.

References itpp::LLR_calc_unit::jaclog(), itpp::Modulator_ND::llrcalc, itpp::Modulator_ND::nb, and itpp::Modulator_ND::Qnorms.

Referenced by itpp::Modulator_ND::marginalize_bits().

## demodllrbit2()

void itpp::Modulator_ND::demodllrbit2 | ( | itpp::QLLR & | llr | ) | const

protectedinherited

Hardcoded implementation of 3:rd bit demodulation.

Definition at line 250 of file modulator_nd.cpp.

References itpp::LLR_calc_unit::jaclog(), itpp::Modulator_ND::llrcalc, itpp::Modulator_ND::nb, and itpp::Modulator_ND::Qnorms.

Referenced by itpp::Modulator_ND::marginalize_bits().

## demodmaxbit0()

void itpp::Modulator_ND::demodmaxbit0 | ( | itpp::QLLR & | maxllr | ) | const

protectedinherited

Hardcoded implementation of 1:st bit demodulation.

Definition at line 294 of file modulator_nd.cpp.

References itpp::Modulator_ND::nb, and itpp::Modulator_ND::Qnorms.

Referenced by itpp::Modulator_ND::marginalize_bits().

## demodmaxbit1()

void itpp::Modulator_ND::demodmaxbit1 | ( | itpp::QLLR & | maxllr | ) | const

protectedinherited

Hardcoded implementation of 2:nd bit demodulation.

Definition at line 320 of file modulator_nd.cpp.

References itpp::Modulator_ND::nb, and itpp::Modulator_ND::Qnorms.

Referenced by itpp::Modulator_ND::marginalize_bits().

## demodmaxbit2()

void itpp::Modulator_ND::demodmaxbit2 | ( | itpp::QLLR & | maxllr | ) | const

protectedinherited

Hardcoded implementation of 3:rd bit demodulation.

Definition at line 362 of file modulator_nd.cpp.

References itpp::Modulator_ND::nb, and itpp::Modulator_ND::Qnorms.

Referenced by itpp::Modulator_ND::marginalize_bits().

## 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
| ) |  |

protectedinherited

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 itpp::Modulator_ND::bitmap, itpp::LLR_calc_unit::jaclog(), itpp::Modulator_ND::k, itpp::Modulator_ND::llrcalc, and itpp::Modulator_ND::nt.

Referenced by 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
| ) |  |

protectedinherited

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 itpp::Modulator_ND::bitmap, itpp::LLR_calc_unit::jaclog(), itpp::Modulator_ND::k, and itpp::Modulator_ND::llrcalc.

## Friends And Related Symbol Documentation

## operator<< [1/2]

ITPP_EXPORT std::ostream & operator<< | ( | std::ostream & | os,
|  | const Modulator_NCD & | m
| ) |  |

friend

Print some properties of the MIMO modulator (mainly to aid debugging)

Definition at line 923 of file modulator_nd.cpp.

## operator<<() [2/2]

ITPP_EXPORT std::ostream & operator<< | ( | std::ostream & | os,
|  | const Modulator_NCD & | m
| ) |  |

related

Print some properties of the MIMO modulator (mainly to aid debugging)

Definition at line 923 of file modulator_nd.cpp.

## Member Data Documentation

## symbols

Array<cvec> itpp::Modulator_NCD::symbols

protected

Vectors of modulation symbols (along each dimension)

Definition at line 591 of file modulator_nd.h.

Referenced by demodulate_soft_bits(), get_symbols(), init_soft_demodulator(), modulate_bits(), itpp::ND_UQAM::set_constellation_points(), itpp::ND_UQAM::set_M(), and itpp::ND_UPSK::set_M().

## H

itpp::cmat itpp::Modulator_NCD::H

protected

Complex-valued channel matrix.

Definition at line 593 of file modulator_nd.h.

Referenced by demodulate_soft_bits(), demodulate_soft_bits(), and init_soft_demodulator().

## hspacings

itpp::Array<itpp::Array<itpp::cvec> > itpp::Modulator_NCD::hspacings

protected

The spacing between different constellation points multiplied by the different H columns.

Definition at line 595 of file modulator_nd.h.

Referenced by init_soft_demodulator().

## yspacings

itpp::Array<itpp::vec> itpp::Modulator_NCD::yspacings

protected

The spacing between different constellation points scaled by different y elements.

Definition at line 597 of file modulator_nd.h.

Referenced by init_soft_demodulator().

## nt

int itpp::Modulator_ND::nt

protectedinherited

Number of dimensions.

Definition at line 124 of file modulator_nd.h.

Referenced by demodulate_soft_bits(), itpp::Modulator_NRD::demodulate_soft_bits(), itpp::Modulator_NRD::get_symbols(), get_symbols(), init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), itpp::Modulator_NRD::modulate_bits(), modulate_bits(), modulate_bits(), itpp::Modulator_NRD::modulate_bits(), itpp::ND_UPAM::ND_UPAM(), itpp::ND_UPSK::ND_UPSK(), itpp::ND_UQAM::ND_UQAM(), itpp::ND_UQAM::set_constellation_points(), itpp::ND_UPAM::set_M(), itpp::ND_UQAM::set_M(), itpp::ND_UPSK::set_M(), itpp::ND_UPAM::set_M(), itpp::ND_UQAM::set_M(), itpp::ND_UPSK::set_M(), itpp::ND_UPAM::sphere_decoding(), and itpp::Modulator_ND::update_LLR().

## nb

int itpp::Modulator_ND::nb

protectedinherited

Number of bits in the symbol vector.

Definition at line 126 of file modulator_nd.h.

Referenced by itpp::Modulator_ND::demodllrbit0(), itpp::Modulator_ND::demodllrbit1(), itpp::Modulator_ND::demodllrbit2(), itpp::Modulator_ND::demodmaxbit0(), itpp::Modulator_ND::demodmaxbit1(), itpp::Modulator_ND::demodmaxbit2(), init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), and itpp::Modulator_ND::marginalize_bits().

## llrcalc

LLR_calc_unit itpp::Modulator_ND::llrcalc

protectedinherited

LLR calculation unit.

Definition at line 128 of file modulator_nd.h.

Referenced by itpp::Modulator_ND::demodllrbit0(), itpp::Modulator_ND::demodllrbit1(), itpp::Modulator_ND::demodllrbit2(), demodulate_soft_bits(), itpp::Modulator_NRD::demodulate_soft_bits(), itpp::Modulator_ND::marginalize_bits(), itpp::Modulator_ND::probabilities(), itpp::Modulator_ND::update_LLR(), itpp::Modulator_ND::update_LLR(), and itpp::Modulator_NRD::yxnormupdate().

## k

ivec itpp::Modulator_ND::k

protectedinherited

Number of bits per modulation symbol.

Definition at line 130 of file modulator_nd.h.

Referenced by demodulate_soft_bits(), demodulate_soft_bits(), itpp::Modulator_NRD::demodulate_soft_bits(), itpp::Modulator_NRD::demodulate_soft_bits(), init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), modulate_bits(), itpp::Modulator_NRD::modulate_bits(), itpp::ND_UQAM::set_constellation_points(), itpp::ND_UPAM::set_M(), itpp::ND_UQAM::set_M(), itpp::ND_UPSK::set_M(), itpp::ND_UPAM::sphere_decoding(), itpp::Modulator_ND::update_LLR(), and itpp::Modulator_ND::update_LLR().

## M

ivec itpp::Modulator_ND::M

protectedinherited

Number of modulation symbols along each dimension.

Definition at line 132 of file modulator_nd.h.

Referenced by demodulate_soft_bits(), itpp::Modulator_NRD::demodulate_soft_bits(), itpp::Modulator_NRD::get_symbols(), get_symbols(), itpp::Modulator_NRD::hxnormupdate(), init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), itpp::ND_UQAM::set_constellation_points(), itpp::ND_UPAM::set_M(), itpp::ND_UQAM::set_M(), itpp::ND_UPSK::set_M(), itpp::ND_UPAM::sphere_decoding(), and itpp::Modulator_NRD::yxnormupdate().

## demod_initialized

bool itpp::Modulator_ND::demod_initialized

protectedinherited

Flag indicating whether the demodulator has been initialized.

Definition at line 134 of file modulator_nd.h.

Referenced by init_soft_demodulator(), and itpp::Modulator_NRD::init_soft_demodulator().

## bitmap

Array<bmat> itpp::Modulator_ND::bitmap

protectedinherited

Bit mapping table (one table per dimension)

Definition at line 136 of file modulator_nd.h.

Referenced by itpp::ND_UQAM::set_constellation_points(), itpp::ND_UPAM::set_M(), itpp::ND_UQAM::set_M(), itpp::ND_UPSK::set_M(), itpp::ND_UPAM::sphere_decoding(), itpp::Modulator_ND::update_LLR(), and itpp::Modulator_ND::update_LLR().

## bits2symbols

Array<ivec> itpp::Modulator_ND::bits2symbols

protectedinherited

Bit pattern in decimal form ordered and the corresponding symbols (one pattern per dimension)

Definition at line 138 of file modulator_nd.h.

Referenced by init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), modulate_bits(), itpp::Modulator_NRD::modulate_bits(), itpp::ND_UQAM::set_constellation_points(), itpp::ND_UPAM::set_M(), itpp::ND_UQAM::set_M(), and itpp::ND_UPSK::set_M().

## gaussnorm

double itpp::Modulator_ND::gaussnorm

protectedinherited

The normalization factor in the exponent (in front of the square norm) in the Gaussian distribution.

Definition at line 140 of file modulator_nd.h.

Referenced by init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), and itpp::Modulator_NRD::yxnormupdate().

## hnorms

itpp::vec itpp::Modulator_ND::hnorms

protectedinherited

Norms part dependent on H.

Definition at line 142 of file modulator_nd.h.

Referenced by itpp::Modulator_NRD::hxnormupdate(), init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), and itpp::Modulator_NRD::yxnormupdate().

## Qnorms

itpp::QLLRvec itpp::Modulator_ND::Qnorms

protectedinherited

Norms part depending on both H and y.

Definition at line 144 of file modulator_nd.h.

Referenced by itpp::Modulator_ND::demodllrbit0(), itpp::Modulator_ND::demodllrbit1(), itpp::Modulator_ND::demodllrbit2(), itpp::Modulator_ND::demodmaxbit0(), itpp::Modulator_ND::demodmaxbit1(), itpp::Modulator_ND::demodmaxbit2(), init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), itpp::Modulator_ND::marginalize_bits(), and itpp::Modulator_NRD::yxnormupdate().

## llrapr

itpp::QLLRvec itpp::Modulator_ND::llrapr

protectedinherited

A prioi information.

Definition at line 146 of file modulator_nd.h.

Referenced by itpp::Modulator_NRD::yxnormupdate().

## bpos2cpos

itpp::ivec itpp::Modulator_ND::bpos2cpos

protectedinherited

The bit to column mapping.

Definition at line 148 of file modulator_nd.h.

Referenced by itpp::Modulator_NRD::hxnormupdate(), init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), and itpp::Modulator_NRD::yxnormupdate().

## bitcumsum

itpp::ivec itpp::Modulator_ND::bitcumsum

protectedinherited

The cumulative sum of bits in the symbol vector.

Definition at line 150 of file modulator_nd.h.

Referenced by itpp::Modulator_NRD::hxnormupdate(), init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), and itpp::Modulator_NRD::yxnormupdate().

## gray2dec

itpp::Array<itpp::Vec<unsigned> > itpp::Modulator_ND::gray2dec

protectedinherited

The Gray to decimal mapping.

Definition at line 152 of file modulator_nd.h.

Referenced by itpp::Modulator_NRD::hxnormupdate(), init_soft_demodulator(), itpp::Modulator_NRD::init_soft_demodulator(), and itpp::Modulator_NRD::yxnormupdate().

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

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

Generated on Mon Jun 10 2024 11:49:37 for IT++ by Doxygen 1.9.8