#include <itpp/comm/ldpc.h>
This class provides a basic set of functions needed to represent a parity check matrix, which defines an LDPC code. This class is used as base class for a set of specific LDPC parity check matrix classes, e.g. regular or irregular LDPC codes.
This class stores a parity check matrix as a sparse matrix. The transpose of the matrix is also stored to enable efficient access to its rows.
All parity check matrices can be loaded from (saved to) a file by converting them from (to) a portable GF2mat_sparse_alist
format.
However, typically one will want to create a LDPC_Code
from the parity check matrix (and optionally a generator) and save the codec binary data instead.
Please refer to the tutorial Generation of LDPC codes for some examples of code generation.
Definition at line 70 of file ldpc.h.
Public Member Functions | |
LDPC_Parity () | |
Default constructor. | |
LDPC_Parity (int ncheck, int nvar) | |
Constructor that gives an empty matrix of size ncheck x nvar. | |
LDPC_Parity (const std::string &filename, const std::string &format) | |
Load an LDPC parity check matrix from a file. | |
LDPC_Parity (const GF2mat_sparse_alist &alist) | |
Constructor, from a GF2mat_sparse_alist object. | |
virtual | ~LDPC_Parity () |
Virtual destructor. | |
void | initialize (int ncheck, int nvar) |
Initialize an empty matrix of size ncheck x nvar. | |
GF2mat_sparse | get_H (bool transpose=false) const |
Get the parity check matrix, optionally its transposed form. | |
Sparse_Vec< bin > | get_col (int c) const |
Get a specific column from the matrix. | |
Sparse_Vec< bin > | get_row (int r) const |
Get a specific row from the matrix. | |
int | get_nvar () const |
Get the number of variable nodes (number of columns). | |
int | get_ncheck () const |
Get the number of check nodes (number of rows). | |
void | set (int i, int j, bin value) |
Set element (i,j) of the parity check matrix to value. | |
bin | get (int i, int j) const |
Get element (i,j) of the parity check matrix. | |
bin | operator() (int i, int j) const |
Get element (i,j) of the parity check matrix. | |
virtual void | display_stats () const |
Display some information about the matrix. | |
double | get_rate () const |
Get the code rate. | |
void | import_alist (const GF2mat_sparse_alist &H_alist) |
Import matrix from GF2mat_sparse_alist format. | |
GF2mat_sparse_alist | export_alist () const |
Export matrix to GF2mat_sparse_alist format. | |
void | load_alist (const std::string &alist_file) |
Load matrix from alist_file text file in alist format. | |
void | save_alist (const std::string &alist_file) const |
Save matrix to alist_file text file in alist format. | |
Protected Member Functions | |
int | check_for_cycles (int L) const |
Check for cycles of length L. | |
int | check_connectivity (int from_m, int from_n, int to_m, int to_n, int g, int L) const |
Check for connectivity between nodes. | |
Protected Attributes | |
bool | init_flag |
Flag that indicates proper initialization. | |
GF2mat_sparse | H |
The parity check matrix. | |
GF2mat_sparse | Ht |
The transposed parity check matrix. | |
int | nvar |
Number of variable nodes. | |
int | ncheck |
Number of check nodes. | |
ivec | sumX1 |
Actual number of ones in each column. | |
ivec | sumX2 |
Actual number of ones in each row. | |
Static Protected Attributes | |
static const int | Nmax = 200 |
Maximum node degree class can handle. | |
Friends | |
class | LDPC_Code |
itpp::LDPC_Parity::LDPC_Parity | ( | const std::string & | filename, | |
const std::string & | format | |||
) |
Load an LDPC parity check matrix from a file.
filename | file name | |
format | file format |
GF2mat_sparse_alist
for its definition).load_alist()
and save_alist()
Definition at line 55 of file ldpc.cpp.
References it_error, and load_alist().
int itpp::LDPC_Parity::check_for_cycles | ( | int | L | ) | const [protected] |
Check for cycles of length L.
This function implements a recursive routine to find loops. The function is mainly a tool for testing and debugging more sophisticated functions for graph manipulation.
L | length of cycles to look for |
Definition at line 248 of file ldpc.cpp.
References check_connectivity(), get_col(), init_flag, it_assert, itpp::length(), and nvar.
int itpp::LDPC_Parity::check_connectivity | ( | int | from_m, | |
int | from_n, | |||
int | to_m, | |||
int | to_n, | |||
int | g, | |||
int | L | |||
) | const [protected] |
Check for connectivity between nodes.
This function examines whether the point (to_m, to_n) in the matrix can be reached from the point (from_m, from_n) using at most L steps. A recursive search is used.
The function can be used to search for cycles in the matrix. To search for a cycle of length L, set from_m=to_m and from_n=to_n, and godir=0.
from_m | starting coordinate, row number | |
to_m | goal coordinate, row number | |
from_n | starting coordinate, column number | |
to_n | goal coordinate, row number | |
g | direction: 1=start going vertically, 2=start going horizontally | |
L | number of permitted steps |
Definition at line 191 of file ldpc.cpp.
References get_col(), get_row(), init_flag, it_assert, and itpp::length().
Referenced by check_for_cycles(), and itpp::LDPC_Parity_Unstructured::generate_random_H().
Generated on Sat Apr 19 10:44:03 2008 for IT++ by Doxygen 1.5.5