#include <modulator_nd.h>
Public Types | |
| enum | Soft_Demod_Method { FULL_ENUM_LOGMAP, ZF_LOGMAP } |
| Soft demodulation method. More... | |
Public Member Functions | |
| Modulator_ND (LLR_calc_unit llrcalc_in=LLR_calc_unit()) | |
| Default constructor. | |
| ~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 | get_M () const |
| Get number of modulation symbols per dimension. | |
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 | 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 | |
| int | nt |
| Number of dimensions. | |
| LLR_calc_unit | llrcalc |
| LLR calculation unit. | |
| ivec | k |
| Number of bits per modulation symbol. | |
| ivec | M |
| Number of modulation symbols along each dimension. | |
| 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). | |
See ND_UPAM class for examples.
Modulator_1D or Modulator_2D. Mixed use of Modulator_1D or Modulator_2D and Modulator_ND is not advised.
| 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
| [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 |
References bitmap, itpp::LLR_calc_unit::jaclog(), k, and llrcalc.
| 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
| [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 |
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().
1.5.8