#include <rec_syst_conv_code.h>
Public Member Functions | |
Rec_Syst_Conv_Code (void) | |
Class constructor. | |
void | set_generator_polynomials (const ivec &gen, int constraint_length) |
Set generator polynomials. | |
void | set_awgn_channel_parameters (double in_Ec, double in_N0) |
Sets the channel parameters needed for MAP-decoding. | |
void | set_scaling_factor (double in_Lc) |
Set scaling factor for the decoder. | |
void | encode_tail (const bvec &input, bvec &tail, bmat &parity_bits) |
Encode a binary vector of inputs and also adds a tail of K-1 zeros to force the encoder into the zero state. | |
void | encode (const bvec &input, bmat &parity_bits) |
Encode a binary vector of inputs starting from zero state without adding of a tail. | |
void | map_decode (const vec &rec_systematic, const mat &rec_parity, const vec &extrinsic_input, vec &extrinsic_output, bool set_terminated=false) |
Maximum Aposteriori Probability symbol-by-symbol decoder. | |
void | log_decode (const vec &rec_systematic, const mat &rec_parity, const vec &extrinsic_input, vec &extrinsic_output, bool set_terminated=false, string metric="LOGMAX") |
Log domain implementation of the Maximum Aposteriori Probability symbol-by-symbol decoder. | |
void | log_decode_n2 (const vec &rec_systematic, const vec &rec_parity, const vec &extrinsic_input, vec &extrinsic_output, bool in_terminated=false, string metric="LOGMAX") |
Special Log-MAP/Log-MAX decoder implementation for n = 2. |
The main purpose of this class is its use un the Turbo_Codec class which uses two recursive systematic convolutional encoders. It can however be used as a stand alone class. The map_decode member function implementation follows the paper "A Turbo Code Tutorial" by William E. Ryan, New Mexico State University. This paper was found on the web and is probably unpublished.
|
Class constructor.
|
|
Encode a binary vector of inputs starting from zero state without adding of a tail.
|
|
Encode a binary vector of inputs and also adds a tail of K-1 zeros to force the encoder into the zero state. The encoder remembers that the trellis is terminated in the zero state at the end of the input block. This is then utilized by the decoder when going through the trellis in the reverse direction. The tailbits used are returned in tail. Parity bits for both the input part and the tail part of the data are returned in the matrix parity bits. |
|
Log domain implementation of the Maximum Aposteriori Probability symbol-by-symbol decoder. The extrinsic_input is the a priori information on each systematic bit. If no a priori information is availiable, this vector should contain only zeros. The extrinsic_output term may be passed to a subsequent decoder in a Turbo scheme. The decision variable is L = Lc*rec_systematic + extrinsic_output Lc = 4*sqrt(Ec)/N0
|
|
Special Log-MAP/Log-MAX decoder implementation for n = 2.
|
|
Maximum Aposteriori Probability symbol-by-symbol decoder. The extrinsic_input is the a priori information on each systematic bit. If no a priori information is availiable, this vector should contain only zeros. The extrinsic_output term may be passed to a subsequent decoder in a Turbo scheme. The decision variable is L = Lc*rec_systematic + extrinsic_output Lc = 4*sqrt(Ec)/N0
|
|
Sets the channel parameters needed for MAP-decoding.
|
|
Set generator polynomials. The generator polynomials are given in Proakis integer form. First generator (gen(0)) is the recursive polynomial.
|
|
Set scaling factor for the decoder.
|