[353] | 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> |
---|