root/doc/html/classitpp_1_1LDPC__Generator__Systematic.html @ 354

Revision 353, 14.8 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_Generator_Systematic 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__Generator__Systematic.html">LDPC_Generator_Systematic</a>
68  </div>
69</div>
70<div class="contents">
71<h1>itpp::LDPC_Generator_Systematic Class Reference</h1><!-- doxytag: class="itpp::LDPC_Generator_Systematic" --><!-- doxytag: inherits="itpp::LDPC_Generator" -->Systematic LDPC Generator 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__Generator__Systematic-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="2ae4b407f208eb9c5f25ad7070455cb9"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::LDPC_Generator_Systematic" ref="2ae4b407f208eb9c5f25ad7070455cb9" args="()" -->
82&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator__Systematic.html#2ae4b407f208eb9c5f25ad7070455cb9">LDPC_Generator_Systematic</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="0c1eab39ad47e976c2fcdc7bf930e34e"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::LDPC_Generator_Systematic" ref="0c1eab39ad47e976c2fcdc7bf930e34e" args="(LDPC_Parity *const H, bool natural_ordering=false, const ivec &amp;ind=&quot;&quot;)" -->
86&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator__Systematic.html#0c1eab39ad47e976c2fcdc7bf930e34e">LDPC_Generator_Systematic</a> (<a class="el" href="classitpp_1_1LDPC__Parity.html">LDPC_Parity</a> *const H, bool natural_ordering=false, const ivec &amp;ind=&quot;&quot;)</td></tr>
87
88<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parametrized constructor. <br></td></tr>
89<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="49202667fe5764c29fc2a2c92af46797"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::~LDPC_Generator_Systematic" ref="49202667fe5764c29fc2a2c92af46797" args="()" -->
90virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator__Systematic.html#49202667fe5764c29fc2a2c92af46797">~LDPC_Generator_Systematic</a> ()</td></tr>
91
92<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Virtual destructor. <br></td></tr>
93<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9d76bceeb0ce1dc6fda83abacd5583a1"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::encode" ref="9d76bceeb0ce1dc6fda83abacd5583a1" args="(const bvec &amp;input, bvec &amp;output)" -->
94virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator__Systematic.html#9d76bceeb0ce1dc6fda83abacd5583a1">encode</a> (const bvec &amp;input, bvec &amp;output)</td></tr>
95
96<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generator specific encode function. <br></td></tr>
97<tr><td class="memItemLeft" nowrap align="right" valign="top">ivec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator__Systematic.html#4d57d681c7b574e63542cb5fc22d190f">construct</a> (<a class="el" href="classitpp_1_1LDPC__Parity.html">LDPC_Parity</a> *const H, bool natural_ordering=false, const ivec &amp;ind=&quot;&quot;)</td></tr>
98
99<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct systematic generator matrix.  <a href="#4d57d681c7b574e63542cb5fc22d190f"></a><br></td></tr>
100<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="08a7401d1e74e5bf7125315690714a1b"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::get_type" ref="08a7401d1e74e5bf7125315690714a1b" args="() const " -->
101std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator.html#08a7401d1e74e5bf7125315690714a1b">get_type</a> () const </td></tr>
102
103<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return generator type. <br></td></tr>
104<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
105<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d43ea5930f83bc13c4bd30bccde35c18"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::save" ref="d43ea5930f83bc13c4bd30bccde35c18" args="(const std::string &amp;filename) const " -->
106virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator__Systematic.html#d43ea5930f83bc13c4bd30bccde35c18">save</a> (const std::string &amp;filename) const </td></tr>
107
108<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save generator data to a file. <br></td></tr>
109<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d36ad875dce9351e322075d4d0d548e2"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::load" ref="d36ad875dce9351e322075d4d0d548e2" args="(const std::string &amp;filename)" -->
110virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator__Systematic.html#d36ad875dce9351e322075d4d0d548e2">load</a> (const std::string &amp;filename)</td></tr>
111
112<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read generator data from a file. <br></td></tr>
113<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
114<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="269fad976f1590c09c5331b2cb7407bc"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::init_flag" ref="269fad976f1590c09c5331b2cb7407bc" args="" -->
115bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator.html#269fad976f1590c09c5331b2cb7407bc">init_flag</a></td></tr>
116
117<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">True if generator is initialized. <br></td></tr>
118<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3a3ee287a74880985500b0470c10393f"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::type" ref="3a3ee287a74880985500b0470c10393f" args="" -->
119std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Generator.html#3a3ee287a74880985500b0470c10393f">type</a></td></tr>
120
121<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generator type. <br></td></tr>
122</table>
123<hr><a name="_details"></a><h2>Detailed Description</h2>
124Systematic LDPC Generator class.
125<p>
126A generator is basically a dense GF(2) matrix with a constructor that can create the generator matrix from a parity check matrix.<p>
127<dl class="note" compact><dt><b>Note:</b></dt><dd>Please refer to the tutorials for examples of how to use this class.</dd></dl>
128<dl class="author" compact><dt><b>Author:</b></dt><dd>Erik G. Larsson and Adam Piatyszek </dd></dl>
129<hr><h2>Member Function Documentation</h2>
130<a class="anchor" name="4d57d681c7b574e63542cb5fc22d190f"></a><!-- doxytag: member="itpp::LDPC_Generator_Systematic::construct" ref="4d57d681c7b574e63542cb5fc22d190f" args="(LDPC_Parity *const H, bool natural_ordering=false, const ivec &amp;ind=&quot;&quot;)" -->
131<div class="memitem">
132<div class="memproto">
133      <table class="memname">
134        <tr>
135          <td class="memname">ivec itpp::LDPC_Generator_Systematic::construct           </td>
136          <td>(</td>
137          <td class="paramtype"><a class="el" href="classitpp_1_1LDPC__Parity.html">LDPC_Parity</a> *const &nbsp;</td>
138          <td class="paramname"> <em>H</em>, </td>
139        </tr>
140        <tr>
141          <td class="paramkey"></td>
142          <td></td>
143          <td class="paramtype">bool&nbsp;</td>
144          <td class="paramname"> <em>natural_ordering</em> = <code>false</code>, </td>
145        </tr>
146        <tr>
147          <td class="paramkey"></td>
148          <td></td>
149          <td class="paramtype">const ivec &amp;&nbsp;</td>
150          <td class="paramname"> <em>ind</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
151        </tr>
152        <tr>
153          <td></td>
154          <td>)</td>
155          <td></td><td></td><td></td>
156        </tr>
157      </table>
158</div>
159<div class="memdoc">
160
161<p>
162Construct systematic generator matrix.
163<p>
164This function constructs a systematic generator matrix from a parity check matrix (<code><a class="el" href="classitpp_1_1LDPC__Parity.html" title="LDPC parity check matrix generic class.">LDPC_Parity</a></code>). The order of the columns is randomized unless otherwise requested via the <code>natural_ordering</code> parameter.<p>
165<dl compact><dt><b>Parameters:</b></dt><dd>
166  <table border="0" cellspacing="2" cellpadding="0">
167    <tr><td valign="top"></td><td valign="top"><em>H</em>&nbsp;</td><td>A pointer to the parity check matrix <code>H</code> </td></tr>
168    <tr><td valign="top"></td><td valign="top"><em>natural_ordering</em>&nbsp;</td><td>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.</td></tr>
169    <tr><td valign="top"></td><td valign="top"><em>ind</em>&nbsp;</td><td>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.</td></tr>
170  </table>
171</dl>
172<dl class="return" compact><dt><b>Returns:</b></dt><dd>This function returns the permutation vector <code>P</code> 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 <code>H</code>. The k-th column of the original <code>H</code> is the <code>P(k)-th</code> column of the rearranged <code>H</code>.</dd></dl>
173<dl class="note" compact><dt><b>Note:</b></dt><dd>This function modifies the parity check matrix <code>H</code>. Its columns may be sorted so that it gets the structure <img class="formulaInl" alt="$ H = [H_{1} H_{2}] $" src="form_243.png"> where <img class="formulaInl" alt="$ H_{2} $" src="form_244.png"> is square and invertible. The computed generator then satisfies <img class="formulaInl" alt="$ [H_{1} H_{2}][I; G'] = 0 $" src="form_245.png">. </dd></dl>
174
175<p>References <a class="el" href="gf2mat_8cpp-source.html#l00519">itpp::GF2mat::concatenate_horizontal()</a>, <a class="el" href="gf2mat_8h-source.html#l00483">itpp::GF2mat::get()</a>, <a class="el" href="ldpc_8h-source.html#l00103">itpp::LDPC_Parity::get_H()</a>, <a class="el" href="ldpc_8h-source.html#l00123">itpp::LDPC_Parity::get_ncheck()</a>, <a class="el" href="ldpc_8h-source.html#l00114">itpp::LDPC_Parity::get_nvar()</a>, <a class="el" href="ldpc_8h-source.html#l00539">itpp::LDPC_Generator::init_flag</a>, <a class="el" href="gf2mat_8cpp-source.html#l00748">itpp::GF2mat::inverse()</a>, <a class="el" href="itassert_8h-source.html#l00107">it_assert_debug</a>, <a class="el" href="itassert_8h-source.html#l00117">it_error_if</a>, <a class="el" href="itassert_8h-source.html#l00163">it_info_debug</a>, <a class="el" href="matfunc_8h-source.html#l00051">itpp::length()</a>, <a class="el" href="random_8h-source.html#l00608">itpp::randu()</a>, <a class="el" href="matfunc_8h-source.html#l00531">itpp::rank()</a>, <a class="el" href="ldpc_8cpp-source.html#l00083">itpp::LDPC_Parity::set()</a>, <a class="el" href="gf2mat_8cpp-source.html#l00561">itpp::GF2mat::T_fact()</a>, <a class="el" href="gf2mat_8cpp-source.html#l00697">itpp::GF2mat::T_fact_update_addcol()</a>, <a class="el" href="gf2mat_8cpp-source.html#l00935">itpp::GF2mat::transpose()</a>, and <a class="el" href="matfunc_8h-source.html#l00308">itpp::transpose()</a>.</p>
176
177<p>Referenced by <a class="el" href="ldpc_8cpp-source.html#l00884">LDPC_Generator_Systematic()</a>.</p>
178
179</div>
180</div><p>
181<hr>The documentation for this class was generated from the following files:<ul>
182<li><a class="el" href="ldpc_8h-source.html">ldpc.h</a><li><a class="el" href="ldpc_8cpp.html">ldpc.cpp</a></ul>
183</div>
184<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by&nbsp;
185<a href="http://www.doxygen.org/index.html">
186<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
187</body>
188</html>
Note: See TracBrowser for help on using the browser.