rec_syst_conv_code.h
Go to the documentation of this file.
#ifndef REC_SYST_CONV_CODE_H
#define REC_SYST_CONV_CODE_H
#include <itpp/base/vec.h>
#include <itpp/base/mat.h>
#include <itpp/comm/convcode.h>
#include <itpp/comm/llr.h>
#include <itpp/itexports.h>
namespace itpp
{
class ITPP_EXPORT Rec_Syst_Conv_Code
{
public:
Rec_Syst_Conv_Code(): infinity(1e30) {}
virtual ~Rec_Syst_Conv_Code() {}
void set_generator_polynomials(const ivec &gen, int constraint_length);
void set_awgn_channel_parameters(double Ec, double N0);
void set_scaling_factor(double in_Lc);
void set_llrcalc(LLR_calc_unit in_llrcalc);
void encode_tail(const bvec &input, bvec &tail, bmat &parity_bits);
void encode(const bvec &input, bmat &parity_bits);
virtual void map_decode(const vec &rec_systematic, const mat &rec_parity, const vec &extrinsic_input, vec &extrinsic_output,
bool set_terminated = false);
virtual void log_decode(const vec &rec_systematic, const mat &rec_parity, const vec &extrinsic_input,
vec &extrinsic_output, bool set_terminated = false, std::string metric = "LOGMAX");
virtual void log_decode_n2(const vec &rec_systematic,
const vec &rec_parity,
const vec &extrinsic_input,
vec &extrinsic_output,
bool set_terminated = false,
std::string metric = "LOGMAX");
// ===== EGL: ADDED FUNCTIONS NOV 2005 (THESE ARE DERIVATIVES OF EXISTING FUNCTIONS) ======
virtual void log_decode(const QLLRvec &rec_systematic,
const QLLRmat &rec_parity,
const QLLRvec &extrinsic_input,
QLLRvec &extrinsic_output,
bool set_terminated = false);
virtual void log_decode_n2(const QLLRvec &rec_systematic,
const QLLRvec &rec_parity,
const QLLRvec &extrinsic_input,
QLLRvec &extrinsic_output,
bool set_terminated = false);
// ========================================================
Rec_Syst_Conv_Code & operator=(const Rec_Syst_Conv_Code &) { return *this; }
private:
int calc_state_transition(const int instate, const int input, ivec &parity);
int n, K, m;
ivec gen_pol, gen_pol_rev;
int encoder_state, Nstates;
double rate, Lc;
imat state_trans, output_parity, rev_state_trans, rev_output_parity;
bool terminated;
double ln2;
LLR_calc_unit llrcalc;
// This const value replaces INT definition used previously
const double infinity;
};
} // namespace itpp
#endif // #ifndef REC_SYST_CONV_CODE_H
convcode.h
Definition of a binary convolutional encoder class.
itpp::Rec_Syst_Conv_Code
A Recursive Systematic Convolutional Encoder/Decoder class.
Definition: rec_syst_conv_code.h:51
itpp::Rec_Syst_Conv_Code::operator=
Rec_Syst_Conv_Code & operator=(const Rec_Syst_Conv_Code &)
Dummy assignment operator - MSVC++ warning C4512.
Definition: rec_syst_conv_code.h:206
mat.h
Matrix Class Definitions.
llr.h
Class for numerically efficient log-likelihood algebra.
itpp
itpp namespace
Definition: itmex.h:36
itpp::LLR_calc_unit
Log-likelihood algebra calculation unit.
Definition: llr.h:124
itpp::Rec_Syst_Conv_Code::Rec_Syst_Conv_Code
Rec_Syst_Conv_Code()
Class constructor.
Definition: rec_syst_conv_code.h:56
itpp::Rec_Syst_Conv_Code::~Rec_Syst_Conv_Code
virtual ~Rec_Syst_Conv_Code()
Class constructor.
Definition: rec_syst_conv_code.h:59
bmat
Mat< bin > bmat
bin matrix
Definition: mat.h:508
vec.h
Templated Vector Class Definitions.

Generated on Sat Sep 30 2017 07:04:09 for IT++ by Doxygen 1.8.13