IT++ Logo
exit.h
Go to the documentation of this file.
1
29#ifndef EXIT_H
30#define EXIT_H
31
32#include <itpp/itbase.h>
33#include <itpp/comm/modulator.h> //BPSK class for a priori information generation
34#include <itpp/itexports.h>
35
36namespace itpp
37{
38
55class ITPP_EXPORT EXIT
56{
57public:
59
61 double apriori_mutual_info(const double &in_sigma2A,
62 const double &lim=100
63 )
64 {
65 _gaussian_fct = Gaussian_Fct(in_sigma2A);
66 return 1.0-itpp::quad(_gaussian_fct, -lim, lim);
67 };
69
72 itpp::vec generate_apriori_info(const itpp::bvec &bits)
73 {
74 itpp::BPSK bpsk;
75 double sigma2A = _gaussian_fct.sigma();
76 return (-sigma2A/2)*bpsk.modulate_bits(bits)+std::sqrt(sigma2A)*itpp::randn(bits.length());
77 };
79
82 double extrinsic_mutual_info(const itpp::vec &obs,
83 const itpp::bvec &cond,
84 const int &N=100
85 );
86private:
87 class ITPP_EXPORT Gaussian_Fct
88 {
89 double _sigma;
90 public:
91 Gaussian_Fct(): _sigma(0.0){}
92 Gaussian_Fct(double sigma): _sigma(sigma){}
93 double sigma() const {return _sigma;}
94 double operator()(double x) const;
95 };
96 Gaussian_Fct _gaussian_fct;
97};
98
99}
100#endif /* EXIT_H_ */
BPSK modulator with real symbols.
Definition: modulator.h:877
void modulate_bits(const bvec &bits, vec &output) const
Modulate bits into BPSK symbols in complex domain.
Definition: modulator.cpp:310
EXtrinsic Information Transfer (EXIT) chart.
Definition: exit.h:56
itpp::vec generate_apriori_info(const itpp::bvec &bits)
Generates a priori information assuming a Gaussian distribution of the a priori information.
Definition: exit.h:72
double apriori_mutual_info(const double &in_sigma2A, const double &lim=100)
Computes the a priori mutual information.
Definition: exit.h:61
vec sqrt(const vec &x)
Square root of the elements.
Definition: elem_math.h:123
double randn(void)
Generates a random Gaussian (0,1) variable.
Definition: random.h:831
Include file for the IT++ base module.
One- and two-dimensional modulators - header file.
itpp namespace
Definition: itmex.h:37
double quad(Ftn f, double a, double b, double tol=std::numeric_limits< double >::epsilon())
Definition: integration.h:162

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