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