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 | <!-- |
---|
10 | function 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 | } |
---|
22 | function 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 | } |
---|
46 | window.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 Page</span></a></li> |
---|
53 | <li><a href="pages.html"><span>Related 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 List</span></a></li> |
---|
62 | <li><a href="classes.html"><span>Class Index</span></a></li> |
---|
63 | <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> |
---|
64 | <li><a href="functions.html"><span>Class 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 <<a class="el" href="ldpc_8h-source.html">ldpc.h</a>></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 | </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"> </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 | </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"> </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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#ee1053169c321751ce26b714328b5a9a">LDPC_Parity</a> (const std::string &filename, const std::string &format)</td></tr> |
---|
90 | |
---|
91 | <tr><td class="mdescLeft"> </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 &alist)" --> |
---|
93 | </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> &alist)</td></tr> |
---|
94 | |
---|
95 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor, from a <code><a class="el" href="classitpp_1_1GF2mat__sparse__alist.html" title="Parameterized "alist" 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="()" --> |
---|
97 | virtual </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"> </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)" --> |
---|
101 | void </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"> </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> </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"> </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>< <a class="el" href="classitpp_1_1bin.html">bin</a> > </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"> </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>< <a class="el" href="classitpp_1_1bin.html">bin</a> > </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"> </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 " --> |
---|
117 | int </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"> </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 " --> |
---|
121 | int </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"> </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)" --> |
---|
125 | void </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"> </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> </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"> </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> </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"> </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 " --> |
---|
137 | virtual void </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"> </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 " --> |
---|
141 | double </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"> </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 &H_alist)" --> |
---|
145 | void </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> &H_alist)</td></tr> |
---|
146 | |
---|
147 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Import matrix from <code><a class="el" href="classitpp_1_1GF2mat__sparse__alist.html" title="Parameterized "alist" 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> </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"> </td><td class="mdescRight">Export matrix to <code><a class="el" href="classitpp_1_1GF2mat__sparse__alist.html" title="Parameterized "alist" 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 &alist_file)" --> |
---|
153 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#0a8956859defe1d19e79441b9da281b3">load_alist</a> (const std::string &alist_file)</td></tr> |
---|
154 | |
---|
155 | <tr><td class="mdescLeft"> </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 &alist_file) const " --> |
---|
157 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#f653d919cb8c3d08e2d700809155999a">save_alist</a> (const std::string &alist_file) const </td></tr> |
---|
158 | |
---|
159 | <tr><td class="mdescLeft"> </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 </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"> </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 </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"> </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="" --> |
---|
169 | bool </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"> </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> </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"> </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> </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"> </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="" --> |
---|
181 | int </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"> </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="" --> |
---|
185 | int </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"> </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="" --> |
---|
189 | ivec </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"> </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="" --> |
---|
193 | ivec </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"> </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="" --> |
---|
198 | static const int </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"> </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="" --> |
---|
203 | class </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> |
---|
207 | LDPC parity check matrix generic class. |
---|
208 | <p> |
---|
209 | 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.<p> |
---|
210 | 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.<p> |
---|
211 | All 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 "alist" representation of sparse GF(2) matrix.">GF2mat_sparse_alist</a></code> format.<p> |
---|
212 | However, 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> |
---|
213 | Please 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 & Destructor Documentation</h2> |
---|
216 | <a class="anchor" name="ee1053169c321751ce26b714328b5a9a"></a><!-- doxytag: member="itpp::LDPC_Parity::LDPC_Parity" ref="ee1053169c321751ce26b714328b5a9a" args="(const std::string &filename, const std::string &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 & </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 & </td> |
---|
230 | <td class="paramname"> <em>format</em></td><td> </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> |
---|
242 | Load 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> </td><td>file name </td></tr> |
---|
247 | <tr><td valign="top"></td><td valign="top"><em>format</em> </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 "alist" 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 </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 </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 </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 </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 </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 </td> |
---|
296 | <td class="paramname"> <em>L</em></td><td> </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> |
---|
308 | Check for connectivity between nodes. |
---|
309 | <p> |
---|
310 | 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.<p> |
---|
311 | 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.<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> </td><td>starting coordinate, row number </td></tr> |
---|
315 | <tr><td valign="top"></td><td valign="top"><em>to_m</em> </td><td>goal coordinate, row number </td></tr> |
---|
316 | <tr><td valign="top"></td><td valign="top"><em>from_n</em> </td><td>starting coordinate, column number </td></tr> |
---|
317 | <tr><td valign="top"></td><td valign="top"><em>to_n</em> </td><td>goal coordinate, row number </td></tr> |
---|
318 | <tr><td valign="top"></td><td valign="top"><em>g</em> </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> </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>>=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> |
---|
326 | Note 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< T >::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 </td> |
---|
341 | <td class="paramname"> <em>L</em> </td> |
---|
342 | <td> ) </td> |
---|
343 | <td> const<code> [protected]</code></td> |
---|
344 | </tr> |
---|
345 | </table> |
---|
346 | </div> |
---|
347 | <div class="memdoc"> |
---|
348 | |
---|
349 | <p> |
---|
350 | Check for cycles of length L. |
---|
351 | <p> |
---|
352 | 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.<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> </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< T >::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 |
---|
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> |
---|