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_Regular 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__Regular.html">LDPC_Parity_Regular</a> |
---|
68 | </div> |
---|
69 | </div> |
---|
70 | <div class="contents"> |
---|
71 | <h1>itpp::LDPC_Parity_Regular Class Reference</h1><!-- doxytag: class="itpp::LDPC_Parity_Regular" --><!-- doxytag: inherits="itpp::LDPC_Parity_Unstructured" -->Regular LDPC code generator 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__Regular-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="aa40e6cf74fee6374fd9f220ad05246e"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::LDPC_Parity_Regular" ref="aa40e6cf74fee6374fd9f220ad05246e" args="()" --> |
---|
82 | </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity__Regular.html#aa40e6cf74fee6374fd9f220ad05246e">LDPC_Parity_Regular</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="5cd74405654329440bceb0c7a1dd2c01"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::LDPC_Parity_Regular" ref="5cd74405654329440bceb0c7a1dd2c01" args="(int Nvar, int k, int l, const std::string &method="rand", const ivec &options="200 6")" --> |
---|
86 | </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity__Regular.html#5cd74405654329440bceb0c7a1dd2c01">LDPC_Parity_Regular</a> (int Nvar, int k, int l, const std::string &method="rand", const ivec &options="200 6")</td></tr> |
---|
87 | |
---|
88 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor that invokes <code><a class="el" href="classitpp_1_1LDPC__Parity__Regular.html#abff119396a06dd6ab69d54d83fec234" title="Generate a (k,l) regular LDPC code.">generate()</a></code> method. <br></td></tr> |
---|
89 | <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity__Regular.html#abff119396a06dd6ab69d54d83fec234">generate</a> (int Nvar, int k, int l, const std::string &method="rand", const ivec &options="200 6")</td></tr> |
---|
90 | |
---|
91 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a (k,l) regular LDPC code. <a href="#abff119396a06dd6ab69d54d83fec234"></a><br></td></tr> |
---|
92 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d82cdfa215699c583a1d7cb3bb0de691"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::display_stats" ref="d82cdfa215699c583a1d7cb3bb0de691" args="() const " --> |
---|
93 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity__Regular.html#d82cdfa215699c583a1d7cb3bb0de691">display_stats</a> () const </td></tr> |
---|
94 | |
---|
95 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Display some information about the matrix. <br></td></tr> |
---|
96 | <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity__Unstructured.html#32dc0098889fb7cbe925122a220ba504">cycle_removal_MGW</a> (int L)</td></tr> |
---|
97 | |
---|
98 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Remove cycles (loops) from unstructured parity check matrix. <a href="#32dc0098889fb7cbe925122a220ba504"></a><br></td></tr> |
---|
99 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f43eb94744828d0203ecef66f10ea252"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::initialize" ref="f43eb94744828d0203ecef66f10ea252" args="(int ncheck, int nvar)" --> |
---|
100 | 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> |
---|
101 | |
---|
102 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize an empty matrix of size ncheck x nvar. <br></td></tr> |
---|
103 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5943f4ca9d8b00dca5fd85f603b4b1c0"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::get_H" ref="5943f4ca9d8b00dca5fd85f603b4b1c0" args="(bool transpose=false) const " --> |
---|
104 | <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> |
---|
105 | |
---|
106 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the parity check matrix, optionally its transposed form. <br></td></tr> |
---|
107 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b033b6ca4ab2b951cc503e05d6c9a61b"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::get_col" ref="b033b6ca4ab2b951cc503e05d6c9a61b" args="(int c) const " --> |
---|
108 | <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> |
---|
109 | |
---|
110 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get a specific column from the matrix. <br></td></tr> |
---|
111 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2740d5f207c00bbcfcd610d9aa96527e"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::get_row" ref="2740d5f207c00bbcfcd610d9aa96527e" args="(int r) const " --> |
---|
112 | <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> |
---|
113 | |
---|
114 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get a specific row from the matrix. <br></td></tr> |
---|
115 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e63f3e0488b7c8b0402b7ca2b659f14"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::get_nvar" ref="7e63f3e0488b7c8b0402b7ca2b659f14" args="() const " --> |
---|
116 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#7e63f3e0488b7c8b0402b7ca2b659f14">get_nvar</a> () const </td></tr> |
---|
117 | |
---|
118 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of variable nodes (number of columns). <br></td></tr> |
---|
119 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="187f147ffeca6c2744235cbf27ce22f3"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::get_ncheck" ref="187f147ffeca6c2744235cbf27ce22f3" args="() const " --> |
---|
120 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#187f147ffeca6c2744235cbf27ce22f3">get_ncheck</a> () const </td></tr> |
---|
121 | |
---|
122 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of check nodes (number of rows). <br></td></tr> |
---|
123 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9847b116e69bd7edcaef3704d5b997f8"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::set" ref="9847b116e69bd7edcaef3704d5b997f8" args="(int i, int j, bin value)" --> |
---|
124 | 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> |
---|
125 | |
---|
126 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set element (i,j) of the parity check matrix to value. <br></td></tr> |
---|
127 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c70ddfe8b703d1eb4d22a19f10f0e8c9"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::get" ref="c70ddfe8b703d1eb4d22a19f10f0e8c9" args="(int i, int j) const " --> |
---|
128 | <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> |
---|
129 | |
---|
130 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get element (i,j) of the parity check matrix. <br></td></tr> |
---|
131 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2b2923d5f0ffafe41a427326f34c8784"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::operator()" ref="2b2923d5f0ffafe41a427326f34c8784" args="(int i, int j) const " --> |
---|
132 | <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> |
---|
133 | |
---|
134 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get element (i,j) of the parity check matrix. <br></td></tr> |
---|
135 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="35bd2abd71714312866811d3255d68c8"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::get_rate" ref="35bd2abd71714312866811d3255d68c8" args="() const " --> |
---|
136 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#35bd2abd71714312866811d3255d68c8">get_rate</a> () const </td></tr> |
---|
137 | |
---|
138 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the code rate. <br></td></tr> |
---|
139 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4e1fd0b2147b5d486e24538615e1fbf4"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::import_alist" ref="4e1fd0b2147b5d486e24538615e1fbf4" args="(const GF2mat_sparse_alist &H_alist)" --> |
---|
140 | 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> |
---|
141 | |
---|
142 | <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> |
---|
143 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="811f5be45f91edf337d1ec48a125f2a7"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::export_alist" ref="811f5be45f91edf337d1ec48a125f2a7" args="() const " --> |
---|
144 | <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> |
---|
145 | |
---|
146 | <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> |
---|
147 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0a8956859defe1d19e79441b9da281b3"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::load_alist" ref="0a8956859defe1d19e79441b9da281b3" args="(const std::string &alist_file)" --> |
---|
148 | 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> |
---|
149 | |
---|
150 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Load matrix from <code>alist_file</code> text file in alist format. <br></td></tr> |
---|
151 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f653d919cb8c3d08e2d700809155999a"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::save_alist" ref="f653d919cb8c3d08e2d700809155999a" args="(const std::string &alist_file) const " --> |
---|
152 | 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> |
---|
153 | |
---|
154 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Save matrix to <code>alist_file</code> text file in alist format. <br></td></tr> |
---|
155 | <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> |
---|
156 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="65d83d2aa65aa098b10341da4adba70e"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::generate_random_H" ref="65d83d2aa65aa098b10341da4adba70e" args="(const ivec &C, const ivec &R, const ivec &cycopt)" --> |
---|
157 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity__Unstructured.html#65d83d2aa65aa098b10341da4adba70e">generate_random_H</a> (const ivec &C, const ivec &R, const ivec &cycopt)</td></tr> |
---|
158 | |
---|
159 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generate a random parity check matrix. <br></td></tr> |
---|
160 | <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity__Unstructured.html#143f0a5c1def918e21fe30bcd5af176c">compute_CR</a> (const vec &var_deg, const vec &chk_deg, const int Nvar, ivec &C, ivec &R)</td></tr> |
---|
161 | |
---|
162 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Compute target number of columns (C) and rows (R) with a specific number of ones. <a href="#143f0a5c1def918e21fe30bcd5af176c"></a><br></td></tr> |
---|
163 | <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> |
---|
164 | |
---|
165 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Check for cycles of length L. <a href="#2849e24a0089c0b62105b8bbc4072d0e"></a><br></td></tr> |
---|
166 | <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> |
---|
167 | |
---|
168 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Check for connectivity between nodes. <a href="#d30f8e78f5e951be44660d0750b70cb6"></a><br></td></tr> |
---|
169 | <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> |
---|
170 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74998d26a4dd6057f3a8be6ac4f2c5c1"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::init_flag" ref="74998d26a4dd6057f3a8be6ac4f2c5c1" args="" --> |
---|
171 | bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#74998d26a4dd6057f3a8be6ac4f2c5c1">init_flag</a></td></tr> |
---|
172 | |
---|
173 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Flag that indicates proper initialization. <br></td></tr> |
---|
174 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f51c1108ec92883ef46a55083e7263ec"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::H" ref="f51c1108ec92883ef46a55083e7263ec" args="" --> |
---|
175 | <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> |
---|
176 | |
---|
177 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The parity check matrix. <br></td></tr> |
---|
178 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0355499a802f0aeb3cb1b5f720fdc924"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::Ht" ref="0355499a802f0aeb3cb1b5f720fdc924" args="" --> |
---|
179 | <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> |
---|
180 | |
---|
181 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The transposed parity check matrix. <br></td></tr> |
---|
182 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e8697111c53562022e2f367593366c7"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::nvar" ref="7e8697111c53562022e2f367593366c7" args="" --> |
---|
183 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#7e8697111c53562022e2f367593366c7">nvar</a></td></tr> |
---|
184 | |
---|
185 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of variable nodes. <br></td></tr> |
---|
186 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="82403ae65de864fdbe4fcdd4d83caff2"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::ncheck" ref="82403ae65de864fdbe4fcdd4d83caff2" args="" --> |
---|
187 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#82403ae65de864fdbe4fcdd4d83caff2">ncheck</a></td></tr> |
---|
188 | |
---|
189 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of check nodes. <br></td></tr> |
---|
190 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d57f9e546f3a50b1dd84a587e36562fc"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::sumX1" ref="d57f9e546f3a50b1dd84a587e36562fc" args="" --> |
---|
191 | ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#d57f9e546f3a50b1dd84a587e36562fc">sumX1</a></td></tr> |
---|
192 | |
---|
193 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Actual number of ones in each column. <br></td></tr> |
---|
194 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c4347f86ad11c0f303f52a5134e851c"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::sumX2" ref="4c4347f86ad11c0f303f52a5134e851c" args="" --> |
---|
195 | ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#4c4347f86ad11c0f303f52a5134e851c">sumX2</a></td></tr> |
---|
196 | |
---|
197 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Actual number of ones in each row. <br></td></tr> |
---|
198 | <tr><td colspan="2"><br><h2>Static Protected Attributes</h2></td></tr> |
---|
199 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0114010da4b27165cfc748f23d15edeb"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::Nmax" ref="0114010da4b27165cfc748f23d15edeb" args="" --> |
---|
200 | static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1LDPC__Parity.html#0114010da4b27165cfc748f23d15edeb">Nmax</a> = 200</td></tr> |
---|
201 | |
---|
202 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum node degree class can handle. <br></td></tr> |
---|
203 | </table> |
---|
204 | <hr><a name="_details"></a><h2>Detailed Description</h2> |
---|
205 | Regular LDPC code generator class. |
---|
206 | <p> |
---|
207 | <dl class="author" compact><dt><b>Author:</b></dt><dd>Erik G. Larsson, Mattias Andersson and Adam Piatyszek </dd></dl> |
---|
208 | <hr><h2>Member Function Documentation</h2> |
---|
209 | <a class="anchor" name="d30f8e78f5e951be44660d0750b70cb6"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::check_connectivity" ref="d30f8e78f5e951be44660d0750b70cb6" args="(int from_m, int from_n, int to_m, int to_n, int g, int L) const " --> |
---|
210 | <div class="memitem"> |
---|
211 | <div class="memproto"> |
---|
212 | <table class="memname"> |
---|
213 | <tr> |
---|
214 | <td class="memname">int itpp::LDPC_Parity::check_connectivity </td> |
---|
215 | <td>(</td> |
---|
216 | <td class="paramtype">int </td> |
---|
217 | <td class="paramname"> <em>from_m</em>, </td> |
---|
218 | </tr> |
---|
219 | <tr> |
---|
220 | <td class="paramkey"></td> |
---|
221 | <td></td> |
---|
222 | <td class="paramtype">int </td> |
---|
223 | <td class="paramname"> <em>from_n</em>, </td> |
---|
224 | </tr> |
---|
225 | <tr> |
---|
226 | <td class="paramkey"></td> |
---|
227 | <td></td> |
---|
228 | <td class="paramtype">int </td> |
---|
229 | <td class="paramname"> <em>to_m</em>, </td> |
---|
230 | </tr> |
---|
231 | <tr> |
---|
232 | <td class="paramkey"></td> |
---|
233 | <td></td> |
---|
234 | <td class="paramtype">int </td> |
---|
235 | <td class="paramname"> <em>to_n</em>, </td> |
---|
236 | </tr> |
---|
237 | <tr> |
---|
238 | <td class="paramkey"></td> |
---|
239 | <td></td> |
---|
240 | <td class="paramtype">int </td> |
---|
241 | <td class="paramname"> <em>g</em>, </td> |
---|
242 | </tr> |
---|
243 | <tr> |
---|
244 | <td class="paramkey"></td> |
---|
245 | <td></td> |
---|
246 | <td class="paramtype">int </td> |
---|
247 | <td class="paramname"> <em>L</em></td><td> </td> |
---|
248 | </tr> |
---|
249 | <tr> |
---|
250 | <td></td> |
---|
251 | <td>)</td> |
---|
252 | <td></td><td></td><td> const<code> [protected, inherited]</code></td> |
---|
253 | </tr> |
---|
254 | </table> |
---|
255 | </div> |
---|
256 | <div class="memdoc"> |
---|
257 | |
---|
258 | <p> |
---|
259 | Check for connectivity between nodes. |
---|
260 | <p> |
---|
261 | 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> |
---|
262 | 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> |
---|
263 | <dl compact><dt><b>Parameters:</b></dt><dd> |
---|
264 | <table border="0" cellspacing="2" cellpadding="0"> |
---|
265 | <tr><td valign="top"></td><td valign="top"><em>from_m</em> </td><td>starting coordinate, row number </td></tr> |
---|
266 | <tr><td valign="top"></td><td valign="top"><em>to_m</em> </td><td>goal coordinate, row number </td></tr> |
---|
267 | <tr><td valign="top"></td><td valign="top"><em>from_n</em> </td><td>starting coordinate, column number </td></tr> |
---|
268 | <tr><td valign="top"></td><td valign="top"><em>to_n</em> </td><td>goal coordinate, row number </td></tr> |
---|
269 | <tr><td valign="top"></td><td valign="top"><em>g</em> </td><td>direction: 1=start going vertically, 2=start going horizontally </td></tr> |
---|
270 | <tr><td valign="top"></td><td valign="top"><em>L</em> </td><td>number of permitted steps</td></tr> |
---|
271 | </table> |
---|
272 | </dl> |
---|
273 | <dl class="return" compact><dt><b>Returns:</b></dt><dd><ul> |
---|
274 | <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> |
---|
275 | </dd></dl> |
---|
276 | <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> |
---|
277 | 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.) |
---|
278 | <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< T >::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> |
---|
279 | |
---|
280 | <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> |
---|
281 | |
---|
282 | </div> |
---|
283 | </div><p> |
---|
284 | <a class="anchor" name="2849e24a0089c0b62105b8bbc4072d0e"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::check_for_cycles" ref="2849e24a0089c0b62105b8bbc4072d0e" args="(int L) const " --> |
---|
285 | <div class="memitem"> |
---|
286 | <div class="memproto"> |
---|
287 | <table class="memname"> |
---|
288 | <tr> |
---|
289 | <td class="memname">int itpp::LDPC_Parity::check_for_cycles </td> |
---|
290 | <td>(</td> |
---|
291 | <td class="paramtype">int </td> |
---|
292 | <td class="paramname"> <em>L</em> </td> |
---|
293 | <td> ) </td> |
---|
294 | <td> const<code> [protected, inherited]</code></td> |
---|
295 | </tr> |
---|
296 | </table> |
---|
297 | </div> |
---|
298 | <div class="memdoc"> |
---|
299 | |
---|
300 | <p> |
---|
301 | Check for cycles of length L. |
---|
302 | <p> |
---|
303 | 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> |
---|
304 | <dl compact><dt><b>Parameters:</b></dt><dd> |
---|
305 | <table border="0" cellspacing="2" cellpadding="0"> |
---|
306 | <tr><td valign="top"></td><td valign="top"><em>L</em> </td><td>length of cycles to look for</td></tr> |
---|
307 | </table> |
---|
308 | </dl> |
---|
309 | <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> |
---|
310 | <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> |
---|
311 | |
---|
312 | <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< T >::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> |
---|
313 | |
---|
314 | </div> |
---|
315 | </div><p> |
---|
316 | <a class="anchor" name="143f0a5c1def918e21fe30bcd5af176c"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::compute_CR" ref="143f0a5c1def918e21fe30bcd5af176c" args="(const vec &var_deg, const vec &chk_deg, const int Nvar, ivec &C, ivec &R)" --> |
---|
317 | <div class="memitem"> |
---|
318 | <div class="memproto"> |
---|
319 | <table class="memname"> |
---|
320 | <tr> |
---|
321 | <td class="memname">void itpp::LDPC_Parity_Unstructured::compute_CR </td> |
---|
322 | <td>(</td> |
---|
323 | <td class="paramtype">const vec & </td> |
---|
324 | <td class="paramname"> <em>var_deg</em>, </td> |
---|
325 | </tr> |
---|
326 | <tr> |
---|
327 | <td class="paramkey"></td> |
---|
328 | <td></td> |
---|
329 | <td class="paramtype">const vec & </td> |
---|
330 | <td class="paramname"> <em>chk_deg</em>, </td> |
---|
331 | </tr> |
---|
332 | <tr> |
---|
333 | <td class="paramkey"></td> |
---|
334 | <td></td> |
---|
335 | <td class="paramtype">const int </td> |
---|
336 | <td class="paramname"> <em>Nvar</em>, </td> |
---|
337 | </tr> |
---|
338 | <tr> |
---|
339 | <td class="paramkey"></td> |
---|
340 | <td></td> |
---|
341 | <td class="paramtype">ivec & </td> |
---|
342 | <td class="paramname"> <em>C</em>, </td> |
---|
343 | </tr> |
---|
344 | <tr> |
---|
345 | <td class="paramkey"></td> |
---|
346 | <td></td> |
---|
347 | <td class="paramtype">ivec & </td> |
---|
348 | <td class="paramname"> <em>R</em></td><td> </td> |
---|
349 | </tr> |
---|
350 | <tr> |
---|
351 | <td></td> |
---|
352 | <td>)</td> |
---|
353 | <td></td><td></td><td><code> [protected, inherited]</code></td> |
---|
354 | </tr> |
---|
355 | </table> |
---|
356 | </div> |
---|
357 | <div class="memdoc"> |
---|
358 | |
---|
359 | <p> |
---|
360 | Compute target number of columns (C) and rows (R) with a specific number of ones. |
---|
361 | <p> |
---|
362 | <dl compact><dt><b>Parameters:</b></dt><dd> |
---|
363 | <table border="0" cellspacing="2" cellpadding="0"> |
---|
364 | <tr><td valign="top"></td><td valign="top"><em>var_deg</em> </td><td>vector of variable degree distributions, from an edge perspective </td></tr> |
---|
365 | <tr><td valign="top"></td><td valign="top"><em>chk_deg</em> </td><td>vector of check degree distributions, from an edge perspective </td></tr> |
---|
366 | <tr><td valign="top"></td><td valign="top"><em>Nvar</em> </td><td>number of variable nodes </td></tr> |
---|
367 | <tr><td valign="top"></td><td valign="top"><em>C</em> </td><td>number of columns with a specific number of ones </td></tr> |
---|
368 | <tr><td valign="top"></td><td valign="top"><em>R</em> </td><td>number of rows with a specific number of ones</td></tr> |
---|
369 | </table> |
---|
370 | </dl> |
---|
371 | The result is passed by reference and saved in C and R. |
---|
372 | <p>References <a class="el" href="specmat_8cpp-source.html#l00039">itpp::find()</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="specmat_8cpp-source.html#l00114">itpp::linspace()</a>, <a class="el" href="tcp_8h-source.html#l00117">itpp::max()</a>, <a class="el" href="ldpc_8h-source.html#l00171">itpp::LDPC_Parity::Nmax</a>, <a class="el" href="converters_8h-source.html#l00327">itpp::round()</a>, <a class="el" href="matfunc_8h-source.html#l00077">itpp::sum()</a>, <a class="el" href="group__convertfunc.html#ga2c82af9774f45c3554fb03a06f3e28d">itpp::to_ivec()</a>, <a class="el" href="fix__functions_8cpp-source.html#l00036">itpp::to_vec()</a>, and <a class="el" href="group__specmat.html#g9df9aa3553b6a5c07924954b85466cec">itpp::zeros_i()</a>.</p> |
---|
373 | |
---|
374 | <p>Referenced by <a class="el" href="ldpc_8cpp-source.html#l00703">itpp::LDPC_Parity_Irregular::generate()</a>, and <a class="el" href="ldpc_8cpp-source.html#l00667">generate()</a>.</p> |
---|
375 | |
---|
376 | </div> |
---|
377 | </div><p> |
---|
378 | <a class="anchor" name="32dc0098889fb7cbe925122a220ba504"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::cycle_removal_MGW" ref="32dc0098889fb7cbe925122a220ba504" args="(int L)" --> |
---|
379 | <div class="memitem"> |
---|
380 | <div class="memproto"> |
---|
381 | <table class="memname"> |
---|
382 | <tr> |
---|
383 | <td class="memname">int itpp::LDPC_Parity_Unstructured::cycle_removal_MGW </td> |
---|
384 | <td>(</td> |
---|
385 | <td class="paramtype">int </td> |
---|
386 | <td class="paramname"> <em>L</em> </td> |
---|
387 | <td> ) </td> |
---|
388 | <td><code> [inherited]</code></td> |
---|
389 | </tr> |
---|
390 | </table> |
---|
391 | </div> |
---|
392 | <div class="memdoc"> |
---|
393 | |
---|
394 | <p> |
---|
395 | Remove cycles (loops) from unstructured parity check matrix. |
---|
396 | <p> |
---|
397 | This function implements the cycle removal algorithm presented by McGowan and Williamson at the IT workshop 2003. The maximum girth of the graph that will be attempted is L. The algorithm is bound to remove all loops of length L, insofar this is possible. I.e., it does not terminate until it is impossible to remove more cycles by swapping two edges.<p> |
---|
398 | <dl compact><dt><b>Parameters:</b></dt><dd> |
---|
399 | <table border="0" cellspacing="2" cellpadding="0"> |
---|
400 | <tr><td valign="top"></td><td valign="top"><em>L</em> </td><td>Target girth. For example, L=6 attempts to removes all 4-cycles. </td></tr> |
---|
401 | </table> |
---|
402 | </dl> |
---|
403 | <dl class="return" compact><dt><b>Returns:</b></dt><dd>The girth of the graph, i.e. the length of the shortest cycle. For example, a return value of 6 means that there are no 4-cycles.</dd></dl> |
---|
404 | <dl class="note" compact><dt><b>Note:</b></dt><dd>This algorithm can take a long time to run for large L or large graphs. </dd></dl> |
---|
405 | |
---|
406 | <p>References <a class="el" href="group__convertfunc.html#gb5745fd45c164c8d1e062359d0bf2783">itpp::floor_i()</a>, <a class="el" href="ldpc_8h-source.html#l00108">itpp::LDPC_Parity::get_col()</a>, <a class="el" href="svec_8h-source.html#l00239">itpp::Sparse_Vec< T >::get_nz_index()</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="itassert_8h-source.html#l00107">it_assert_debug</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="ldpc_8h-source.html#l00179">itpp::LDPC_Parity::ncheck</a>, <a class="el" href="svec_8h-source.html#l00151">itpp::Sparse_Vec< T >::nnz()</a>, <a class="el" href="ldpc_8h-source.html#l00177">itpp::LDPC_Parity::nvar</a>, <a class="el" href="random_8h-source.html#l00615">itpp::randi()</a>, <a class="el" href="random_8h-source.html#l00608">itpp::randu()</a>, and <a class="el" href="array_8h-source.html#l00257">itpp::Array< T >::set_size()</a>.</p> |
---|
407 | |
---|
408 | </div> |
---|
409 | </div><p> |
---|
410 | <a class="anchor" name="abff119396a06dd6ab69d54d83fec234"></a><!-- doxytag: member="itpp::LDPC_Parity_Regular::generate" ref="abff119396a06dd6ab69d54d83fec234" args="(int Nvar, int k, int l, const std::string &method="rand", const ivec &options="200 6")" --> |
---|
411 | <div class="memitem"> |
---|
412 | <div class="memproto"> |
---|
413 | <table class="memname"> |
---|
414 | <tr> |
---|
415 | <td class="memname">void itpp::LDPC_Parity_Regular::generate </td> |
---|
416 | <td>(</td> |
---|
417 | <td class="paramtype">int </td> |
---|
418 | <td class="paramname"> <em>Nvar</em>, </td> |
---|
419 | </tr> |
---|
420 | <tr> |
---|
421 | <td class="paramkey"></td> |
---|
422 | <td></td> |
---|
423 | <td class="paramtype">int </td> |
---|
424 | <td class="paramname"> <em>k</em>, </td> |
---|
425 | </tr> |
---|
426 | <tr> |
---|
427 | <td class="paramkey"></td> |
---|
428 | <td></td> |
---|
429 | <td class="paramtype">int </td> |
---|
430 | <td class="paramname"> <em>l</em>, </td> |
---|
431 | </tr> |
---|
432 | <tr> |
---|
433 | <td class="paramkey"></td> |
---|
434 | <td></td> |
---|
435 | <td class="paramtype">const std::string & </td> |
---|
436 | <td class="paramname"> <em>method</em> = <code>"rand"</code>, </td> |
---|
437 | </tr> |
---|
438 | <tr> |
---|
439 | <td class="paramkey"></td> |
---|
440 | <td></td> |
---|
441 | <td class="paramtype">const ivec & </td> |
---|
442 | <td class="paramname"> <em>options</em> = <code>"200 6"</code></td><td> </td> |
---|
443 | </tr> |
---|
444 | <tr> |
---|
445 | <td></td> |
---|
446 | <td>)</td> |
---|
447 | <td></td><td></td><td></td> |
---|
448 | </tr> |
---|
449 | </table> |
---|
450 | </div> |
---|
451 | <div class="memdoc"> |
---|
452 | |
---|
453 | <p> |
---|
454 | Generate a (k,l) regular LDPC code. |
---|
455 | <p> |
---|
456 | <dl compact><dt><b>Parameters:</b></dt><dd> |
---|
457 | <table border="0" cellspacing="2" cellpadding="0"> |
---|
458 | <tr><td valign="top"></td><td valign="top"><em>Nvar</em> </td><td>number of variable nodes </td></tr> |
---|
459 | <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>number of ones per column </td></tr> |
---|
460 | <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>number of ones per row </td></tr> |
---|
461 | <tr><td valign="top"></td><td valign="top"><em>method</em> </td><td>See <code><a class="el" href="classitpp_1_1LDPC__Parity__Irregular.html#c441e868691b1e6d634ee09db6228274" title="Generate an irregular LDPC code.">LDPC_Parity_Irregular::generate()</a></code> </td></tr> |
---|
462 | <tr><td valign="top"></td><td valign="top"><em>options</em> </td><td>See <code><a class="el" href="classitpp_1_1LDPC__Parity__Irregular.html#c441e868691b1e6d634ee09db6228274" title="Generate an irregular LDPC code.">LDPC_Parity_Irregular::generate()</a></code> </td></tr> |
---|
463 | </table> |
---|
464 | </dl> |
---|
465 | <dl class="note" compact><dt><b>Note:</b></dt><dd>Alternative (user-defined) methods for code generation can be implemented by inheriting <code><a class="el" href="classitpp_1_1LDPC__Parity__Regular.html" title="Regular LDPC code generator class.">LDPC_Parity_Regular</a></code>.<p> |
---|
466 | In some cases it may be impossible to construct a perfectly regular parity check matrix with the desired (k,l,Nvar) parameters. The degree distribution will then be automatically adjusted so that the matrix can be constructed and in this event the resulting code will not be perfectly regular. </dd></dl> |
---|
467 | |
---|
468 | <p>References <a class="el" href="ldpc_8cpp-source.html#l00598">itpp::LDPC_Parity_Unstructured::compute_CR()</a>, <a class="el" href="ldpc_8cpp-source.html#l00462">itpp::LDPC_Parity_Unstructured::generate_random_H()</a>, <a class="el" href="itassert_8h-source.html#l00126">it_error</a>, <a class="el" href="itassert_8h-source.html#l00163">it_info_debug</a>, <a class="el" href="group__convertfunc.html#gfba861d94f7752f6dfafcdf14b336ca5">itpp::round_i()</a>, <a class="el" href="matfunc_8h-source.html#l00077">itpp::sum()</a>, and <a class="el" href="group__specmat.html#g10723ecada06221cbe64fe2736a59de1">itpp::zeros()</a>.</p> |
---|
469 | |
---|
470 | <p>Referenced by <a class="el" href="ldpc_8cpp-source.html#l00660">LDPC_Parity_Regular()</a>.</p> |
---|
471 | |
---|
472 | </div> |
---|
473 | </div><p> |
---|
474 | <hr>The documentation for this class was generated from the following files:<ul> |
---|
475 | <li><a class="el" href="ldpc_8h-source.html">ldpc.h</a><li><a class="el" href="ldpc_8cpp.html">ldpc.cpp</a></ul> |
---|
476 | </div> |
---|
477 | <hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by |
---|
478 | <a href="http://www.doxygen.org/index.html"> |
---|
479 | <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address> |
---|
480 | </body> |
---|
481 | </html> |
---|