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::Punctured_Convolutional_Code 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_1Punctured__Convolutional__Code.html">Punctured_Convolutional_Code</a> |
---|
68 | </div> |
---|
69 | </div> |
---|
70 | <div class="contents"> |
---|
71 | <h1>itpp::Punctured_Convolutional_Code Class Reference<br> |
---|
72 | <small> |
---|
73 | [<a class="el" href="group__fec.html">Forward Error Correcting Codes</a>]</small> |
---|
74 | </h1><!-- doxytag: class="itpp::Punctured_Convolutional_Code" --><!-- doxytag: inherits="itpp::Convolutional_Code" -->Binary Punctured Convolutional Code Class. |
---|
75 | <a href="#_details">More...</a> |
---|
76 | <p> |
---|
77 | <code>#include <<a class="el" href="punct__convcode_8h-source.html">punct_convcode.h</a>></code> |
---|
78 | <p> |
---|
79 | |
---|
80 | <p> |
---|
81 | <a href="classitpp_1_1Punctured__Convolutional__Code-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> |
---|
82 | <tr><td></td></tr> |
---|
83 | <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> |
---|
84 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8f73e4bcd82e98ace9e52003483755e6"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::Punctured_Convolutional_Code" ref="8f73e4bcd82e98ace9e52003483755e6" args="(void)" --> |
---|
85 | </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#8f73e4bcd82e98ace9e52003483755e6">Punctured_Convolutional_Code</a> (void)</td></tr> |
---|
86 | |
---|
87 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br></td></tr> |
---|
88 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4917b5626e01e3566eb183be1e1db709"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::~Punctured_Convolutional_Code" ref="4917b5626e01e3566eb183be1e1db709" args="(void)" --> |
---|
89 | virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#4917b5626e01e3566eb183be1e1db709">~Punctured_Convolutional_Code</a> (void)</td></tr> |
---|
90 | |
---|
91 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br></td></tr> |
---|
92 | <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#3b8b66d056a2cde7ad92a8b6ce0c19ba">set_code</a> (const <a class="el" href="group__fec.html#ge9651aa649deec69310af24cd89b8729">CONVOLUTIONAL_CODE_TYPE</a> type_of_code, int inverse_rate, int constraint_length)</td></tr> |
---|
93 | |
---|
94 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the code according to built-in tables. <a href="#3b8b66d056a2cde7ad92a8b6ce0c19ba"></a><br></td></tr> |
---|
95 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="19de0087797a6b4da4d9e32523c49701"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::set_generator_polynomials" ref="19de0087797a6b4da4d9e32523c49701" args="(const ivec &gen, int constraint_length)" --> |
---|
96 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#19de0087797a6b4da4d9e32523c49701">set_generator_polynomials</a> (const ivec &gen, int constraint_length)</td></tr> |
---|
97 | |
---|
98 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set generator polynomials. Given in Proakis integer form. <br></td></tr> |
---|
99 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2e17fee30caf169e009ff6fba671b5fb"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::get_generator_polynomials" ref="2e17fee30caf169e009ff6fba671b5fb" args="() const " --> |
---|
100 | ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#2e17fee30caf169e009ff6fba671b5fb">get_generator_polynomials</a> () const </td></tr> |
---|
101 | |
---|
102 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get generator polynomials. <br></td></tr> |
---|
103 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="26441c092c8ab4b4e4bf480479a74232"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::get_rate" ref="26441c092c8ab4b4e4bf480479a74232" args="() const " --> |
---|
104 | virtual double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#26441c092c8ab4b4e4bf480479a74232">get_rate</a> () const </td></tr> |
---|
105 | |
---|
106 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Return rate of code. <br></td></tr> |
---|
107 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="086f61a5c99ca542520c28174c45023d"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::set_method" ref="086f61a5c99ca542520c28174c45023d" args="(const CONVOLUTIONAL_CODE_METHOD method)" --> |
---|
108 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#086f61a5c99ca542520c28174c45023d">set_method</a> (const <a class="el" href="group__fec.html#ge22fe2744a6f00b512ee75e304d72a82">CONVOLUTIONAL_CODE_METHOD</a> method)</td></tr> |
---|
109 | |
---|
110 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set encoding and decoding method (Trunc, Tail, or Tailbite). <br></td></tr> |
---|
111 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f85e15222896c0392b13e6d7a2e13751"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::set_puncture_matrix" ref="f85e15222896c0392b13e6d7a2e13751" args="(const bmat &pmatrix)" --> |
---|
112 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#f85e15222896c0392b13e6d7a2e13751">set_puncture_matrix</a> (const <a class="el" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69">bmat</a> &pmatrix)</td></tr> |
---|
113 | |
---|
114 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set puncture matrix (size n*Period). <br></td></tr> |
---|
115 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cf55657458143ec0501780b7aa7439e2"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::get_puncture_matrix" ref="cf55657458143ec0501780b7aa7439e2" args="() const " --> |
---|
116 | <a class="el" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69">bmat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#cf55657458143ec0501780b7aa7439e2">get_puncture_matrix</a> () const </td></tr> |
---|
117 | |
---|
118 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get puncture matrix. <br></td></tr> |
---|
119 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a47e9275c102b6ce2b3baeb9c0131305"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::get_puncture_period" ref="a47e9275c102b6ce2b3baeb9c0131305" args="() const " --> |
---|
120 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#a47e9275c102b6ce2b3baeb9c0131305">get_puncture_period</a> () const </td></tr> |
---|
121 | |
---|
122 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get puncturing period. <br></td></tr> |
---|
123 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e71898980b935887287e9980f075efb0"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::init_encoder" ref="e71898980b935887287e9980f075efb0" args="()" --> |
---|
124 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#e71898980b935887287e9980f075efb0">init_encoder</a> ()</td></tr> |
---|
125 | |
---|
126 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the encoder internal state in start_state (set by <a class="el" href="classitpp_1_1Convolutional__Code.html#6316d7d75c01471aa44d533fdaa586c1" title="Set encoder default start state.">set_start_state()</a>). <br></td></tr> |
---|
127 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="52a8335d94b8e4b0777a09afcb47445c"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode" ref="52a8335d94b8e4b0777a09afcb47445c" args="(const bvec &input, bvec &output)" --> |
---|
128 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#52a8335d94b8e4b0777a09afcb47445c">encode</a> (const bvec &input, bvec &output)</td></tr> |
---|
129 | |
---|
130 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Encode a binary vector of inputs using specified method. <br></td></tr> |
---|
131 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aae281080e4a74ea7094c4fe777cac54"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode" ref="aae281080e4a74ea7094c4fe777cac54" args="(const bvec &input)" --> |
---|
132 | bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#aae281080e4a74ea7094c4fe777cac54">encode</a> (const bvec &input)</td></tr> |
---|
133 | |
---|
134 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Encode a binary vector of inputs using specified method. <br></td></tr> |
---|
135 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="49dbb58e8a99c89502140e8f2d527503"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode_trunc" ref="49dbb58e8a99c89502140e8f2d527503" args="(const bvec &input, bvec &output)" --> |
---|
136 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#49dbb58e8a99c89502140e8f2d527503">encode_trunc</a> (const bvec &input, bvec &output)</td></tr> |
---|
137 | |
---|
138 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Encode a binary vector of inputs starting from state set by the set_state function. <br></td></tr> |
---|
139 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="95c4c6d4cd1e0d2b1b7164b9405d7d33"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode_trunc" ref="95c4c6d4cd1e0d2b1b7164b9405d7d33" args="(const bvec &input)" --> |
---|
140 | bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#95c4c6d4cd1e0d2b1b7164b9405d7d33">encode_trunc</a> (const bvec &input)</td></tr> |
---|
141 | |
---|
142 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Encode a binary vector of inputs starting from state set by the set_state function. <br></td></tr> |
---|
143 | <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#eda7709de1cff7c6211884f9acfae470">encode_tail</a> (const bvec &input, bvec &output)</td></tr> |
---|
144 | |
---|
145 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Encoding that begins and ends in the zero state. <a href="#eda7709de1cff7c6211884f9acfae470"></a><br></td></tr> |
---|
146 | <tr><td class="memItemLeft" nowrap align="right" valign="top">bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#550a724cf0a14e96dd572063c5d862d6">encode_tail</a> (const bvec &input)</td></tr> |
---|
147 | |
---|
148 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Encoding that begins and ends in the zero state. <a href="#550a724cf0a14e96dd572063c5d862d6"></a><br></td></tr> |
---|
149 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="60feaefdc4f8b62884268f7cc0ea8296"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode_tailbite" ref="60feaefdc4f8b62884268f7cc0ea8296" args="(const bvec &input, bvec &output)" --> |
---|
150 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#60feaefdc4f8b62884268f7cc0ea8296">encode_tailbite</a> (const bvec &input, bvec &output)</td></tr> |
---|
151 | |
---|
152 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Encode a binary vector of inputs using tailbiting. <br></td></tr> |
---|
153 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6fbdfbea0ba4a31686740dbfe9ca3ac5"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode_tailbite" ref="6fbdfbea0ba4a31686740dbfe9ca3ac5" args="(const bvec &input)" --> |
---|
154 | bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#6fbdfbea0ba4a31686740dbfe9ca3ac5">encode_tailbite</a> (const bvec &input)</td></tr> |
---|
155 | |
---|
156 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Encode a binary vector of inputs using tailbiting. <br></td></tr> |
---|
157 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f6f6621fc90d8d3774e5228846eafcd5"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode" ref="f6f6621fc90d8d3774e5228846eafcd5" args="(const vec &received_signal, bvec &output)" --> |
---|
158 | virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#f6f6621fc90d8d3774e5228846eafcd5">decode</a> (const vec &received_signal, bvec &output)</td></tr> |
---|
159 | |
---|
160 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Viterbi decoding using specified method. <br></td></tr> |
---|
161 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b63ed0bc93b14bcf4db7004132b38bfc"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode" ref="b63ed0bc93b14bcf4db7004132b38bfc" args="(const vec &received_signal)" --> |
---|
162 | virtual bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#b63ed0bc93b14bcf4db7004132b38bfc">decode</a> (const vec &received_signal)</td></tr> |
---|
163 | |
---|
164 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Viterbi decoding using specified method. <br></td></tr> |
---|
165 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="75e880d4c8cfd973d4459c0593cd304e"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode" ref="75e880d4c8cfd973d4459c0593cd304e" args="(const bvec &coded_bits, bvec &decoded_bits)" --> |
---|
166 | virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#75e880d4c8cfd973d4459c0593cd304e">decode</a> (const bvec &coded_bits, bvec &decoded_bits)</td></tr> |
---|
167 | |
---|
168 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Decode a bvec of coded data. <br></td></tr> |
---|
169 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ba48bd81d653f58161c10c2d4487533"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode" ref="3ba48bd81d653f58161c10c2d4487533" args="(const bvec &coded_bits)" --> |
---|
170 | virtual bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#3ba48bd81d653f58161c10c2d4487533">decode</a> (const bvec &coded_bits)</td></tr> |
---|
171 | |
---|
172 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Decode a bvec of coded data. <br></td></tr> |
---|
173 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="13be31ca6bcd770cad2a7120315bc6dd"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode_trunc" ref="13be31ca6bcd770cad2a7120315bc6dd" args="(const vec &received_signal, bvec &output)" --> |
---|
174 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#13be31ca6bcd770cad2a7120315bc6dd">decode_trunc</a> (const vec &received_signal, bvec &output)</td></tr> |
---|
175 | |
---|
176 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Viterbi decoding using truncation of memory (default = 5*K). <br></td></tr> |
---|
177 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c0e1f2f26a7dd2368139ae40bdc9d042"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode_trunc" ref="c0e1f2f26a7dd2368139ae40bdc9d042" args="(const vec &received_signal)" --> |
---|
178 | bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#c0e1f2f26a7dd2368139ae40bdc9d042">decode_trunc</a> (const vec &received_signal)</td></tr> |
---|
179 | |
---|
180 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Viterbi decoding using truncation of memory (default = 5*K). <br></td></tr> |
---|
181 | <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#8c706434a618852db7304b6e699c0194">decode_tail</a> (const vec &received_signal, bvec &output)</td></tr> |
---|
182 | |
---|
183 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Decode a block of encoded data where encode_tail has been used. <a href="#8c706434a618852db7304b6e699c0194"></a><br></td></tr> |
---|
184 | <tr><td class="memItemLeft" nowrap align="right" valign="top">bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#7842a78c7a0abb4a7a5695452448c6e6">decode_tail</a> (const vec &received_signal)</td></tr> |
---|
185 | |
---|
186 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Decode a block of encoded data where encode_tail has been used. <a href="#7842a78c7a0abb4a7a5695452448c6e6"></a><br></td></tr> |
---|
187 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="841c9437974ffa14ff10385e9729f59d"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode_tailbite" ref="841c9437974ffa14ff10385e9729f59d" args="(const vec &received_signal, bvec &output)" --> |
---|
188 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#841c9437974ffa14ff10385e9729f59d">decode_tailbite</a> (const vec &received_signal, bvec &output)</td></tr> |
---|
189 | |
---|
190 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Decode a block of encoded data where encode_tailbite has been used. Tries all start states. <br></td></tr> |
---|
191 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1e75ceaa37751af19c7028c6239ed45"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode_tailbite" ref="a1e75ceaa37751af19c7028c6239ed45" args="(const vec &received_signal)" --> |
---|
192 | bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#a1e75ceaa37751af19c7028c6239ed45">decode_tailbite</a> (const vec &received_signal)</td></tr> |
---|
193 | |
---|
194 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Decode a block of encoded data where encode_tailbite has been used. Tries all start states. <br></td></tr> |
---|
195 | <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#b9fa55cd0b92e4d0db5debcd198184b1">inverse_tail</a> (const bvec coded_sequence, bvec &input)</td></tr> |
---|
196 | |
---|
197 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the inverse sequence. <a href="#b9fa55cd0b92e4d0db5debcd198184b1"></a><br></td></tr> |
---|
198 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8e66d820e304baed62f2750a8139c7df"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::catastrophic" ref="8e66d820e304baed62f2750a8139c7df" args="(void)" --> |
---|
199 | bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#8e66d820e304baed62f2750a8139c7df">catastrophic</a> (void)</td></tr> |
---|
200 | |
---|
201 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Check if the code is catastrophic. Returns true if catastrophic. <br></td></tr> |
---|
202 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="86534f4a85b09bb3340edcbbfb825b2a"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::distance_profile" ref="86534f4a85b09bb3340edcbbfb825b2a" args="(ivec &dist_prof, int time, int dmax=100000, bool reverse=false)" --> |
---|
203 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#86534f4a85b09bb3340edcbbfb825b2a">distance_profile</a> (ivec &dist_prof, int time, int dmax=100000, bool reverse=false)</td></tr> |
---|
204 | |
---|
205 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate distance profile. If reverse = true calculate for the reverse code instead. <br></td></tr> |
---|
206 | <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#5b03f1aa26a5521cdcab6298d94926c9">calculate_spectrum</a> (<a class="el" href="classitpp_1_1Array.html">Array</a>< ivec > &spectrum, int dmax, int no_terms)</td></tr> |
---|
207 | |
---|
208 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate spectrum. <a href="#5b03f1aa26a5521cdcab6298d94926c9"></a><br></td></tr> |
---|
209 | <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#3cef5b8543adca3a83cdd61b7181957b">calculate_spectrum</a> (<a class="el" href="classitpp_1_1Array.html">Array</a>< ivec > &spectrum, int time, int dmax, int no_terms, int block_length=0)</td></tr> |
---|
210 | |
---|
211 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate spectrum. Suitable when calculating many terms in the spectra. Breadth first search. <a href="#3cef5b8543adca3a83cdd61b7181957b"></a><br></td></tr> |
---|
212 | <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#120a1f328f3d51597b8258901ad285de">fast</a> (<a class="el" href="classitpp_1_1Array.html">Array</a>< ivec > &spectrum, int time, int dfree, int no_terms, int d_best_so_far=0, bool test_catastrophic=false)</td></tr> |
---|
213 | |
---|
214 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Cederwall's fast algorithm. <a href="#120a1f328f3d51597b8258901ad285de"></a><br></td></tr> |
---|
215 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6ac83f0a1be7b4f6f06a1b4d7b45489a"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::reset" ref="6ac83f0a1be7b4f6f06a1b4d7b45489a" args="()" --> |
---|
216 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#6ac83f0a1be7b4f6f06a1b4d7b45489a">reset</a> ()</td></tr> |
---|
217 | |
---|
218 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Reset encoder and decoder states. <br></td></tr> |
---|
219 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6316d7d75c01471aa44d533fdaa586c1"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::set_start_state" ref="6316d7d75c01471aa44d533fdaa586c1" args="(int state)" --> |
---|
220 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#6316d7d75c01471aa44d533fdaa586c1">set_start_state</a> (int state)</td></tr> |
---|
221 | |
---|
222 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set encoder default start state. <br></td></tr> |
---|
223 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="22321baddd7afddcd255356debaf0fb8"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::get_encoder_state" ref="22321baddd7afddcd255356debaf0fb8" args="(void) const " --> |
---|
224 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#22321baddd7afddcd255356debaf0fb8">get_encoder_state</a> (void) const </td></tr> |
---|
225 | |
---|
226 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the current encoder state. <br></td></tr> |
---|
227 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1929841dfb95d406fa1a16867f144bb"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::set_truncation_length" ref="a1929841dfb95d406fa1a16867f144bb" args="(const int length)" --> |
---|
228 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#a1929841dfb95d406fa1a16867f144bb">set_truncation_length</a> (const int length)</td></tr> |
---|
229 | |
---|
230 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Set memory truncation length. Must be at least K. <br></td></tr> |
---|
231 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="35d7ef525f88707e4ff2c6ed05469c00"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::get_truncation_length" ref="35d7ef525f88707e4ff2c6ed05469c00" args="(void) const " --> |
---|
232 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#35d7ef525f88707e4ff2c6ed05469c00">get_truncation_length</a> (void) const </td></tr> |
---|
233 | |
---|
234 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Get memory truncation length. <br></td></tr> |
---|
235 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e99bf2f2d1973c7626214ad93222cbcf"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::distance_profile" ref="e99bf2f2d1973c7626214ad93222cbcf" args="(ivec &dist_prof, int dmax=100000, bool reverse=false)" --> |
---|
236 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#e99bf2f2d1973c7626214ad93222cbcf">distance_profile</a> (ivec &dist_prof, int dmax=100000, bool reverse=false)</td></tr> |
---|
237 | |
---|
238 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate distance profile. If reverse = true calculate for the reverse code instead. <br></td></tr> |
---|
239 | <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#8217a8922992b1fb4faa28d86f21e6d7">fast</a> (<a class="el" href="classitpp_1_1Array.html">Array</a>< ivec > &spectrum, const int dfree, const int no_terms, const int Cdfree=1000000, const bool test_catastrophic=false)</td></tr> |
---|
240 | |
---|
241 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Cederwall's fast algorithm. <a href="#8217a8922992b1fb4faa28d86f21e6d7"></a><br></td></tr> |
---|
242 | <tr><td colspan="2"><div class="groupHeader"></div></td></tr> |
---|
243 | <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#a6884e3f60678177fbf60e22d2447a5b">encode_bit</a> (const <a class="el" href="classitpp_1_1bin.html">bin</a> &input, bvec &output)</td></tr> |
---|
244 | |
---|
245 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Encode a binary bit starting from the internal encoder state. <a href="#a6884e3f60678177fbf60e22d2447a5b"></a><br></td></tr> |
---|
246 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0c0c16ff8863936435a73f3e1efd9b99"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode_bit" ref="0c0c16ff8863936435a73f3e1efd9b99" args="(const bin &input)" --> |
---|
247 | bvec </td><td class="memItemRight" valign="bottom"><b>encode_bit</b> (const <a class="el" href="classitpp_1_1bin.html">bin</a> &input)</td></tr> |
---|
248 | |
---|
249 | <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> |
---|
250 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8bfca66093ff6a6c3a431c5e8fc585c0"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::weight" ref="8bfca66093ff6a6c3a431c5e8fc585c0" args="(const int state, const int input, int time)" --> |
---|
251 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#8bfca66093ff6a6c3a431c5e8fc585c0">weight</a> (const int state, const int input, int time)</td></tr> |
---|
252 | |
---|
253 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The weight of path from <code>state</code> with <code>input</code> (0 or 1) at transition <code>time</code>. <br></td></tr> |
---|
254 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="585bf56461c90d14d38d00282f1a9ce5"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::weight" ref="585bf56461c90d14d38d00282f1a9ce5" args="(const int state, int &w0, int &w1, int time)" --> |
---|
255 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#585bf56461c90d14d38d00282f1a9ce5">weight</a> (const int state, int &w0, int &w1, int time)</td></tr> |
---|
256 | |
---|
257 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The weight of the two paths (input 0 or 1) from given state. <br></td></tr> |
---|
258 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="45c0bb8e2e8e8aa2807aa77b1ed39904"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::weight_reverse" ref="45c0bb8e2e8e8aa2807aa77b1ed39904" args="(const int state, const int input, int time)" --> |
---|
259 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#45c0bb8e2e8e8aa2807aa77b1ed39904">weight_reverse</a> (const int state, const int input, int time)</td></tr> |
---|
260 | |
---|
261 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Weight of the reverse code from <code>state</code> with <code>input</code> (0 or 1) at transition <code>time</code>. <br></td></tr> |
---|
262 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1103e0c07d1c2730587dacbe6582874e"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::weight_reverse" ref="1103e0c07d1c2730587dacbe6582874e" args="(const int state, int &w0, int &w1, int time)" --> |
---|
263 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#1103e0c07d1c2730587dacbe6582874e">weight_reverse</a> (const int state, int &w0, int &w1, int time)</td></tr> |
---|
264 | |
---|
265 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The weight of the reverse code of two paths (input 0 or 1) from given state. <br></td></tr> |
---|
266 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="31df4741737f7b87b848ce95505f80fc"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::next_state" ref="31df4741737f7b87b848ce95505f80fc" args="(const int instate, const int input)" --> |
---|
267 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#31df4741737f7b87b848ce95505f80fc">next_state</a> (const int instate, const int input)</td></tr> |
---|
268 | |
---|
269 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Next state from instate given the input. <br></td></tr> |
---|
270 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7bdfde49b386946dcd7476fbd2488dd8"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::previous_state" ref="7bdfde49b386946dcd7476fbd2488dd8" args="(const int state, const int input)" --> |
---|
271 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#7bdfde49b386946dcd7476fbd2488dd8">previous_state</a> (const int state, const int input)</td></tr> |
---|
272 | |
---|
273 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The previous state from state given the input. <br></td></tr> |
---|
274 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="681ad623bd14abcaabfa317d6fd0bdad"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::previous_state" ref="681ad623bd14abcaabfa317d6fd0bdad" args="(const int state, int &S0, int &S1)" --> |
---|
275 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#681ad623bd14abcaabfa317d6fd0bdad">previous_state</a> (const int state, int &S0, int &S1)</td></tr> |
---|
276 | |
---|
277 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The previous state from state given the input. <br></td></tr> |
---|
278 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ceb3aadcb9da39f2330d5e9870bda5af"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::weight" ref="ceb3aadcb9da39f2330d5e9870bda5af" args="(const int state, const int input)" --> |
---|
279 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#ceb3aadcb9da39f2330d5e9870bda5af">weight</a> (const int state, const int input)</td></tr> |
---|
280 | |
---|
281 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The weight of the transition from given state with the input given. <br></td></tr> |
---|
282 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7518410d14d05925f4e8a6de2655399a"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::weight" ref="7518410d14d05925f4e8a6de2655399a" args="(const int state, int &w0, int &w1)" --> |
---|
283 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#7518410d14d05925f4e8a6de2655399a">weight</a> (const int state, int &w0, int &w1)</td></tr> |
---|
284 | |
---|
285 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The weight of the two paths (input 0 or 1) from given state. <br></td></tr> |
---|
286 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f600390d130ce3cb7aa2e33037560626"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::weight_reverse" ref="f600390d130ce3cb7aa2e33037560626" args="(const int state, const int input)" --> |
---|
287 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#f600390d130ce3cb7aa2e33037560626">weight_reverse</a> (const int state, const int input)</td></tr> |
---|
288 | |
---|
289 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The weight (of the reverse code) of the transition from given state with the input given. <br></td></tr> |
---|
290 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2814b056af9cb40570aeaa39fc3f322f"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::weight_reverse" ref="2814b056af9cb40570aeaa39fc3f322f" args="(const int state, int &w0, int &w1)" --> |
---|
291 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#2814b056af9cb40570aeaa39fc3f322f">weight_reverse</a> (const int state, int &w0, int &w1)</td></tr> |
---|
292 | |
---|
293 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The weight (of the reverse code) of the two paths (input 0 or 1) from given state. <br></td></tr> |
---|
294 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f286a1fb3897e5fd78e749b03aaadff6"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::output_reverse" ref="f286a1fb3897e5fd78e749b03aaadff6" args="(const int state, const int input)" --> |
---|
295 | bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#f286a1fb3897e5fd78e749b03aaadff6">output_reverse</a> (const int state, const int input)</td></tr> |
---|
296 | |
---|
297 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Output on transition (backwards) with input from state. <br></td></tr> |
---|
298 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1780746970f5e9ffdddd26bc805e087d"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::output_reverse" ref="1780746970f5e9ffdddd26bc805e087d" args="(const int state, bvec &zero_output, bvec &one_output)" --> |
---|
299 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#1780746970f5e9ffdddd26bc805e087d">output_reverse</a> (const int state, bvec &zero_output, bvec &one_output)</td></tr> |
---|
300 | |
---|
301 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Output on transition (backwards) with input from state. <br></td></tr> |
---|
302 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="45d579da2009db6c0e7074c826ff96c2"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::output_reverse" ref="45d579da2009db6c0e7074c826ff96c2" args="(const int state, int &zero_output, int &one_output)" --> |
---|
303 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#45d579da2009db6c0e7074c826ff96c2">output_reverse</a> (const int state, int &zero_output, int &one_output)</td></tr> |
---|
304 | |
---|
305 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Output on transition (backwards) with input from state. <br></td></tr> |
---|
306 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5860dd3376bf2b0971e8e2a45b755b04"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::calc_metric_reverse" ref="5860dd3376bf2b0971e8e2a45b755b04" args="(const int state, const vec &rx_codeword, double &zero_metric, double &one_metric)" --> |
---|
307 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#5860dd3376bf2b0971e8e2a45b755b04">calc_metric_reverse</a> (const int state, const vec &rx_codeword, double &zero_metric, double &one_metric)</td></tr> |
---|
308 | |
---|
309 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate delta metrics for 0 and 1 input branches reaching state. <br></td></tr> |
---|
310 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="79f47928875683c5b2d91c50220ff3d6"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::calc_metric" ref="79f47928875683c5b2d91c50220ff3d6" args="(const vec &rx_codeword, vec &delta_metrics)" --> |
---|
311 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#79f47928875683c5b2d91c50220ff3d6">calc_metric</a> (const vec &rx_codeword, vec &delta_metrics)</td></tr> |
---|
312 | |
---|
313 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate delta metrics for all possible codewords. <br></td></tr> |
---|
314 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="028a1867c118c4fc5f8fea9b404bf20d"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::get_input" ref="028a1867c118c4fc5f8fea9b404bf20d" args="(const int state)" --> |
---|
315 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#028a1867c118c4fc5f8fea9b404bf20d">get_input</a> (const int state)</td></tr> |
---|
316 | |
---|
317 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the input that results in state, that is the MSB of state. <br></td></tr> |
---|
318 | <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> |
---|
319 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ede590a005351b224cad750e9f8bb3a6"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::Period" ref="ede590a005351b224cad750e9f8bb3a6" args="" --> |
---|
320 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#ede590a005351b224cad750e9f8bb3a6">Period</a></td></tr> |
---|
321 | |
---|
322 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The puncture period (i.e. the number of columns in the puncture matrix). <br></td></tr> |
---|
323 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7728ad6a3c0389c00d005002a0dd45e7"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::total" ref="7728ad6a3c0389c00d005002a0dd45e7" args="" --> |
---|
324 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#7728ad6a3c0389c00d005002a0dd45e7">total</a></td></tr> |
---|
325 | |
---|
326 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The number of "1" in the puncture matrix. <br></td></tr> |
---|
327 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="533bca591da4abe1478bd11cf3aa82eb"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::puncture_matrix" ref="533bca591da4abe1478bd11cf3aa82eb" args="" --> |
---|
328 | <a class="el" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69">bmat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#533bca591da4abe1478bd11cf3aa82eb">puncture_matrix</a></td></tr> |
---|
329 | |
---|
330 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The puncture matrix (<em>n</em> rows and <em>Period</em> columns). <br></td></tr> |
---|
331 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b314ab153e137a68c8a0ca6e1bbbdbee"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::n" ref="b314ab153e137a68c8a0ca6e1bbbdbee" args="" --> |
---|
332 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#b314ab153e137a68c8a0ca6e1bbbdbee">n</a></td></tr> |
---|
333 | |
---|
334 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of generators. <br></td></tr> |
---|
335 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="63430f36f9dc2c9d78b9a0ce145a8f2d"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::K" ref="63430f36f9dc2c9d78b9a0ce145a8f2d" args="" --> |
---|
336 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#63430f36f9dc2c9d78b9a0ce145a8f2d">K</a></td></tr> |
---|
337 | |
---|
338 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Constraint length. <br></td></tr> |
---|
339 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b93371ece607184c04780de0e05d7abc"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::m" ref="b93371ece607184c04780de0e05d7abc" args="" --> |
---|
340 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#b93371ece607184c04780de0e05d7abc">m</a></td></tr> |
---|
341 | |
---|
342 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Memory of the encoder. <br></td></tr> |
---|
343 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8c164aac0932007e5eeaa502d5bdb1ca"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::no_states" ref="8c164aac0932007e5eeaa502d5bdb1ca" args="" --> |
---|
344 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#8c164aac0932007e5eeaa502d5bdb1ca">no_states</a></td></tr> |
---|
345 | |
---|
346 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of states. <br></td></tr> |
---|
347 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e5b54f1bab039f8480c7ae0013f3f5fe"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::gen_pol" ref="e5b54f1bab039f8480c7ae0013f3f5fe" args="" --> |
---|
348 | ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#e5b54f1bab039f8480c7ae0013f3f5fe">gen_pol</a></td></tr> |
---|
349 | |
---|
350 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generator polynomials. <br></td></tr> |
---|
351 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d072282520c19e64e8a88e0e79d91b96"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::gen_pol_rev" ref="d072282520c19e64e8a88e0e79d91b96" args="" --> |
---|
352 | ivec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#d072282520c19e64e8a88e0e79d91b96">gen_pol_rev</a></td></tr> |
---|
353 | |
---|
354 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Generator polynomials for the reverse code. <br></td></tr> |
---|
355 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="04a91848197a2624c5dbdbcd5224166a"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encoder_state" ref="04a91848197a2624c5dbdbcd5224166a" args="" --> |
---|
356 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#04a91848197a2624c5dbdbcd5224166a">encoder_state</a></td></tr> |
---|
357 | |
---|
358 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The current encoder state. <br></td></tr> |
---|
359 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7bfc69c7f70316fe051e2802c9f09ee3"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::start_state" ref="7bfc69c7f70316fe051e2802c9f09ee3" args="" --> |
---|
360 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#7bfc69c7f70316fe051e2802c9f09ee3">start_state</a></td></tr> |
---|
361 | |
---|
362 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The encoder start state. <br></td></tr> |
---|
363 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="57ef97ff464b7f36a284540426a26ce3"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::trunc_length" ref="57ef97ff464b7f36a284540426a26ce3" args="" --> |
---|
364 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#57ef97ff464b7f36a284540426a26ce3">trunc_length</a></td></tr> |
---|
365 | |
---|
366 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The decoder truncation length. <br></td></tr> |
---|
367 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0e92407956851a04cffa5f89f2fd39a5"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::rate" ref="0e92407956851a04cffa5f89f2fd39a5" args="" --> |
---|
368 | double </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#0e92407956851a04cffa5f89f2fd39a5">rate</a></td></tr> |
---|
369 | |
---|
370 | <tr><td class="mdescLeft"> </td><td class="mdescRight">The rate of the code. <br></td></tr> |
---|
371 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e31e1e09af8f51be5eb37ffca507d232"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::xor_int_table" ref="e31e1e09af8f51be5eb37ffca507d232" args="" --> |
---|
372 | bvec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#e31e1e09af8f51be5eb37ffca507d232">xor_int_table</a></td></tr> |
---|
373 | |
---|
374 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Auxilary table used by the codec. <br></td></tr> |
---|
375 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e63597801ab594d590234192eed3da4"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::output_reverse_int" ref="7e63597801ab594d590234192eed3da4" args="" --> |
---|
376 | imat </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#7e63597801ab594d590234192eed3da4">output_reverse_int</a></td></tr> |
---|
377 | |
---|
378 | <tr><td class="mdescLeft"> </td><td class="mdescRight">output in int format for a given state and input <br></td></tr> |
---|
379 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="df24ee075bc58e4b277c44cfd146d84b"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::cc_method" ref="df24ee075bc58e4b277c44cfd146d84b" args="" --> |
---|
380 | <a class="el" href="group__fec.html#ge22fe2744a6f00b512ee75e304d72a82">CONVOLUTIONAL_CODE_METHOD</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#df24ee075bc58e4b277c44cfd146d84b">cc_method</a></td></tr> |
---|
381 | |
---|
382 | <tr><td class="mdescLeft"> </td><td class="mdescRight">encoding and decoding method <br></td></tr> |
---|
383 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2be7d32bc57f8be15b9e45993d88253b"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::path_memory" ref="2be7d32bc57f8be15b9e45993d88253b" args="" --> |
---|
384 | imat </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#2be7d32bc57f8be15b9e45993d88253b">path_memory</a></td></tr> |
---|
385 | |
---|
386 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Path memory (trellis). <br></td></tr> |
---|
387 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e840a45790781563ef45047652bf794b"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::visited_state" ref="e840a45790781563ef45047652bf794b" args="" --> |
---|
388 | <a class="el" href="classitpp_1_1Array.html">Array</a>< bool > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#e840a45790781563ef45047652bf794b">visited_state</a></td></tr> |
---|
389 | |
---|
390 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Visited states. <br></td></tr> |
---|
391 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2a894772cc027542c600f5b86fe17173"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::sum_metric" ref="2a894772cc027542c600f5b86fe17173" args="" --> |
---|
392 | vec </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#2a894772cc027542c600f5b86fe17173">sum_metric</a></td></tr> |
---|
393 | |
---|
394 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Metrics accumulator. <br></td></tr> |
---|
395 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="89b0d6ba21457e1aab73f53631a5cb7f"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::trunc_ptr" ref="89b0d6ba21457e1aab73f53631a5cb7f" args="" --> |
---|
396 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#89b0d6ba21457e1aab73f53631a5cb7f">trunc_ptr</a></td></tr> |
---|
397 | |
---|
398 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Truncated path memory pointer. <br></td></tr> |
---|
399 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d26ed837b36f7313277a2b1dcc7b0c4c"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::trunc_state" ref="d26ed837b36f7313277a2b1dcc7b0c4c" args="" --> |
---|
400 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#d26ed837b36f7313277a2b1dcc7b0c4c">trunc_state</a></td></tr> |
---|
401 | |
---|
402 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Truncated memory fill state. <br></td></tr> |
---|
403 | <tr><td colspan="2"><br><h2>Related Functions</h2></td></tr> |
---|
404 | <tr><td colspan="2">(Note that these are not member functions.) <br><br></td></tr> |
---|
405 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ca1881cee55d7c3219f46dd40e7cbd31"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::reverse_int" ref="ca1881cee55d7c3219f46dd40e7cbd31" args="(int length, int in)" --> |
---|
406 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#ca1881cee55d7c3219f46dd40e7cbd31">reverse_int</a> (int length, int in)</td></tr> |
---|
407 | |
---|
408 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Reverses the bitrepresentation of in (of size length) and converts to an integer. <br></td></tr> |
---|
409 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="33760fc0bdf27b4b5232694796590365"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::weight_int" ref="33760fc0bdf27b4b5232694796590365" args="(int length, int in)" --> |
---|
410 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#33760fc0bdf27b4b5232694796590365">weight_int</a> (int length, int in)</td></tr> |
---|
411 | |
---|
412 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the Hamming weight of the binary representation of in of size length. <br></td></tr> |
---|
413 | <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9e332af5e8d1ce1ba795f4e032adace2"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::compare_spectra" ref="9e332af5e8d1ce1ba795f4e032adace2" args="(ivec v1, ivec v2)" --> |
---|
414 | int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#9e332af5e8d1ce1ba795f4e032adace2">compare_spectra</a> (ivec v1, ivec v2)</td></tr> |
---|
415 | |
---|
416 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two distance spectra. Return 1 if v1 is less, 0 if v2 less, and -1 if equal. <br></td></tr> |
---|
417 | <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Convolutional__Code.html#4abebe627013b4dfb5e1025c1f94c769">compare_spectra</a> (ivec v1, ivec v2, vec weight_profile)</td></tr> |
---|
418 | |
---|
419 | <tr><td class="mdescLeft"> </td><td class="mdescRight">Compare two distance spectra using a weight profile. <a href="#4abebe627013b4dfb5e1025c1f94c769"></a><br></td></tr> |
---|
420 | </table> |
---|
421 | <hr><a name="_details"></a><h2>Detailed Description</h2> |
---|
422 | Binary Punctured Convolutional Code Class. |
---|
423 | <p> |
---|
424 | The codes are given as feedforward encoders an given in the Proakis form. That is the binary generators (K-tuples) are converted to octal integers. Observe that the constraint length (K) is defined as the number of meomory cells plus one (as in Proakis). The puncture matrix should be of size <em>n</em> * <em>Period</em>, where <em>Period</em> is the puncturing period.<p> |
---|
425 | Encoding is performed with the <code>encode</code> function. By default the <code>encode_tail</code> function is called which automatically add a tail of K-1 zeros and also assume that the encoder starts in the zero state. Observe that <code>decode_tail</code> is used for data encoded with <code>encode_tail</code>, and decode_trunc assumes that the memory truncation length either is the default (5*K) or set using the <code>set_truncation_length</code> function. Encoding and decoding method can be changed by calling the <a class="el" href="classitpp_1_1Punctured__Convolutional__Code.html#086f61a5c99ca542520c28174c45023d" title="Set encoding and decoding method (Trunc, Tail, or Tailbite).">set_method()</a> function.<p> |
---|
426 | Example of use: (rate 1/3 constraint length K=7 ODS code using <a class="el" href="classitpp_1_1BPSK.html" title="BPSK modulator with real symbols.">BPSK</a> over AWGN) <div class="fragment"><pre class="fragment"> BPSK bpsk; |
---|
427 | <a class="code" href="classitpp_1_1Punctured__Convolutional__Code.html#8f73e4bcd82e98ace9e52003483755e6" title="Constructor.">Punctured_Convolutional_Code</a> code; |
---|
428 | ivec generator(3); |
---|
429 | generator(0)=0133; |
---|
430 | generator(1)=0165; |
---|
431 | generator(2)=0171; |
---|
432 | code.set_generator_polynomials(generator, 7); |
---|
433 | |
---|
434 | <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> <a class="code" href="classitpp_1_1Punctured__Convolutional__Code.html#533bca591da4abe1478bd11cf3aa82eb" title="The puncture matrix (n rows and Period columns).">puncture_matrix</a> = <span class="stringliteral">"1 1;0 1"</span>; |
---|
435 | code.set_puncture_matrix(puncture_matrix); |
---|
436 | code.set_truncation_length(30); |
---|
437 | |
---|
438 | bvec bits=<a class="code" href="group__randgen.html#g5aa06887cf1fd3301b040987924068f0" title="Generates a random bit (equally likely 0s and 1s).">randb</a>(100), encoded_bits, decoded_bits; |
---|
439 | vec tx_signal, rx_signal; |
---|
440 | |
---|
441 | code.encode(bits, encoded_bits); |
---|
442 | tx_signal = bpsk.modulate_bits(encoded_bits); |
---|
443 | rx_signal = tx_signal + <a class="code" href="group__miscfunc.html#gf559d29ca56ad3396a4284964b01a9b0" title="Square root of the elements.">sqrt</a>(0.5)*<a class="code" href="group__randgen.html#g9ecf5af23567f51abc9af737fdbd872a" title="Generates a random Gaussian (0,1) variable.">randn</a>(tx_signal.size()); |
---|
444 | code.decode(rx_signal, decoded_bits); |
---|
445 | </pre></div> <hr><h2>Member Function Documentation</h2> |
---|
446 | <a class="anchor" name="3cef5b8543adca3a83cdd61b7181957b"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::calculate_spectrum" ref="3cef5b8543adca3a83cdd61b7181957b" args="(Array< ivec > &spectrum, int time, int dmax, int no_terms, int block_length=0)" --> |
---|
447 | <div class="memitem"> |
---|
448 | <div class="memproto"> |
---|
449 | <table class="memname"> |
---|
450 | <tr> |
---|
451 | <td class="memname">void itpp::Punctured_Convolutional_Code::calculate_spectrum </td> |
---|
452 | <td>(</td> |
---|
453 | <td class="paramtype"><a class="el" href="classitpp_1_1Array.html">Array</a>< ivec > & </td> |
---|
454 | <td class="paramname"> <em>spectrum</em>, </td> |
---|
455 | </tr> |
---|
456 | <tr> |
---|
457 | <td class="paramkey"></td> |
---|
458 | <td></td> |
---|
459 | <td class="paramtype">int </td> |
---|
460 | <td class="paramname"> <em>time</em>, </td> |
---|
461 | </tr> |
---|
462 | <tr> |
---|
463 | <td class="paramkey"></td> |
---|
464 | <td></td> |
---|
465 | <td class="paramtype">int </td> |
---|
466 | <td class="paramname"> <em>dmax</em>, </td> |
---|
467 | </tr> |
---|
468 | <tr> |
---|
469 | <td class="paramkey"></td> |
---|
470 | <td></td> |
---|
471 | <td class="paramtype">int </td> |
---|
472 | <td class="paramname"> <em>no_terms</em>, </td> |
---|
473 | </tr> |
---|
474 | <tr> |
---|
475 | <td class="paramkey"></td> |
---|
476 | <td></td> |
---|
477 | <td class="paramtype">int </td> |
---|
478 | <td class="paramname"> <em>block_length</em> = <code>0</code></td><td> </td> |
---|
479 | </tr> |
---|
480 | <tr> |
---|
481 | <td></td> |
---|
482 | <td>)</td> |
---|
483 | <td></td><td></td><td></td> |
---|
484 | </tr> |
---|
485 | </table> |
---|
486 | </div> |
---|
487 | <div class="memdoc"> |
---|
488 | |
---|
489 | <p> |
---|
490 | Calculate spectrum. Suitable when calculating many terms in the spectra. Breadth first search. |
---|
491 | <p> |
---|
492 | Use this function to evaluate the spectum whith a speccific puncturing period, or to calculate the spectrum for block transmission. To calculate spectra for block transmission: <ul> |
---|
493 | <li> |
---|
494 | Use <em>time</em> = 0 if the puncturing is restarted at each block. </li> |
---|
495 | <li> |
---|
496 | Use <em>block_length</em> = 0 (default value) for infinite blocks. </li> |
---|
497 | </ul> |
---|
498 | |
---|
499 | <p>References <a class="el" href="convcode_8h-source.html#l00411">itpp::Convolutional_Code::K</a>, <a class="el" href="convcode_8h-source.html#l00413">itpp::Convolutional_Code::m</a>, <a class="el" href="convcode_8h-source.html#l00372">itpp::Convolutional_Code::next_state()</a>, <a class="el" href="punct__convcode_8h-source.html#l00260">Period</a>, <a class="el" href="array_8h-source.html#l00257">itpp::Array< T >::set_size()</a>, <a class="el" href="sigfun_8cpp-source.html#l00297">itpp::spectrum()</a>, and <a class="el" href="punct__convcode_8cpp-source.html#l00038">weight()</a>.</p> |
---|
500 | |
---|
501 | </div> |
---|
502 | </div><p> |
---|
503 | <a class="anchor" name="5b03f1aa26a5521cdcab6298d94926c9"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::calculate_spectrum" ref="5b03f1aa26a5521cdcab6298d94926c9" args="(Array< ivec > &spectrum, int dmax, int no_terms)" --> |
---|
504 | <div class="memitem"> |
---|
505 | <div class="memproto"> |
---|
506 | <table class="memname"> |
---|
507 | <tr> |
---|
508 | <td class="memname">void itpp::Punctured_Convolutional_Code::calculate_spectrum </td> |
---|
509 | <td>(</td> |
---|
510 | <td class="paramtype"><a class="el" href="classitpp_1_1Array.html">Array</a>< ivec > & </td> |
---|
511 | <td class="paramname"> <em>spectrum</em>, </td> |
---|
512 | </tr> |
---|
513 | <tr> |
---|
514 | <td class="paramkey"></td> |
---|
515 | <td></td> |
---|
516 | <td class="paramtype">int </td> |
---|
517 | <td class="paramname"> <em>dmax</em>, </td> |
---|
518 | </tr> |
---|
519 | <tr> |
---|
520 | <td class="paramkey"></td> |
---|
521 | <td></td> |
---|
522 | <td class="paramtype">int </td> |
---|
523 | <td class="paramname"> <em>no_terms</em></td><td> </td> |
---|
524 | </tr> |
---|
525 | <tr> |
---|
526 | <td></td> |
---|
527 | <td>)</td> |
---|
528 | <td></td><td></td><td></td> |
---|
529 | </tr> |
---|
530 | </table> |
---|
531 | </div> |
---|
532 | <div class="memdoc"> |
---|
533 | |
---|
534 | <p> |
---|
535 | Calculate spectrum. |
---|
536 | <p> |
---|
537 | Calculates both the weight spectrum (Ad) and the information weight spectrum (Cd) and returns it as ivec:s in the 0:th and 1:st component of spectrum, respectively. For a punctrued code the spectrum is a sum of the spectras of all starting positions. Suitable for calculating many terms in the spectra (uses an breadth first algorithm). It is assumed that the code is non-catastrophic or else it is a possibility for an eternal loop.<p> |
---|
538 | <ul> |
---|
539 | <li> |
---|
540 | <em>dmax</em> = an upper bound on the free distance </li> |
---|
541 | <li> |
---|
542 | <em>no_terms</em> = number of terms including the <em>dmax</em> term that should be calculated </li> |
---|
543 | </ul> |
---|
544 | <p> |
---|
545 | Observe that there is a risk that some of the integers are overflow if many terms are calculated in the spectrum. |
---|
546 | <p>Reimplemented from <a class="el" href="classitpp_1_1Convolutional__Code.html#3f442fd4218c746dc046ea996f301cf7">itpp::Convolutional_Code</a>.</p> |
---|
547 | |
---|
548 | <p>References <a class="el" href="punct__convcode_8h-source.html#l00260">Period</a>, <a class="el" href="array_8h-source.html#l00257">itpp::Array< T >::set_size()</a>, and <a class="el" href="sigfun_8cpp-source.html#l00297">itpp::spectrum()</a>.</p> |
---|
549 | |
---|
550 | </div> |
---|
551 | </div><p> |
---|
552 | <a class="anchor" name="7842a78c7a0abb4a7a5695452448c6e6"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode_tail" ref="7842a78c7a0abb4a7a5695452448c6e6" args="(const vec &received_signal)" --> |
---|
553 | <div class="memitem"> |
---|
554 | <div class="memproto"> |
---|
555 | <table class="memname"> |
---|
556 | <tr> |
---|
557 | <td class="memname">bvec itpp::Punctured_Convolutional_Code::decode_tail </td> |
---|
558 | <td>(</td> |
---|
559 | <td class="paramtype">const vec & </td> |
---|
560 | <td class="paramname"> <em>received_signal</em> </td> |
---|
561 | <td> ) </td> |
---|
562 | <td><code> [inline, virtual]</code></td> |
---|
563 | </tr> |
---|
564 | </table> |
---|
565 | </div> |
---|
566 | <div class="memdoc"> |
---|
567 | |
---|
568 | <p> |
---|
569 | Decode a block of encoded data where encode_tail has been used. |
---|
570 | <p> |
---|
571 | Thus is assumes a decoder start state of zero and that a tail of K-1 zeros has been added. No memory truncation. |
---|
572 | <p>Reimplemented from <a class="el" href="classitpp_1_1Convolutional__Code.html">itpp::Convolutional_Code</a>.</p> |
---|
573 | |
---|
574 | <p>References <a class="el" href="punct__convcode_8h-source.html#l00179">decode_tail()</a>.</p> |
---|
575 | |
---|
576 | <p>Referenced by <a class="el" href="punct__convcode_8h-source.html#l00179">decode_tail()</a>.</p> |
---|
577 | |
---|
578 | </div> |
---|
579 | </div><p> |
---|
580 | <a class="anchor" name="8c706434a618852db7304b6e699c0194"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::decode_tail" ref="8c706434a618852db7304b6e699c0194" args="(const vec &received_signal, bvec &output)" --> |
---|
581 | <div class="memitem"> |
---|
582 | <div class="memproto"> |
---|
583 | <table class="memname"> |
---|
584 | <tr> |
---|
585 | <td class="memname">void itpp::Punctured_Convolutional_Code::decode_tail </td> |
---|
586 | <td>(</td> |
---|
587 | <td class="paramtype">const vec & </td> |
---|
588 | <td class="paramname"> <em>received_signal</em>, </td> |
---|
589 | </tr> |
---|
590 | <tr> |
---|
591 | <td class="paramkey"></td> |
---|
592 | <td></td> |
---|
593 | <td class="paramtype">bvec & </td> |
---|
594 | <td class="paramname"> <em>output</em></td><td> </td> |
---|
595 | </tr> |
---|
596 | <tr> |
---|
597 | <td></td> |
---|
598 | <td>)</td> |
---|
599 | <td></td><td></td><td><code> [virtual]</code></td> |
---|
600 | </tr> |
---|
601 | </table> |
---|
602 | </div> |
---|
603 | <div class="memdoc"> |
---|
604 | |
---|
605 | <p> |
---|
606 | Decode a block of encoded data where encode_tail has been used. |
---|
607 | <p> |
---|
608 | Thus is assumes a decoder start state of zero and that a tail of K-1 zeros has been added. No memory truncation. |
---|
609 | <p>Reimplemented from <a class="el" href="classitpp_1_1Convolutional__Code.html#9f42d8c8bdb51460ebc7d43deb93bad7">itpp::Convolutional_Code</a>.</p> |
---|
610 | |
---|
611 | <p>References <a class="el" href="itassert_8h-source.html#l00173">it_warning</a>, <a class="el" href="convcode_8h-source.html#l00409">itpp::Convolutional_Code::n</a>, <a class="el" href="punct__convcode_8h-source.html#l00260">Period</a>, <a class="el" href="punct__convcode_8h-source.html#l00264">puncture_matrix</a>, and <a class="el" href="punct__convcode_8h-source.html#l00262">total</a>.</p> |
---|
612 | |
---|
613 | <p>Referenced by <a class="el" href="punct__convcode_8cpp-source.html#l00224">decode()</a>.</p> |
---|
614 | |
---|
615 | </div> |
---|
616 | </div><p> |
---|
617 | <a class="anchor" name="a6884e3f60678177fbf60e22d2447a5b"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode_bit" ref="a6884e3f60678177fbf60e22d2447a5b" args="(const bin &input, bvec &output)" --> |
---|
618 | <div class="memitem"> |
---|
619 | <div class="memproto"> |
---|
620 | <table class="memname"> |
---|
621 | <tr> |
---|
622 | <td class="memname">void itpp::Convolutional_Code::encode_bit </td> |
---|
623 | <td>(</td> |
---|
624 | <td class="paramtype">const <a class="el" href="classitpp_1_1bin.html">bin</a> & </td> |
---|
625 | <td class="paramname"> <em>input</em>, </td> |
---|
626 | </tr> |
---|
627 | <tr> |
---|
628 | <td class="paramkey"></td> |
---|
629 | <td></td> |
---|
630 | <td class="paramtype">bvec & </td> |
---|
631 | <td class="paramname"> <em>output</em></td><td> </td> |
---|
632 | </tr> |
---|
633 | <tr> |
---|
634 | <td></td> |
---|
635 | <td>)</td> |
---|
636 | <td></td><td></td><td><code> [inherited]</code></td> |
---|
637 | </tr> |
---|
638 | </table> |
---|
639 | </div> |
---|
640 | <div class="memdoc"> |
---|
641 | |
---|
642 | <p> |
---|
643 | Encode a binary bit starting from the internal encoder state. |
---|
644 | <p> |
---|
645 | To initialize the encoder state use <a class="el" href="classitpp_1_1Convolutional__Code.html#6316d7d75c01471aa44d533fdaa586c1" title="Set encoder default start state.">set_start_state()</a> and <a class="el" href="classitpp_1_1Convolutional__Code.html#9ef6fc1934531d3c12123ed90c5b4c40" title="Initialise internal encoder state with start state. Has no effect on Tail and Tailbite...">init_encoder()</a> |
---|
646 | <p>References <a class="el" href="convcode_8h-source.html#l00421">itpp::Convolutional_Code::encoder_state</a>, <a class="el" href="convcode_8h-source.html#l00417">itpp::Convolutional_Code::gen_pol</a>, <a class="el" href="convcode_8h-source.html#l00413">itpp::Convolutional_Code::m</a>, and <a class="el" href="convcode_8h-source.html#l00429">itpp::Convolutional_Code::xor_int_table</a>.</p> |
---|
647 | |
---|
648 | </div> |
---|
649 | </div><p> |
---|
650 | <a class="anchor" name="550a724cf0a14e96dd572063c5d862d6"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode_tail" ref="550a724cf0a14e96dd572063c5d862d6" args="(const bvec &input)" --> |
---|
651 | <div class="memitem"> |
---|
652 | <div class="memproto"> |
---|
653 | <table class="memname"> |
---|
654 | <tr> |
---|
655 | <td class="memname">bvec itpp::Punctured_Convolutional_Code::encode_tail </td> |
---|
656 | <td>(</td> |
---|
657 | <td class="paramtype">const bvec & </td> |
---|
658 | <td class="paramname"> <em>input</em> </td> |
---|
659 | <td> ) </td> |
---|
660 | <td><code> [inline]</code></td> |
---|
661 | </tr> |
---|
662 | </table> |
---|
663 | </div> |
---|
664 | <div class="memdoc"> |
---|
665 | |
---|
666 | <p> |
---|
667 | Encoding that begins and ends in the zero state. |
---|
668 | <p> |
---|
669 | Encode a binary vector of inputs starting from zero state and also adds a tail of K-1 zeros to force the encoder into the zero state. Well suited for packet transmission. |
---|
670 | <p>Reimplemented from <a class="el" href="classitpp_1_1Convolutional__Code.html">itpp::Convolutional_Code</a>.</p> |
---|
671 | |
---|
672 | <p>References <a class="el" href="punct__convcode_8h-source.html#l00143">encode_tail()</a>.</p> |
---|
673 | |
---|
674 | <p>Referenced by <a class="el" href="punct__convcode_8h-source.html#l00143">encode_tail()</a>.</p> |
---|
675 | |
---|
676 | </div> |
---|
677 | </div><p> |
---|
678 | <a class="anchor" name="eda7709de1cff7c6211884f9acfae470"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::encode_tail" ref="eda7709de1cff7c6211884f9acfae470" args="(const bvec &input, bvec &output)" --> |
---|
679 | <div class="memitem"> |
---|
680 | <div class="memproto"> |
---|
681 | <table class="memname"> |
---|
682 | <tr> |
---|
683 | <td class="memname">void itpp::Punctured_Convolutional_Code::encode_tail </td> |
---|
684 | <td>(</td> |
---|
685 | <td class="paramtype">const bvec & </td> |
---|
686 | <td class="paramname"> <em>input</em>, </td> |
---|
687 | </tr> |
---|
688 | <tr> |
---|
689 | <td class="paramkey"></td> |
---|
690 | <td></td> |
---|
691 | <td class="paramtype">bvec & </td> |
---|
692 | <td class="paramname"> <em>output</em></td><td> </td> |
---|
693 | </tr> |
---|
694 | <tr> |
---|
695 | <td></td> |
---|
696 | <td>)</td> |
---|
697 | <td></td><td></td><td></td> |
---|
698 | </tr> |
---|
699 | </table> |
---|
700 | </div> |
---|
701 | <div class="memdoc"> |
---|
702 | |
---|
703 | <p> |
---|
704 | Encoding that begins and ends in the zero state. |
---|
705 | <p> |
---|
706 | Encode a binary vector of inputs starting from zero state and also adds a tail of K-1 zeros to force the encoder into the zero state. Well suited for packet transmission. |
---|
707 | <p>Reimplemented from <a class="el" href="classitpp_1_1Convolutional__Code.html#47230acfea5aa32cb31e63abca1d222e">itpp::Convolutional_Code</a>.</p> |
---|
708 | |
---|
709 | <p>References <a class="el" href="convcode_8h-source.html#l00409">itpp::Convolutional_Code::n</a>, <a class="el" href="punct__convcode_8h-source.html#l00260">Period</a>, and <a class="el" href="punct__convcode_8h-source.html#l00264">puncture_matrix</a>.</p> |
---|
710 | |
---|
711 | <p>Referenced by <a class="el" href="punct__convcode_8cpp-source.html#l00136">encode()</a>.</p> |
---|
712 | |
---|
713 | </div> |
---|
714 | </div><p> |
---|
715 | <a class="anchor" name="8217a8922992b1fb4faa28d86f21e6d7"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::fast" ref="8217a8922992b1fb4faa28d86f21e6d7" args="(Array< ivec > &spectrum, const int dfree, const int no_terms, const int Cdfree=1000000, const bool test_catastrophic=false)" --> |
---|
716 | <div class="memitem"> |
---|
717 | <div class="memproto"> |
---|
718 | <table class="memname"> |
---|
719 | <tr> |
---|
720 | <td class="memname">int itpp::Convolutional_Code::fast </td> |
---|
721 | <td>(</td> |
---|
722 | <td class="paramtype"><a class="el" href="classitpp_1_1Array.html">Array</a>< ivec > & </td> |
---|
723 | <td class="paramname"> <em>spectrum</em>, </td> |
---|
724 | </tr> |
---|
725 | <tr> |
---|
726 | <td class="paramkey"></td> |
---|
727 | <td></td> |
---|
728 | <td class="paramtype">const int </td> |
---|
729 | <td class="paramname"> <em>dfree</em>, </td> |
---|
730 | </tr> |
---|
731 | <tr> |
---|
732 | <td class="paramkey"></td> |
---|
733 | <td></td> |
---|
734 | <td class="paramtype">const int </td> |
---|
735 | <td class="paramname"> <em>no_terms</em>, </td> |
---|
736 | </tr> |
---|
737 | <tr> |
---|
738 | <td class="paramkey"></td> |
---|
739 | <td></td> |
---|
740 | <td class="paramtype">const int </td> |
---|
741 | <td class="paramname"> <em>Cdfree</em> = <code>1000000</code>, </td> |
---|
742 | </tr> |
---|
743 | <tr> |
---|
744 | <td class="paramkey"></td> |
---|
745 | <td></td> |
---|
746 | <td class="paramtype">const bool </td> |
---|
747 | <td class="paramname"> <em>test_catastrophic</em> = <code>false</code></td><td> </td> |
---|
748 | </tr> |
---|
749 | <tr> |
---|
750 | <td></td> |
---|
751 | <td>)</td> |
---|
752 | <td></td><td></td><td><code> [inherited]</code></td> |
---|
753 | </tr> |
---|
754 | </table> |
---|
755 | </div> |
---|
756 | <div class="memdoc"> |
---|
757 | |
---|
758 | <p> |
---|
759 | Cederwall's fast algorithm. |
---|
760 | <p> |
---|
761 | Calculates both the weight spectrum (Ad) and the information weight spectrum (Cd) and returns it as ivec:s in the 0:th and 1:st component of spectrum, respectively. The FAST algorithm is good for calculating only a few terms in the spectrum. If many terms are desired, use calc_spectrum instead. The algorithm returns -1 if the code tested is worse that the input dfree and Cdfree. It returns 0 if the code MAY be catastrophic (assuming that test_catastrophic is true), and returns 1 if everything went right.<p> |
---|
762 | <ul> |
---|
763 | <li><code>dfree</code> the free distance of the code (or an upper bound) </li> |
---|
764 | <li><code>no_terms</code> including the dfree term that should be calculated </li> |
---|
765 | <li><code>Cdfree</code> is the best value of information weight spectrum found so far</li> |
---|
766 | </ul> |
---|
767 | Observe that there is a risk that some of the integers are overflow if many terms are calculated in the spectrum.<p> |
---|
768 | See IT No. 6, pp. 1146-1159, Nov. 1989 for details. |
---|
769 | <p>References <a class="el" href="convcode_8cpp-source.html#l01130">itpp::Convolutional_Code::distance_profile()</a>, <a class="el" href="convcode_8h-source.html#l00413">itpp::Convolutional_Code::m</a>, <a class="el" href="convcode_8h-source.html#l00372">itpp::Convolutional_Code::next_state()</a>, <a class="el" href="matfunc_8h-source.html#l00777">itpp::reverse()</a>, <a class="el" href="array_8h-source.html#l00257">itpp::Array< T >::set_size()</a>, <a class="el" href="sigfun_8cpp-source.html#l00297">itpp::spectrum()</a>, <a class="el" href="convcode_8cpp-source.html#l00042">itpp::Convolutional_Code::weight()</a>, and <a class="el" href="convcode_8cpp-source.html#l00064">itpp::Convolutional_Code::weight_reverse()</a>.</p> |
---|
770 | |
---|
771 | </div> |
---|
772 | </div><p> |
---|
773 | <a class="anchor" name="120a1f328f3d51597b8258901ad285de"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::fast" ref="120a1f328f3d51597b8258901ad285de" args="(Array< ivec > &spectrum, int time, int dfree, int no_terms, int d_best_so_far=0, bool test_catastrophic=false)" --> |
---|
774 | <div class="memitem"> |
---|
775 | <div class="memproto"> |
---|
776 | <table class="memname"> |
---|
777 | <tr> |
---|
778 | <td class="memname">int itpp::Punctured_Convolutional_Code::fast </td> |
---|
779 | <td>(</td> |
---|
780 | <td class="paramtype"><a class="el" href="classitpp_1_1Array.html">Array</a>< ivec > & </td> |
---|
781 | <td class="paramname"> <em>spectrum</em>, </td> |
---|
782 | </tr> |
---|
783 | <tr> |
---|
784 | <td class="paramkey"></td> |
---|
785 | <td></td> |
---|
786 | <td class="paramtype">int </td> |
---|
787 | <td class="paramname"> <em>time</em>, </td> |
---|
788 | </tr> |
---|
789 | <tr> |
---|
790 | <td class="paramkey"></td> |
---|
791 | <td></td> |
---|
792 | <td class="paramtype">int </td> |
---|
793 | <td class="paramname"> <em>dfree</em>, </td> |
---|
794 | </tr> |
---|
795 | <tr> |
---|
796 | <td class="paramkey"></td> |
---|
797 | <td></td> |
---|
798 | <td class="paramtype">int </td> |
---|
799 | <td class="paramname"> <em>no_terms</em>, </td> |
---|
800 | </tr> |
---|
801 | <tr> |
---|
802 | <td class="paramkey"></td> |
---|
803 | <td></td> |
---|
804 | <td class="paramtype">int </td> |
---|
805 | <td class="paramname"> <em>d_best_so_far</em> = <code>0</code>, </td> |
---|
806 | </tr> |
---|
807 | <tr> |
---|
808 | <td class="paramkey"></td> |
---|
809 | <td></td> |
---|
810 | <td class="paramtype">bool </td> |
---|
811 | <td class="paramname"> <em>test_catastrophic</em> = <code>false</code></td><td> </td> |
---|
812 | </tr> |
---|
813 | <tr> |
---|
814 | <td></td> |
---|
815 | <td>)</td> |
---|
816 | <td></td><td></td><td></td> |
---|
817 | </tr> |
---|
818 | </table> |
---|
819 | </div> |
---|
820 | <div class="memdoc"> |
---|
821 | |
---|
822 | <p> |
---|
823 | Cederwall's fast algorithm. |
---|
824 | <p> |
---|
825 | <ul> |
---|
826 | <li> |
---|
827 | See IEEE Trans. Information Theory No. 6, pp. 1146-1159, Nov. 1989 for details. </li> |
---|
828 | <li> |
---|
829 | Calculates both the weight spectrum (Ad) and the information weight spectrum (Cd) and returns it as ivec:s in the 0:th and 1:st component of spectrum, respectively. </li> |
---|
830 | <li> |
---|
831 | The algorithm returns -1 if the code tested is worse that the input <em>dfree</em> and <em>Cdfree</em>. </li> |
---|
832 | <li> |
---|
833 | It returns 0 if the code MAY be catastrophic (assuming that <em>test_catastrophic</em> is <code>true</code>), and returns 1 if everything went right. </li> |
---|
834 | <li> |
---|
835 | <em>dfree</em> = the free distance of the code (or an upper bound). </li> |
---|
836 | <li> |
---|
837 | <em>no_terms</em> = Number of terms including the <em>dfree</em> term that should be calculated. </li> |
---|
838 | <li> |
---|
839 | <em>d_best_so_far</em> = the best value of the free distance found so far. </li> |
---|
840 | <li> |
---|
841 | The FAST algorithm is good for calculating only a few terms in the spectrum. If many terms are desired, use <code>calc_spectrum</code> instead. </li> |
---|
842 | </ul> |
---|
843 | <p> |
---|
844 | Observe that there is a risk that some of the integers are overflow if many terms are calculated in the spectrum. |
---|
845 | <p>References <a class="el" href="punct__convcode_8cpp-source.html#l00516">distance_profile()</a>, <a class="el" href="convcode_8h-source.html#l00411">itpp::Convolutional_Code::K</a>, <a class="el" href="convcode_8h-source.html#l00413">itpp::Convolutional_Code::m</a>, <a class="el" href="convcode_8h-source.html#l00372">itpp::Convolutional_Code::next_state()</a>, <a class="el" href="punct__convcode_8h-source.html#l00260">Period</a>, <a class="el" href="matfunc_8h-source.html#l00777">itpp::reverse()</a>, <a class="el" href="array_8h-source.html#l00257">itpp::Array< T >::set_size()</a>, <a class="el" href="sigfun_8cpp-source.html#l00297">itpp::spectrum()</a>, <a class="el" href="punct__convcode_8cpp-source.html#l00038">weight()</a>, and <a class="el" href="punct__convcode_8cpp-source.html#l00057">weight_reverse()</a>.</p> |
---|
846 | |
---|
847 | </div> |
---|
848 | </div><p> |
---|
849 | <a class="anchor" name="b9fa55cd0b92e4d0db5debcd198184b1"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::inverse_tail" ref="b9fa55cd0b92e4d0db5debcd198184b1" args="(const bvec coded_sequence, bvec &input)" --> |
---|
850 | <div class="memitem"> |
---|
851 | <div class="memproto"> |
---|
852 | <table class="memname"> |
---|
853 | <tr> |
---|
854 | <td class="memname">bool itpp::Punctured_Convolutional_Code::inverse_tail </td> |
---|
855 | <td>(</td> |
---|
856 | <td class="paramtype">const bvec </td> |
---|
857 | <td class="paramname"> <em>coded_sequence</em>, </td> |
---|
858 | </tr> |
---|
859 | <tr> |
---|
860 | <td class="paramkey"></td> |
---|
861 | <td></td> |
---|
862 | <td class="paramtype">bvec & </td> |
---|
863 | <td class="paramname"> <em>input</em></td><td> </td> |
---|
864 | </tr> |
---|
865 | <tr> |
---|
866 | <td></td> |
---|
867 | <td>)</td> |
---|
868 | <td></td><td></td><td></td> |
---|
869 | </tr> |
---|
870 | </table> |
---|
871 | </div> |
---|
872 | <div class="memdoc"> |
---|
873 | |
---|
874 | <p> |
---|
875 | Calculate the inverse sequence. |
---|
876 | <p> |
---|
877 | Assumes that encode_tail is used in the encoding process. Returns false if there is an error in the coded sequence (not a valid codeword). Do not check that the tail forces the encoder into the zeroth state. |
---|
878 | <p>Reimplemented from <a class="el" href="classitpp_1_1Convolutional__Code.html#635406cac085c188709234c688ce2c68">itpp::Convolutional_Code</a>.</p> |
---|
879 | |
---|
880 | <p>References <a class="el" href="convcode_8h-source.html#l00417">itpp::Convolutional_Code::gen_pol</a>, <a class="el" href="itassert_8h-source.html#l00117">it_error_if</a>, <a class="el" href="convcode_8h-source.html#l00413">itpp::Convolutional_Code::m</a>, <a class="el" href="convcode_8h-source.html#l00409">itpp::Convolutional_Code::n</a>, <a class="el" href="punct__convcode_8h-source.html#l00260">Period</a>, <a class="el" href="punct__convcode_8h-source.html#l00264">puncture_matrix</a>, <a class="el" href="punct__convcode_8h-source.html#l00262">total</a>, and <a class="el" href="convcode_8h-source.html#l00429">itpp::Convolutional_Code::xor_int_table</a>.</p> |
---|
881 | |
---|
882 | </div> |
---|
883 | </div><p> |
---|
884 | <a class="anchor" name="3b8b66d056a2cde7ad92a8b6ce0c19ba"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::set_code" ref="3b8b66d056a2cde7ad92a8b6ce0c19ba" args="(const CONVOLUTIONAL_CODE_TYPE type_of_code, int inverse_rate, int constraint_length)" --> |
---|
885 | <div class="memitem"> |
---|
886 | <div class="memproto"> |
---|
887 | <table class="memname"> |
---|
888 | <tr> |
---|
889 | <td class="memname">void itpp::Punctured_Convolutional_Code::set_code </td> |
---|
890 | <td>(</td> |
---|
891 | <td class="paramtype">const <a class="el" href="group__fec.html#ge9651aa649deec69310af24cd89b8729">CONVOLUTIONAL_CODE_TYPE</a> </td> |
---|
892 | <td class="paramname"> <em>type_of_code</em>, </td> |
---|
893 | </tr> |
---|
894 | <tr> |
---|
895 | <td class="paramkey"></td> |
---|
896 | <td></td> |
---|
897 | <td class="paramtype">int </td> |
---|
898 | <td class="paramname"> <em>inverse_rate</em>, </td> |
---|
899 | </tr> |
---|
900 | <tr> |
---|
901 | <td class="paramkey"></td> |
---|
902 | <td></td> |
---|
903 | <td class="paramtype">int </td> |
---|
904 | <td class="paramname"> <em>constraint_length</em></td><td> </td> |
---|
905 | </tr> |
---|
906 | <tr> |
---|
907 | <td></td> |
---|
908 | <td>)</td> |
---|
909 | <td></td><td></td><td><code> [inline]</code></td> |
---|
910 | </tr> |
---|
911 | </table> |
---|
912 | </div> |
---|
913 | <div class="memdoc"> |
---|
914 | |
---|
915 | <p> |
---|
916 | Set the code according to built-in tables. |
---|
917 | <p> |
---|
918 | The <em>type_of_code</em> can be either <em>MFD</em> or <em>ODS</em> for maximum free distance codes (according to Proakis) or Optimum Distance Spectrum Codes according to Frenger, Orten and Ottosson. |
---|
919 | <p>Reimplemented from <a class="el" href="classitpp_1_1Convolutional__Code.html#9860c6e22e6f7a58c020534045a432d0">itpp::Convolutional_Code</a>.</p> |
---|
920 | |
---|
921 | </div> |
---|
922 | </div><p> |
---|
923 | <hr><h2>Friends And Related Function Documentation</h2> |
---|
924 | <a class="anchor" name="4abebe627013b4dfb5e1025c1f94c769"></a><!-- doxytag: member="itpp::Punctured_Convolutional_Code::compare_spectra" ref="4abebe627013b4dfb5e1025c1f94c769" args="(ivec v1, ivec v2, vec weight_profile)" --> |
---|
925 | <div class="memitem"> |
---|
926 | <div class="memproto"> |
---|
927 | <table class="memname"> |
---|
928 | <tr> |
---|
929 | <td class="memname">int compare_spectra </td> |
---|
930 | <td>(</td> |
---|
931 | <td class="paramtype">ivec </td> |
---|
932 | <td class="paramname"> <em>v1</em>, </td> |
---|
933 | </tr> |
---|
934 | <tr> |
---|
935 | <td class="paramkey"></td> |
---|
936 | <td></td> |
---|
937 | <td class="paramtype">ivec </td> |
---|
938 | <td class="paramname"> <em>v2</em>, </td> |
---|
939 | </tr> |
---|
940 | <tr> |
---|
941 | <td class="paramkey"></td> |
---|
942 | <td></td> |
---|
943 | <td class="paramtype">vec </td> |
---|
944 | <td class="paramname"> <em>weight_profile</em></td><td> </td> |
---|
945 | </tr> |
---|
946 | <tr> |
---|
947 | <td></td> |
---|
948 | <td>)</td> |
---|
949 | <td></td><td></td><td><code> [related, inherited]</code></td> |
---|
950 | </tr> |
---|
951 | </table> |
---|
952 | </div> |
---|
953 | <div class="memdoc"> |
---|
954 | |
---|
955 | <p> |
---|
956 | Compare two distance spectra using a weight profile. |
---|
957 | <p> |
---|
958 | Return 1 if v1 is less, 0 if v2 less, and -1 if equal. |
---|
959 | </div> |
---|
960 | </div><p> |
---|
961 | <hr>The documentation for this class was generated from the following files:<ul> |
---|
962 | <li><a class="el" href="punct__convcode_8h-source.html">punct_convcode.h</a><li><a class="el" href="punct__convcode_8cpp.html">punct_convcode.cpp</a></ul> |
---|
963 | </div> |
---|
964 | <hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by |
---|
965 | <a href="http://www.doxygen.org/index.html"> |
---|
966 | <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address> |
---|
967 | </body> |
---|
968 | </html> |
---|