root/doc/html/classitpp_1_1LDPC__Parity.html @ 354

Revision 353, 31.0 kB (checked in by smidl, 15 years ago)

doc

Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>mixpp: itpp::LDPC_Parity Class Reference</title>
4<link href="tabs.css" rel="stylesheet" type="text/css">
5<link href="doxygen.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.8 -->
8<script type="text/javascript">
9<!--
10function changeDisplayState (e){
11  var num=this.id.replace(/[^[0-9]/g,'');
12  var button=this.firstChild;
13  var sectionDiv=document.getElementById('dynsection'+num);
14  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
15    sectionDiv.style.display='block';
16    button.src='open.gif';
17  }else{
18    sectionDiv.style.display='none';
19    button.src='closed.gif';
20  }
21}
22function initDynSections(){
23  var divs=document.getElementsByTagName('div');
24  var sectionCounter=1;
25  for(var i=0;i<divs.length-1;i++){
26    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
27      var header=divs[i];
28      var section=divs[i+1];
29      var button=header.firstChild;
30      if (button!='IMG'){
31        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
32        button=document.createElement('img');
33        divs[i].insertBefore(button,divs[i].firstChild);
34      }
35      header.style.cursor='pointer';
36      header.onclick=changeDisplayState;
37      header.id='dynheader'+sectionCounter;
38      button.src='closed.gif';
39      section.id='dynsection'+sectionCounter;
40      section.style.display='none';
41      section.style.marginLeft='14px';
42      sectionCounter++;
43    }
44  }
45}
46window.onload = initDynSections;
47-->
48</script>
49<div class="navigation" id="top">
50  <div class="tabs">
51    <ul>
52      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
53      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
54      <li><a href="modules.html"><span>Modules</span></a></li>
55      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
56      <li><a href="files.html"><span>Files</span></a></li>
57    </ul>
58  </div>
59  <div class="tabs">
60    <ul>
61      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
62      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
63      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
64      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
65    </ul>
66  </div>
67  <div class="navpath"><b>itpp</b>::<a class="el" href="classitpp_1_1LDPC__Parity.html">LDPC_Parity</a>
68  </div>
69</div>
70<div class="contents">
71<h1>itpp::LDPC_Parity Class Reference</h1><!-- doxytag: class="itpp::LDPC_Parity" -->LDPC parity check matrix generic class. 
72<a href="#_details">More...</a>
73<p>
74<code>#include &lt;<a class="el" href="ldpc_8h-source.html">ldpc.h</a>&gt;</code>
75<p>
76
77<p>
78<a href="classitpp_1_1LDPC__Parity-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
79<tr><td></td></tr>
80<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
81<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ae2282a30cfe515f65b1f176857e235"></a><!-- doxytag: member="itpp::LDPC_Parity::LDPC_Parity" ref="3ae2282a30cfe515f65b1f176857e235" args="()" -->
82&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#3ae2282a30cfe515f65b1f176857e235">LDPC_Parity</a> ()</td></tr>
83
84<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <br></td></tr>
85<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="28c28ab1e573c4a406f9ad81c1a69285"></a><!-- doxytag: member="itpp::LDPC_Parity::LDPC_Parity" ref="28c28ab1e573c4a406f9ad81c1a69285" args="(int ncheck, int nvar)" -->
86&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#28c28ab1e573c4a406f9ad81c1a69285">LDPC_Parity</a> (int <a class="el" href="classitpp_1_1LDPC__Parity.html#82403ae65de864fdbe4fcdd4d83caff2">ncheck</a>, int <a class="el" href="classitpp_1_1LDPC__Parity.html#7e8697111c53562022e2f367593366c7">nvar</a>)</td></tr>
87
88<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor that gives an empty matrix of size ncheck x nvar. <br></td></tr>
89<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#ee1053169c321751ce26b714328b5a9a">LDPC_Parity</a> (const std::string &amp;filename, const std::string &amp;format)</td></tr>
90
91<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load an LDPC parity check matrix from a file.  <a href="#ee1053169c321751ce26b714328b5a9a"></a><br></td></tr>
92<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="27ec64912cd5118a753f18e626cb4110"></a><!-- doxytag: member="itpp::LDPC_Parity::LDPC_Parity" ref="27ec64912cd5118a753f18e626cb4110" args="(const GF2mat_sparse_alist &amp;alist)" -->
93&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#27ec64912cd5118a753f18e626cb4110">LDPC_Parity</a> (const <a class="el" href="classitpp_1_1GF2mat__sparse__alist.html">GF2mat_sparse_alist</a> &amp;alist)</td></tr>
94
95<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor, from a <code><a class="el" href="classitpp_1_1GF2mat__sparse__alist.html" title="Parameterized &quot;alist&quot; representation of sparse GF(2) matrix.">GF2mat_sparse_alist</a></code> object. <br></td></tr>
96<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ce714f0d15ba9b6056792fa1dde5d4ff"></a><!-- doxytag: member="itpp::LDPC_Parity::~LDPC_Parity" ref="ce714f0d15ba9b6056792fa1dde5d4ff" args="()" -->
97virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#ce714f0d15ba9b6056792fa1dde5d4ff">~LDPC_Parity</a> ()</td></tr>
98
99<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Virtual destructor. <br></td></tr>
100<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f43eb94744828d0203ecef66f10ea252"></a><!-- doxytag: member="itpp::LDPC_Parity::initialize" ref="f43eb94744828d0203ecef66f10ea252" args="(int ncheck, int nvar)" -->
101void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#f43eb94744828d0203ecef66f10ea252">initialize</a> (int <a class="el" href="classitpp_1_1LDPC__Parity.html#82403ae65de864fdbe4fcdd4d83caff2">ncheck</a>, int <a class="el" href="classitpp_1_1LDPC__Parity.html#7e8697111c53562022e2f367593366c7">nvar</a>)</td></tr>
102
103<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an empty matrix of size ncheck x nvar. <br></td></tr>
104<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5943f4ca9d8b00dca5fd85f603b4b1c0"></a><!-- doxytag: member="itpp::LDPC_Parity::get_H" ref="5943f4ca9d8b00dca5fd85f603b4b1c0" args="(bool transpose=false) const " -->
105<a class="el" href="classitpp_1_1Sparse__Mat.html">GF2mat_sparse</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#5943f4ca9d8b00dca5fd85f603b4b1c0">get_H</a> (bool transpose=false) const </td></tr>
106
107<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the parity check matrix, optionally its transposed form. <br></td></tr>
108<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b033b6ca4ab2b951cc503e05d6c9a61b"></a><!-- doxytag: member="itpp::LDPC_Parity::get_col" ref="b033b6ca4ab2b951cc503e05d6c9a61b" args="(int c) const " -->
109<a class="el" href="classitpp_1_1Sparse__Vec.html">Sparse_Vec</a>&lt; <a class="el" href="classitpp_1_1bin.html">bin</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#b033b6ca4ab2b951cc503e05d6c9a61b">get_col</a> (int c) const </td></tr>
110
111<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a specific column from the matrix. <br></td></tr>
112<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2740d5f207c00bbcfcd610d9aa96527e"></a><!-- doxytag: member="itpp::LDPC_Parity::get_row" ref="2740d5f207c00bbcfcd610d9aa96527e" args="(int r) const " -->
113<a class="el" href="classitpp_1_1Sparse__Vec.html">Sparse_Vec</a>&lt; <a class="el" href="classitpp_1_1bin.html">bin</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#2740d5f207c00bbcfcd610d9aa96527e">get_row</a> (int r) const </td></tr>
114
115<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a specific row from the matrix. <br></td></tr>
116<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e63f3e0488b7c8b0402b7ca2b659f14"></a><!-- doxytag: member="itpp::LDPC_Parity::get_nvar" ref="7e63f3e0488b7c8b0402b7ca2b659f14" args="() const " -->
117int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#7e63f3e0488b7c8b0402b7ca2b659f14">get_nvar</a> () const </td></tr>
118
119<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of variable nodes (number of columns). <br></td></tr>
120<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="187f147ffeca6c2744235cbf27ce22f3"></a><!-- doxytag: member="itpp::LDPC_Parity::get_ncheck" ref="187f147ffeca6c2744235cbf27ce22f3" args="() const " -->
121int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#187f147ffeca6c2744235cbf27ce22f3">get_ncheck</a> () const </td></tr>
122
123<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of check nodes (number of rows). <br></td></tr>
124<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9847b116e69bd7edcaef3704d5b997f8"></a><!-- doxytag: member="itpp::LDPC_Parity::set" ref="9847b116e69bd7edcaef3704d5b997f8" args="(int i, int j, bin value)" -->
125void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#9847b116e69bd7edcaef3704d5b997f8">set</a> (int i, int j, <a class="el" href="classitpp_1_1bin.html">bin</a> value)</td></tr>
126
127<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set element (i,j) of the parity check matrix to value. <br></td></tr>
128<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c70ddfe8b703d1eb4d22a19f10f0e8c9"></a><!-- doxytag: member="itpp::LDPC_Parity::get" ref="c70ddfe8b703d1eb4d22a19f10f0e8c9" args="(int i, int j) const " -->
129<a class="el" href="classitpp_1_1bin.html">bin</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#c70ddfe8b703d1eb4d22a19f10f0e8c9">get</a> (int i, int j) const </td></tr>
130
131<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get element (i,j) of the parity check matrix. <br></td></tr>
132<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2b2923d5f0ffafe41a427326f34c8784"></a><!-- doxytag: member="itpp::LDPC_Parity::operator()" ref="2b2923d5f0ffafe41a427326f34c8784" args="(int i, int j) const " -->
133<a class="el" href="classitpp_1_1bin.html">bin</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#2b2923d5f0ffafe41a427326f34c8784">operator()</a> (int i, int j) const </td></tr>
134
135<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get element (i,j) of the parity check matrix. <br></td></tr>
136<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d4241825bc40f746ad885be000522f52"></a><!-- doxytag: member="itpp::LDPC_Parity::display_stats" ref="d4241825bc40f746ad885be000522f52" args="() const " -->
137virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#d4241825bc40f746ad885be000522f52">display_stats</a> () const </td></tr>
138
139<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Display some information about the matrix. <br></td></tr>
140<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="35bd2abd71714312866811d3255d68c8"></a><!-- doxytag: member="itpp::LDPC_Parity::get_rate" ref="35bd2abd71714312866811d3255d68c8" args="() const " -->
141double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#35bd2abd71714312866811d3255d68c8">get_rate</a> () const </td></tr>
142
143<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the code rate. <br></td></tr>
144<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4e1fd0b2147b5d486e24538615e1fbf4"></a><!-- doxytag: member="itpp::LDPC_Parity::import_alist" ref="4e1fd0b2147b5d486e24538615e1fbf4" args="(const GF2mat_sparse_alist &amp;H_alist)" -->
145void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#4e1fd0b2147b5d486e24538615e1fbf4">import_alist</a> (const <a class="el" href="classitpp_1_1GF2mat__sparse__alist.html">GF2mat_sparse_alist</a> &amp;H_alist)</td></tr>
146
147<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Import matrix from <code><a class="el" href="classitpp_1_1GF2mat__sparse__alist.html" title="Parameterized &quot;alist&quot; representation of sparse GF(2) matrix.">GF2mat_sparse_alist</a></code> format. <br></td></tr>
148<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="811f5be45f91edf337d1ec48a125f2a7"></a><!-- doxytag: member="itpp::LDPC_Parity::export_alist" ref="811f5be45f91edf337d1ec48a125f2a7" args="() const " -->
149<a class="el" href="classitpp_1_1GF2mat__sparse__alist.html">GF2mat_sparse_alist</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#811f5be45f91edf337d1ec48a125f2a7">export_alist</a> () const </td></tr>
150
151<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Export matrix to <code><a class="el" href="classitpp_1_1GF2mat__sparse__alist.html" title="Parameterized &quot;alist&quot; representation of sparse GF(2) matrix.">GF2mat_sparse_alist</a></code> format. <br></td></tr>
152<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0a8956859defe1d19e79441b9da281b3"></a><!-- doxytag: member="itpp::LDPC_Parity::load_alist" ref="0a8956859defe1d19e79441b9da281b3" args="(const std::string &amp;alist_file)" -->
153void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#0a8956859defe1d19e79441b9da281b3">load_alist</a> (const std::string &amp;alist_file)</td></tr>
154
155<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load matrix from <code>alist_file</code> text file in alist format. <br></td></tr>
156<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f653d919cb8c3d08e2d700809155999a"></a><!-- doxytag: member="itpp::LDPC_Parity::save_alist" ref="f653d919cb8c3d08e2d700809155999a" args="(const std::string &amp;alist_file) const " -->
157void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#f653d919cb8c3d08e2d700809155999a">save_alist</a> (const std::string &amp;alist_file) const </td></tr>
158
159<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save matrix to <code>alist_file</code> text file in alist format. <br></td></tr>
160<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
161<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#2849e24a0089c0b62105b8bbc4072d0e">check_for_cycles</a> (int L) const </td></tr>
162
163<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check for cycles of length L.  <a href="#2849e24a0089c0b62105b8bbc4072d0e"></a><br></td></tr>
164<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#d30f8e78f5e951be44660d0750b70cb6">check_connectivity</a> (int from_m, int from_n, int to_m, int to_n, int g, int L) const </td></tr>
165
166<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check for connectivity between nodes.  <a href="#d30f8e78f5e951be44660d0750b70cb6"></a><br></td></tr>
167<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
168<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74998d26a4dd6057f3a8be6ac4f2c5c1"></a><!-- doxytag: member="itpp::LDPC_Parity::init_flag" ref="74998d26a4dd6057f3a8be6ac4f2c5c1" args="" -->
169bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#74998d26a4dd6057f3a8be6ac4f2c5c1">init_flag</a></td></tr>
170
171<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flag that indicates proper initialization. <br></td></tr>
172<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f51c1108ec92883ef46a55083e7263ec"></a><!-- doxytag: member="itpp::LDPC_Parity::H" ref="f51c1108ec92883ef46a55083e7263ec" args="" -->
173<a class="el" href="classitpp_1_1Sparse__Mat.html">GF2mat_sparse</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#f51c1108ec92883ef46a55083e7263ec">H</a></td></tr>
174
175<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parity check matrix. <br></td></tr>
176<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0355499a802f0aeb3cb1b5f720fdc924"></a><!-- doxytag: member="itpp::LDPC_Parity::Ht" ref="0355499a802f0aeb3cb1b5f720fdc924" args="" -->
177<a class="el" href="classitpp_1_1Sparse__Mat.html">GF2mat_sparse</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#0355499a802f0aeb3cb1b5f720fdc924">Ht</a></td></tr>
178
179<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The transposed parity check matrix. <br></td></tr>
180<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e8697111c53562022e2f367593366c7"></a><!-- doxytag: member="itpp::LDPC_Parity::nvar" ref="7e8697111c53562022e2f367593366c7" args="" -->
181int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#7e8697111c53562022e2f367593366c7">nvar</a></td></tr>
182
183<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of variable nodes. <br></td></tr>
184<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="82403ae65de864fdbe4fcdd4d83caff2"></a><!-- doxytag: member="itpp::LDPC_Parity::ncheck" ref="82403ae65de864fdbe4fcdd4d83caff2" args="" -->
185int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#82403ae65de864fdbe4fcdd4d83caff2">ncheck</a></td></tr>
186
187<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of check nodes. <br></td></tr>
188<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d57f9e546f3a50b1dd84a587e36562fc"></a><!-- doxytag: member="itpp::LDPC_Parity::sumX1" ref="d57f9e546f3a50b1dd84a587e36562fc" args="" -->
189ivec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#d57f9e546f3a50b1dd84a587e36562fc">sumX1</a></td></tr>
190
191<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Actual number of ones in each column. <br></td></tr>
192<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c4347f86ad11c0f303f52a5134e851c"></a><!-- doxytag: member="itpp::LDPC_Parity::sumX2" ref="4c4347f86ad11c0f303f52a5134e851c" args="" -->
193ivec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#4c4347f86ad11c0f303f52a5134e851c">sumX2</a></td></tr>
194
195<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Actual number of ones in each row. <br></td></tr>
196<tr><td colspan="2"><br><h2>Static Protected Attributes</h2></td></tr>
197<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0114010da4b27165cfc748f23d15edeb"></a><!-- doxytag: member="itpp::LDPC_Parity::Nmax" ref="0114010da4b27165cfc748f23d15edeb" args="" -->
198static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#0114010da4b27165cfc748f23d15edeb">Nmax</a> = 200</td></tr>
199
200<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximum node degree class can handle. <br></td></tr>
201<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
202<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c5a92585a571ccbff3d2eab54915ef8"></a><!-- doxytag: member="itpp::LDPC_Parity::LDPC_Code" ref="4c5a92585a571ccbff3d2eab54915ef8" args="" -->
203class&nbsp;</td><td class="memItemRight" valign="bottom"><b>LDPC_Code</b></td></tr>
204
205</table>
206<hr><a name="_details"></a><h2>Detailed Description</h2>
207LDPC parity check matrix generic class.
208<p>
209This 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.<p>
210This 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.<p>
211All parity check matrices can be loaded from (saved to) a file by converting them from (to) a portable <code><a class="el" href="classitpp_1_1GF2mat__sparse__alist.html" title="Parameterized &quot;alist&quot; representation of sparse GF(2) matrix.">GF2mat_sparse_alist</a></code> format.<p>
212However, typically one will want to create a <code><a class="el" href="classitpp_1_1LDPC__Code.html" title="Low-density parity check (LDPC) codec.">LDPC_Code</a></code> from the parity check matrix (and optionally a generator) and save the codec binary data instead.<p>
213Please refer to the tutorial ldpc_gen_codes for some examples of code generation.<p>
214<dl class="author" compact><dt><b>Author:</b></dt><dd>Erik G. Larsson, Mattias Andersson and Adam Piatyszek </dd></dl>
215<hr><h2>Constructor &amp; Destructor Documentation</h2>
216<a class="anchor" name="ee1053169c321751ce26b714328b5a9a"></a><!-- doxytag: member="itpp::LDPC_Parity::LDPC_Parity" ref="ee1053169c321751ce26b714328b5a9a" args="(const std::string &amp;filename, const std::string &amp;format)" -->
217<div class="memitem">
218<div class="memproto">
219      <table class="memname">
220        <tr>
221          <td class="memname">itpp::LDPC_Parity::LDPC_Parity           </td>
222          <td>(</td>
223          <td class="paramtype">const std::string &amp;&nbsp;</td>
224          <td class="paramname"> <em>filename</em>, </td>
225        </tr>
226        <tr>
227          <td class="paramkey"></td>
228          <td></td>
229          <td class="paramtype">const std::string &amp;&nbsp;</td>
230          <td class="paramname"> <em>format</em></td><td>&nbsp;</td>
231        </tr>
232        <tr>
233          <td></td>
234          <td>)</td>
235          <td></td><td></td><td></td>
236        </tr>
237      </table>
238</div>
239<div class="memdoc">
240
241<p>
242Load an LDPC parity check matrix from a file.
243<p>
244<dl compact><dt><b>Parameters:</b></dt><dd>
245  <table border="0" cellspacing="2" cellpadding="0">
246    <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>file name </td></tr>
247    <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>file format</td></tr>
248  </table>
249</dl>
250<dl class="note" compact><dt><b>Note:</b></dt><dd>Currently, only "alist" format is supported (see <code><a class="el" href="classitpp_1_1GF2mat__sparse__alist.html" title="Parameterized &quot;alist&quot; representation of sparse GF(2) matrix.">GF2mat_sparse_alist</a></code> for its definition).</dd></dl>
251<dl class="see" compact><dt><b>See also:</b></dt><dd><code><a class="el" href="classitpp_1_1LDPC__Parity.html#0a8956859defe1d19e79441b9da281b3" title="Load matrix from alist_file text file in alist format.">load_alist()</a></code> and <code><a class="el" href="classitpp_1_1LDPC__Parity.html#f653d919cb8c3d08e2d700809155999a" title="Save matrix to alist_file text file in alist format.">save_alist()</a></code> </dd></dl>
252
253<p>References <a class="el" href="itassert_8h-source.html#l00126">it_error</a>, and <a class="el" href="ldpc_8cpp-source.html#l00155">load_alist()</a>.</p>
254
255</div>
256</div><p>
257<hr><h2>Member Function Documentation</h2>
258<a class="anchor" name="d30f8e78f5e951be44660d0750b70cb6"></a><!-- doxytag: member="itpp::LDPC_Parity::check_connectivity" ref="d30f8e78f5e951be44660d0750b70cb6" args="(int from_m, int from_n, int to_m, int to_n, int g, int L) const " -->
259<div class="memitem">
260<div class="memproto">
261      <table class="memname">
262        <tr>
263          <td class="memname">int itpp::LDPC_Parity::check_connectivity           </td>
264          <td>(</td>
265          <td class="paramtype">int&nbsp;</td>
266          <td class="paramname"> <em>from_m</em>, </td>
267        </tr>
268        <tr>
269          <td class="paramkey"></td>
270          <td></td>
271          <td class="paramtype">int&nbsp;</td>
272          <td class="paramname"> <em>from_n</em>, </td>
273        </tr>
274        <tr>
275          <td class="paramkey"></td>
276          <td></td>
277          <td class="paramtype">int&nbsp;</td>
278          <td class="paramname"> <em>to_m</em>, </td>
279        </tr>
280        <tr>
281          <td class="paramkey"></td>
282          <td></td>
283          <td class="paramtype">int&nbsp;</td>
284          <td class="paramname"> <em>to_n</em>, </td>
285        </tr>
286        <tr>
287          <td class="paramkey"></td>
288          <td></td>
289          <td class="paramtype">int&nbsp;</td>
290          <td class="paramname"> <em>g</em>, </td>
291        </tr>
292        <tr>
293          <td class="paramkey"></td>
294          <td></td>
295          <td class="paramtype">int&nbsp;</td>
296          <td class="paramname"> <em>L</em></td><td>&nbsp;</td>
297        </tr>
298        <tr>
299          <td></td>
300          <td>)</td>
301          <td></td><td></td><td> const<code> [protected]</code></td>
302        </tr>
303      </table>
304</div>
305<div class="memdoc">
306
307<p>
308Check for connectivity between nodes.
309<p>
310This 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.<p>
311The 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.<p>
312<dl compact><dt><b>Parameters:</b></dt><dd>
313  <table border="0" cellspacing="2" cellpadding="0">
314    <tr><td valign="top"></td><td valign="top"><em>from_m</em>&nbsp;</td><td>starting coordinate, row number </td></tr>
315    <tr><td valign="top"></td><td valign="top"><em>to_m</em>&nbsp;</td><td>goal coordinate, row number </td></tr>
316    <tr><td valign="top"></td><td valign="top"><em>from_n</em>&nbsp;</td><td>starting coordinate, column number </td></tr>
317    <tr><td valign="top"></td><td valign="top"><em>to_n</em>&nbsp;</td><td>goal coordinate, row number </td></tr>
318    <tr><td valign="top"></td><td valign="top"><em>g</em>&nbsp;</td><td>direction: 1=start going vertically, 2=start going horizontally </td></tr>
319    <tr><td valign="top"></td><td valign="top"><em>L</em>&nbsp;</td><td>number of permitted steps</td></tr>
320  </table>
321</dl>
322<dl class="return" compact><dt><b>Returns:</b></dt><dd><ul>
323<li>-1 or -3 : destination unreachable</li><li>-2 : meaningless search (started in a "0" point),</li><li>-4 : meaningless search</li><li>&gt;=0 : destination reached with certain number of steps left</li></ul>
324</dd></dl>
325<dl class="note" compact><dt><b>Note:</b></dt><dd>This function can be very slow depending on the nature of the matrix.</dd></dl>
326Note that smaller cycles may appear as longer cycles when using this method. More specifically, suppose the method is run with a given L and there are cycles in the neighborhood of (from_m,from_n) of length L-2 or less, but which do not contain (from_m,from_n). These shorter cycles may then also be reported as a cycle of length L. For example, if one of the immediate neighbors of (from_m,from_n) is part of a cycle of length 4 this method will report that (from_m,from_n) is part of a cycle of length 6, if run with L=6. However, if it is known that there are no cycles of length L-2 or smaller, and check_connectivity(from_m,from_n,from_m,from_n,0,L) returns a non-negative value, then one will know with certainty that the point (from_m,from_n) is part of a cycle of length L. (This behavior is inherent to the simple recursive search used.)
327<p>References <a class="el" href="ldpc_8h-source.html#l00108">get_col()</a>, <a class="el" href="svec_8h-source.html#l00789">itpp::Sparse_Vec&lt; T &gt;::get_nz_indices()</a>, <a class="el" href="ldpc_8h-source.html#l00111">get_row()</a>, <a class="el" href="ldpc_8h-source.html#l00169">init_flag</a>, <a class="el" href="itassert_8h-source.html#l00094">it_assert</a>, and <a class="el" href="matfunc_8h-source.html#l00051">itpp::length()</a>.</p>
328
329<p>Referenced by <a class="el" href="ldpc_8cpp-source.html#l00249">check_for_cycles()</a>, and <a class="el" href="ldpc_8cpp-source.html#l00462">itpp::LDPC_Parity_Unstructured::generate_random_H()</a>.</p>
330
331</div>
332</div><p>
333<a class="anchor" name="2849e24a0089c0b62105b8bbc4072d0e"></a><!-- doxytag: member="itpp::LDPC_Parity::check_for_cycles" ref="2849e24a0089c0b62105b8bbc4072d0e" args="(int L) const " -->
334<div class="memitem">
335<div class="memproto">
336      <table class="memname">
337        <tr>
338          <td class="memname">int itpp::LDPC_Parity::check_for_cycles           </td>
339          <td>(</td>
340          <td class="paramtype">int&nbsp;</td>
341          <td class="paramname"> <em>L</em>          </td>
342          <td>&nbsp;)&nbsp;</td>
343          <td> const<code> [protected]</code></td>
344        </tr>
345      </table>
346</div>
347<div class="memdoc">
348
349<p>
350Check for cycles of length L.
351<p>
352This function implements a recursive routine to find loops. The function is mainly a tool for testing and debugging more sophisticated functions for graph manipulation.<p>
353<dl compact><dt><b>Parameters:</b></dt><dd>
354  <table border="0" cellspacing="2" cellpadding="0">
355    <tr><td valign="top"></td><td valign="top"><em>L</em>&nbsp;</td><td>length of cycles to look for</td></tr>
356  </table>
357</dl>
358<dl class="return" compact><dt><b>Returns:</b></dt><dd>The function returns the number of cycles found of length L or shorter. Cycles may be counted multiple times.</dd></dl>
359<dl class="note" compact><dt><b>Note:</b></dt><dd>This function can be very slow for large matrices. It is mainly intended as a debugging aid. </dd></dl>
360
361<p>References <a class="el" href="ldpc_8cpp-source.html#l00192">check_connectivity()</a>, <a class="el" href="ldpc_8h-source.html#l00108">get_col()</a>, <a class="el" href="svec_8h-source.html#l00789">itpp::Sparse_Vec&lt; T &gt;::get_nz_indices()</a>, <a class="el" href="ldpc_8h-source.html#l00169">init_flag</a>, <a class="el" href="itassert_8h-source.html#l00094">it_assert</a>, <a class="el" href="matfunc_8h-source.html#l00051">itpp::length()</a>, and <a class="el" href="ldpc_8h-source.html#l00177">nvar</a>.</p>
362
363</div>
364</div><p>
365<hr>The documentation for this class was generated from the following files:<ul>
366<li><a class="el" href="ldpc_8h-source.html">ldpc.h</a><li><a class="el" href="ldpc_8cpp.html">ldpc.cpp</a></ul>
367</div>
368<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by&nbsp;
369<a href="http://www.doxygen.org/index.html">
370<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
371</body>
372</html>
Note: See TracBrowser for help on using the browser.