00001 00029 #ifndef EXIT_H 00030 #define EXIT_H 00031 00032 #include <itpp/itbase.h> 00033 #include <itpp/comm/modulator.h> //BPSK class for a priori information generation 00034 00035 namespace itpp 00036 { 00037 00054 class EXIT 00055 { 00056 public: 00058 00060 double apriori_mutual_info(const double &in_sigma2A, 00061 const double &lim=100 00062 ) 00063 { 00064 sigma2A = in_sigma2A; 00065 return 1.0-itpp::quad(&gaussian_fct, -lim, lim); 00066 }; 00068 00071 itpp::vec generate_apriori_info(const itpp::bvec &bits) 00072 { 00073 itpp::BPSK bpsk; 00074 return (-sigma2A/2)*bpsk.modulate_bits(bits)+std::sqrt(sigma2A)*itpp::randn(bits.length()); 00075 }; 00077 00080 double extrinsic_mutual_info(const itpp::vec &obs, 00081 const itpp::bvec &cond, 00082 const int &N=100 00083 ); 00084 private: 00085 static double sigma2A; 00086 friend double itpp::quad(double (*f)(double), double a, double b, double tol); 00087 static double gaussian_fct(const double x); 00088 }; 00089 00090 } 00091 #endif /* EXIT_H_ */
Generated on Wed Jul 27 2011 16:27:04 for IT++ by Doxygen 1.7.4