itpp::LDPC_Generator_Systematic Class Reference

Systematic LDPC Generator class. More...

`#include <itpp/comm/ldpc.h>`

Inheritance diagram for itpp::LDPC_Generator_Systematic:

## 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. More...
std::string | get_type () const
| Return generator type.
void | mark_initialized ()
| Mark generator as initialized.
bool | is_initialized () const
| Check if generator is initialized.

## 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.

## 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

Definition at line 570 of file ldpc.h.

## 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 where is square and invertible. The computed generator then satisfies .

Definition at line 894 of file ldpc.cpp.

References itpp::GF2mat::concatenate_horizontal(), itpp::GF2mat::get(), itpp::LDPC_Parity::get_H(), itpp::LDPC_Parity::get_ncheck(), itpp::LDPC_Parity::get_nvar(), itpp::gf2dense_eye(), itpp::GF2mat::inverse(), it_assert_debug, it_error_if, it_info_debug, itpp::length(), itpp::LDPC_Generator::mark_initialized(), itpp::randu(), 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:

- itpp/comm/ldpc.h
- itpp/comm/ldpc.cpp

Generated on Thu Aug 20 2015 21:02:53 for IT++ by Doxygen 1.8.9.1