root/doc/html/classitpp_1_1BLDPC__Parity.html @ 353

Revision 353, 31.1 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::BLDPC_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_1BLDPC__Parity.html">BLDPC_Parity</a>
68  </div>
69</div>
70<div class="contents">
71<h1>itpp::BLDPC_Parity Class Reference</h1><!-- doxytag: class="itpp::BLDPC_Parity" --><!-- doxytag: inherits="itpp::LDPC_Parity" -->Block LDPC code parity-check matrix. 
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_1BLDPC__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="978c70b8b4124c0510d2dfc070dd6e82"></a><!-- doxytag: member="itpp::BLDPC_Parity::BLDPC_Parity" ref="978c70b8b4124c0510d2dfc070dd6e82" args="()" -->
82&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#978c70b8b4124c0510d2dfc070dd6e82">BLDPC_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="deb1a5337d7150d1d592c0a9f7c7d811"></a><!-- doxytag: member="itpp::BLDPC_Parity::BLDPC_Parity" ref="deb1a5337d7150d1d592c0a9f7c7d811" args="(const imat &amp;base_matrix, int exp_factor)" -->
86&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#deb1a5337d7150d1d592c0a9f7c7d811">BLDPC_Parity</a> (const imat &amp;base_matrix, int exp_factor)</td></tr>
87
88<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct BLDPC matrix from base matrix. <br></td></tr>
89<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="927969e65ac564959fefaf93a0b245be"></a><!-- doxytag: member="itpp::BLDPC_Parity::BLDPC_Parity" ref="927969e65ac564959fefaf93a0b245be" args="(const std::string &amp;filename, int exp_factor)" -->
90&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#927969e65ac564959fefaf93a0b245be">BLDPC_Parity</a> (const std::string &amp;filename, int exp_factor)</td></tr>
91
92<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct BLDPC matrix parsing base matrix from a text file. <br></td></tr>
93<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1edcf49d02cacb3bdaf54f601c47669"></a><!-- doxytag: member="itpp::BLDPC_Parity::expand_base" ref="a1edcf49d02cacb3bdaf54f601c47669" args="(const imat &amp;base_matrix, int exp_factor)" -->
94void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#a1edcf49d02cacb3bdaf54f601c47669">expand_base</a> (const imat &amp;base_matrix, int exp_factor)</td></tr>
95
96<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create BLDPC matrix from base matrix by expansion. <br></td></tr>
97<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="94ae6cb70587c0c88245a3099b0e4cea"></a><!-- doxytag: member="itpp::BLDPC_Parity::get_exp_factor" ref="94ae6cb70587c0c88245a3099b0e4cea" args="() const " -->
98int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#94ae6cb70587c0c88245a3099b0e4cea">get_exp_factor</a> () const </td></tr>
99
100<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get expansion factor. <br></td></tr>
101<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c29ad2dde5079ba1ed4e6458910ad5bf"></a><!-- doxytag: member="itpp::BLDPC_Parity::get_base_matrix" ref="c29ad2dde5079ba1ed4e6458910ad5bf" args="() const " -->
102imat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#c29ad2dde5079ba1ed4e6458910ad5bf">get_base_matrix</a> () const </td></tr>
103
104<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get base matrix. <br></td></tr>
105<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9ded50ca311c3f700b7a29e053504149"></a><!-- doxytag: member="itpp::BLDPC_Parity::is_valid" ref="9ded50ca311c3f700b7a29e053504149" args="() const " -->
106bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#9ded50ca311c3f700b7a29e053504149">is_valid</a> () const </td></tr>
107
108<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Verify initialisation. <br></td></tr>
109<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bd076d732938ec9ba76ad353923f11ad"></a><!-- doxytag: member="itpp::BLDPC_Parity::set_exp_factor" ref="bd076d732938ec9ba76ad353923f11ad" args="(int exp_factor)" -->
110void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#bd076d732938ec9ba76ad353923f11ad">set_exp_factor</a> (int exp_factor)</td></tr>
111
112<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set expansion factor. <br></td></tr>
113<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2f3e9cbbe2c72fbb3c9e34d6aa5e7e9"></a><!-- doxytag: member="itpp::BLDPC_Parity::load_base_matrix" ref="a2f3e9cbbe2c72fbb3c9e34d6aa5e7e9" args="(const std::string &amp;filename)" -->
114void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#a2f3e9cbbe2c72fbb3c9e34d6aa5e7e9">load_base_matrix</a> (const std::string &amp;filename)</td></tr>
115
116<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load base matrix from a text file. <br></td></tr>
117<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6acad3c27780ede38f88499c454bcec2"></a><!-- doxytag: member="itpp::BLDPC_Parity::save_base_matrix" ref="6acad3c27780ede38f88499c454bcec2" args="(const std::string &amp;filename) const " -->
118void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1BLDPC__Parity.html#6acad3c27780ede38f88499c454bcec2">save_base_matrix</a> (const std::string &amp;filename) const </td></tr>
119
120<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save base matrix to a text file. <br></td></tr>
121<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f43eb94744828d0203ecef66f10ea252"></a><!-- doxytag: member="itpp::BLDPC_Parity::initialize" ref="f43eb94744828d0203ecef66f10ea252" args="(int ncheck, int nvar)" -->
122void&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>
123
124<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an empty matrix of size ncheck x nvar. <br></td></tr>
125<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5943f4ca9d8b00dca5fd85f603b4b1c0"></a><!-- doxytag: member="itpp::BLDPC_Parity::get_H" ref="5943f4ca9d8b00dca5fd85f603b4b1c0" args="(bool transpose=false) const " -->
126<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>
127
128<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the parity check matrix, optionally its transposed form. <br></td></tr>
129<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b033b6ca4ab2b951cc503e05d6c9a61b"></a><!-- doxytag: member="itpp::BLDPC_Parity::get_col" ref="b033b6ca4ab2b951cc503e05d6c9a61b" args="(int c) const " -->
130<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>
131
132<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a specific column from the matrix. <br></td></tr>
133<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2740d5f207c00bbcfcd610d9aa96527e"></a><!-- doxytag: member="itpp::BLDPC_Parity::get_row" ref="2740d5f207c00bbcfcd610d9aa96527e" args="(int r) const " -->
134<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>
135
136<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a specific row from the matrix. <br></td></tr>
137<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e63f3e0488b7c8b0402b7ca2b659f14"></a><!-- doxytag: member="itpp::BLDPC_Parity::get_nvar" ref="7e63f3e0488b7c8b0402b7ca2b659f14" args="() const " -->
138int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#7e63f3e0488b7c8b0402b7ca2b659f14">get_nvar</a> () const </td></tr>
139
140<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of variable nodes (number of columns). <br></td></tr>
141<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="187f147ffeca6c2744235cbf27ce22f3"></a><!-- doxytag: member="itpp::BLDPC_Parity::get_ncheck" ref="187f147ffeca6c2744235cbf27ce22f3" args="() const " -->
142int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#187f147ffeca6c2744235cbf27ce22f3">get_ncheck</a> () const </td></tr>
143
144<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of check nodes (number of rows). <br></td></tr>
145<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9847b116e69bd7edcaef3704d5b997f8"></a><!-- doxytag: member="itpp::BLDPC_Parity::set" ref="9847b116e69bd7edcaef3704d5b997f8" args="(int i, int j, bin value)" -->
146void&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>
147
148<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set element (i,j) of the parity check matrix to value. <br></td></tr>
149<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c70ddfe8b703d1eb4d22a19f10f0e8c9"></a><!-- doxytag: member="itpp::BLDPC_Parity::get" ref="c70ddfe8b703d1eb4d22a19f10f0e8c9" args="(int i, int j) const " -->
150<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>
151
152<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get element (i,j) of the parity check matrix. <br></td></tr>
153<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2b2923d5f0ffafe41a427326f34c8784"></a><!-- doxytag: member="itpp::BLDPC_Parity::operator()" ref="2b2923d5f0ffafe41a427326f34c8784" args="(int i, int j) const " -->
154<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>
155
156<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get element (i,j) of the parity check matrix. <br></td></tr>
157<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d4241825bc40f746ad885be000522f52"></a><!-- doxytag: member="itpp::BLDPC_Parity::display_stats" ref="d4241825bc40f746ad885be000522f52" args="() const " -->
158virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#d4241825bc40f746ad885be000522f52">display_stats</a> () const </td></tr>
159
160<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Display some information about the matrix. <br></td></tr>
161<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="35bd2abd71714312866811d3255d68c8"></a><!-- doxytag: member="itpp::BLDPC_Parity::get_rate" ref="35bd2abd71714312866811d3255d68c8" args="() const " -->
162double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#35bd2abd71714312866811d3255d68c8">get_rate</a> () const </td></tr>
163
164<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the code rate. <br></td></tr>
165<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4e1fd0b2147b5d486e24538615e1fbf4"></a><!-- doxytag: member="itpp::BLDPC_Parity::import_alist" ref="4e1fd0b2147b5d486e24538615e1fbf4" args="(const GF2mat_sparse_alist &amp;H_alist)" -->
166void&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>
167
168<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>
169<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="811f5be45f91edf337d1ec48a125f2a7"></a><!-- doxytag: member="itpp::BLDPC_Parity::export_alist" ref="811f5be45f91edf337d1ec48a125f2a7" args="() const " -->
170<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>
171
172<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>
173<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0a8956859defe1d19e79441b9da281b3"></a><!-- doxytag: member="itpp::BLDPC_Parity::load_alist" ref="0a8956859defe1d19e79441b9da281b3" args="(const std::string &amp;alist_file)" -->
174void&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>
175
176<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load matrix from <code>alist_file</code> text file in alist format. <br></td></tr>
177<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f653d919cb8c3d08e2d700809155999a"></a><!-- doxytag: member="itpp::BLDPC_Parity::save_alist" ref="f653d919cb8c3d08e2d700809155999a" args="(const std::string &amp;alist_file) const " -->
178void&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>
179
180<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save matrix to <code>alist_file</code> text file in alist format. <br></td></tr>
181<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
182<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>
183
184<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check for cycles of length L.  <a href="#2849e24a0089c0b62105b8bbc4072d0e"></a><br></td></tr>
185<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>
186
187<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check for connectivity between nodes.  <a href="#d30f8e78f5e951be44660d0750b70cb6"></a><br></td></tr>
188<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
189<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74998d26a4dd6057f3a8be6ac4f2c5c1"></a><!-- doxytag: member="itpp::BLDPC_Parity::init_flag" ref="74998d26a4dd6057f3a8be6ac4f2c5c1" args="" -->
190bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#74998d26a4dd6057f3a8be6ac4f2c5c1">init_flag</a></td></tr>
191
192<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flag that indicates proper initialization. <br></td></tr>
193<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f51c1108ec92883ef46a55083e7263ec"></a><!-- doxytag: member="itpp::BLDPC_Parity::H" ref="f51c1108ec92883ef46a55083e7263ec" args="" -->
194<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>
195
196<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The parity check matrix. <br></td></tr>
197<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0355499a802f0aeb3cb1b5f720fdc924"></a><!-- doxytag: member="itpp::BLDPC_Parity::Ht" ref="0355499a802f0aeb3cb1b5f720fdc924" args="" -->
198<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>
199
200<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The transposed parity check matrix. <br></td></tr>
201<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e8697111c53562022e2f367593366c7"></a><!-- doxytag: member="itpp::BLDPC_Parity::nvar" ref="7e8697111c53562022e2f367593366c7" args="" -->
202int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#7e8697111c53562022e2f367593366c7">nvar</a></td></tr>
203
204<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of variable nodes. <br></td></tr>
205<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="82403ae65de864fdbe4fcdd4d83caff2"></a><!-- doxytag: member="itpp::BLDPC_Parity::ncheck" ref="82403ae65de864fdbe4fcdd4d83caff2" args="" -->
206int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#82403ae65de864fdbe4fcdd4d83caff2">ncheck</a></td></tr>
207
208<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of check nodes. <br></td></tr>
209<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d57f9e546f3a50b1dd84a587e36562fc"></a><!-- doxytag: member="itpp::BLDPC_Parity::sumX1" ref="d57f9e546f3a50b1dd84a587e36562fc" args="" -->
210ivec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#d57f9e546f3a50b1dd84a587e36562fc">sumX1</a></td></tr>
211
212<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Actual number of ones in each column. <br></td></tr>
213<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c4347f86ad11c0f303f52a5134e851c"></a><!-- doxytag: member="itpp::BLDPC_Parity::sumX2" ref="4c4347f86ad11c0f303f52a5134e851c" args="" -->
214ivec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#4c4347f86ad11c0f303f52a5134e851c">sumX2</a></td></tr>
215
216<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Actual number of ones in each row. <br></td></tr>
217<tr><td colspan="2"><br><h2>Static Protected Attributes</h2></td></tr>
218<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0114010da4b27165cfc748f23d15edeb"></a><!-- doxytag: member="itpp::BLDPC_Parity::Nmax" ref="0114010da4b27165cfc748f23d15edeb" args="" -->
219static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#0114010da4b27165cfc748f23d15edeb">Nmax</a> = 200</td></tr>
220
221<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximum node degree class can handle. <br></td></tr>
222</table>
223<hr><a name="_details"></a><h2>Detailed Description</h2>
224Block LDPC code parity-check matrix.
225<p>
226<dl class="author" compact><dt><b>Author:</b></dt><dd>Adam Piatyszek</dd></dl>
227Block LDPC Codes (B-LDPC) are a special class of Quasi-Cyclic LDPC Codes (QC-LDPC). Linear encoding properties and memory efficiency are their main advantages.<p>
228B-LDPC codes' parity-check matrix is constructed from so-called base matrix by expansion of each single value with a zero matrix or cyclic-shifted identity matrix of size Z x Z, where Z is an expansion factor. Each non negative value of the base matrix represents the cyclic shift value, e.g. 0 means that the identity matrix should not be shifted; 6 means than the identity matrix should be circularly right-shifted by (6 mod Z). Negative values (usually -1) represents zero matrix of size Z x Z.<p>
229Please refer to [MYK05] for more details.<p>
230References:<p>
231[MYK05] S. Myung, K. Yang, J. Kim, "Quasi-Cyclic LDPC Codes for Fast Encoding", IEEE Trans. on Inform. Theory, vol. 51, no. 8, August 2005 <hr><h2>Member Function Documentation</h2>
232<a class="anchor" name="d30f8e78f5e951be44660d0750b70cb6"></a><!-- doxytag: member="itpp::BLDPC_Parity::check_connectivity" ref="d30f8e78f5e951be44660d0750b70cb6" args="(int from_m, int from_n, int to_m, int to_n, int g, int L) const " -->
233<div class="memitem">
234<div class="memproto">
235      <table class="memname">
236        <tr>
237          <td class="memname">int itpp::LDPC_Parity::check_connectivity           </td>
238          <td>(</td>
239          <td class="paramtype">int&nbsp;</td>
240          <td class="paramname"> <em>from_m</em>, </td>
241        </tr>
242        <tr>
243          <td class="paramkey"></td>
244          <td></td>
245          <td class="paramtype">int&nbsp;</td>
246          <td class="paramname"> <em>from_n</em>, </td>
247        </tr>
248        <tr>
249          <td class="paramkey"></td>
250          <td></td>
251          <td class="paramtype">int&nbsp;</td>
252          <td class="paramname"> <em>to_m</em>, </td>
253        </tr>
254        <tr>
255          <td class="paramkey"></td>
256          <td></td>
257          <td class="paramtype">int&nbsp;</td>
258          <td class="paramname"> <em>to_n</em>, </td>
259        </tr>
260        <tr>
261          <td class="paramkey"></td>
262          <td></td>
263          <td class="paramtype">int&nbsp;</td>
264          <td class="paramname"> <em>g</em>, </td>
265        </tr>
266        <tr>
267          <td class="paramkey"></td>
268          <td></td>
269          <td class="paramtype">int&nbsp;</td>
270          <td class="paramname"> <em>L</em></td><td>&nbsp;</td>
271        </tr>
272        <tr>
273          <td></td>
274          <td>)</td>
275          <td></td><td></td><td> const<code> [protected, inherited]</code></td>
276        </tr>
277      </table>
278</div>
279<div class="memdoc">
280
281<p>
282Check for connectivity between nodes.
283<p>
284This 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>
285The 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>
286<dl compact><dt><b>Parameters:</b></dt><dd>
287  <table border="0" cellspacing="2" cellpadding="0">
288    <tr><td valign="top"></td><td valign="top"><em>from_m</em>&nbsp;</td><td>starting coordinate, row number </td></tr>
289    <tr><td valign="top"></td><td valign="top"><em>to_m</em>&nbsp;</td><td>goal coordinate, row number </td></tr>
290    <tr><td valign="top"></td><td valign="top"><em>from_n</em>&nbsp;</td><td>starting coordinate, column number </td></tr>
291    <tr><td valign="top"></td><td valign="top"><em>to_n</em>&nbsp;</td><td>goal coordinate, row number </td></tr>
292    <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>
293    <tr><td valign="top"></td><td valign="top"><em>L</em>&nbsp;</td><td>number of permitted steps</td></tr>
294  </table>
295</dl>
296<dl class="return" compact><dt><b>Returns:</b></dt><dd><ul>
297<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>
298</dd></dl>
299<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>
300Note 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.)
301<p>References <a class="el" href="ldpc_8h-source.html#l00108">itpp::LDPC_Parity::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">itpp::LDPC_Parity::get_row()</a>, <a class="el" href="ldpc_8h-source.html#l00169">itpp::LDPC_Parity::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>
302
303<p>Referenced by <a class="el" href="ldpc_8cpp-source.html#l00249">itpp::LDPC_Parity::check_for_cycles()</a>, and <a class="el" href="ldpc_8cpp-source.html#l00462">itpp::LDPC_Parity_Unstructured::generate_random_H()</a>.</p>
304
305</div>
306</div><p>
307<a class="anchor" name="2849e24a0089c0b62105b8bbc4072d0e"></a><!-- doxytag: member="itpp::BLDPC_Parity::check_for_cycles" ref="2849e24a0089c0b62105b8bbc4072d0e" args="(int L) const " -->
308<div class="memitem">
309<div class="memproto">
310      <table class="memname">
311        <tr>
312          <td class="memname">int itpp::LDPC_Parity::check_for_cycles           </td>
313          <td>(</td>
314          <td class="paramtype">int&nbsp;</td>
315          <td class="paramname"> <em>L</em>          </td>
316          <td>&nbsp;)&nbsp;</td>
317          <td> const<code> [protected, inherited]</code></td>
318        </tr>
319      </table>
320</div>
321<div class="memdoc">
322
323<p>
324Check for cycles of length L.
325<p>
326This 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>
327<dl compact><dt><b>Parameters:</b></dt><dd>
328  <table border="0" cellspacing="2" cellpadding="0">
329    <tr><td valign="top"></td><td valign="top"><em>L</em>&nbsp;</td><td>length of cycles to look for</td></tr>
330  </table>
331</dl>
332<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>
333<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>
334
335<p>References <a class="el" href="ldpc_8cpp-source.html#l00192">itpp::LDPC_Parity::check_connectivity()</a>, <a class="el" href="ldpc_8h-source.html#l00108">itpp::LDPC_Parity::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">itpp::LDPC_Parity::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">itpp::LDPC_Parity::nvar</a>.</p>
336
337</div>
338</div><p>
339<hr>The documentation for this class was generated from the following files:<ul>
340<li><a class="el" href="ldpc_8h-source.html">ldpc.h</a><li><a class="el" href="ldpc_8cpp.html">ldpc.cpp</a></ul>
341</div>
342<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by&nbsp;
343<a href="http://www.doxygen.org/index.html">
344<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
345</body>
346</html>
Note: See TracBrowser for help on using the browser.