Base class for an N-dimensional (ND) vector (MIMO) modulator. More...
#include <itpp/comm/modulator_nd.h>
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) | |
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. | |
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. | |
Base class for an N-dimensional (ND) vector (MIMO) modulator.
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.LLR_calc_unit
Definition at line 63 of file modulator_nd.h.
Soft demodulation method.
Definition at line 67 of file modulator_nd.h.
|
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 |
Definition at line 94 of file modulator_nd.cpp.
References bitmap, itpp::LLR_calc_unit::jaclog(), k, llrcalc, and nt.
Referenced by itpp::Modulator_NRD::demodulate_soft_bits(), and itpp::Modulator_NCD::demodulate_soft_bits().
|
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 |
Definition at line 68 of file modulator_nd.cpp.
References bitmap, itpp::LLR_calc_unit::jaclog(), k, and llrcalc.
Generated on Sat Jul 6 2013 10:54:33 for IT++ by Doxygen 1.8.2