itpp::LDPC_Generator_Systematic Class Reference

Systematic LDPC Generator class. More...

#include <ldpc.h>

List of all members.

Public Member Functions

 LDPC_Generator_Systematic ()
 Default constructor.
 LDPC_Generator_Systematic (LDPC_Parity *const H, bool natural_ordering=false, const ivec &ind="")
 Parametrized constructor.
virtual ~LDPC_Generator_Systematic ()
 Virtual destructor.
virtual void encode (const bvec &input, bvec &output)
 Generator specific encode function.
ivec construct (LDPC_Parity *const H, bool natural_ordering=false, const ivec &ind="")
 Construct systematic generator matrix.
std::string get_type () const
 Return generator type.

Protected Member Functions

virtual void save (const std::string &filename) const
 Save generator data to a file.
virtual void load (const std::string &filename)
 Read generator data from a file.

Protected Attributes

bool init_flag
 True if generator is initialized.
std::string type
 Generator type.


Detailed Description

Systematic LDPC Generator class.

A generator is basically a dense GF(2) matrix with a constructor that can create the generator matrix from a parity check matrix.

Note:
Please refer to the tutorials for examples of how to use this class.
Author:
Erik G. Larsson and Adam Piatyszek

Member Function Documentation

ivec itpp::LDPC_Generator_Systematic::construct ( LDPC_Parity *const   H,
bool  natural_ordering = false,
const ivec &  ind = "" 
)

Construct systematic generator matrix.

This function constructs a systematic generator matrix from a parity check matrix (LDPC_Parity). The order of the columns is randomized unless otherwise requested via the natural_ordering parameter.

Parameters:
H A pointer to the parity check matrix H
natural_ordering If this flag is true, the columns are not randomly reordered (no interleaving applied), i.e. the function tries so far as possible to avoid permuting columns at all. The permutation takes place only if absolutely necessary.
ind Vector of column indices (variable nodes) to avoid in the systematic part. If this vector is supplied, the algorithm then avoids to use variable nodes corresponding to this index vector as systematic bits. This can be used for example to avoid using variable nodes of a low degree as systematic bits. This parameter is ignored if the natural_ordering flag is set.
Returns:
This function returns the permutation vector P on the variable nodes that was necessary to construct a full rank generator. This is the permutation which effectively has been applied to the columns of H. The k-th column of the original H is the P(k)-th column of the rearranged H.
Note:
This function modifies the parity check matrix H. Its columns may be sorted so that it gets the structure $ H = [H_{1} H_{2}] $ where $ H_{2} $ is square and invertible. The computed generator then satisfies $ [H_{1} H_{2}][I; G'] = 0 $.

References itpp::GF2mat::concatenate_horizontal(), itpp::GF2mat::get(), itpp::LDPC_Parity::get_H(), itpp::LDPC_Parity::get_ncheck(), itpp::LDPC_Parity::get_nvar(), itpp::LDPC_Generator::init_flag, itpp::GF2mat::inverse(), it_assert_debug, it_error_if, it_info_debug, itpp::length(), itpp::randu(), itpp::rank(), itpp::LDPC_Parity::set(), itpp::GF2mat::T_fact(), itpp::GF2mat::T_fact_update_addcol(), itpp::GF2mat::transpose(), and itpp::transpose().

Referenced by LDPC_Generator_Systematic().


The documentation for this class was generated from the following files:

Generated on Tue Jun 2 10:02:19 2009 for mixpp by  doxygen 1.5.8