root/doc/html/classitpp_1_1Vector__Quantizer.html @ 354

Revision 353, 18.6 kB (checked in by smidl, 15 years ago)

doc

Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>mixpp: itpp::Vector_Quantizer Class Reference</title>
4<link href="tabs.css" rel="stylesheet" type="text/css">
5<link href="doxygen.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.8 -->
8<script type="text/javascript">
9<!--
10function changeDisplayState (e){
11  var num=this.id.replace(/[^[0-9]/g,'');
12  var button=this.firstChild;
13  var sectionDiv=document.getElementById('dynsection'+num);
14  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
15    sectionDiv.style.display='block';
16    button.src='open.gif';
17  }else{
18    sectionDiv.style.display='none';
19    button.src='closed.gif';
20  }
21}
22function initDynSections(){
23  var divs=document.getElementsByTagName('div');
24  var sectionCounter=1;
25  for(var i=0;i<divs.length-1;i++){
26    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
27      var header=divs[i];
28      var section=divs[i+1];
29      var button=header.firstChild;
30      if (button!='IMG'){
31        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
32        button=document.createElement('img');
33        divs[i].insertBefore(button,divs[i].firstChild);
34      }
35      header.style.cursor='pointer';
36      header.onclick=changeDisplayState;
37      header.id='dynheader'+sectionCounter;
38      button.src='closed.gif';
39      section.id='dynsection'+sectionCounter;
40      section.style.display='none';
41      section.style.marginLeft='14px';
42      sectionCounter++;
43    }
44  }
45}
46window.onload = initDynSections;
47-->
48</script>
49<div class="navigation" id="top">
50  <div class="tabs">
51    <ul>
52      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
53      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
54      <li><a href="modules.html"><span>Modules</span></a></li>
55      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
56      <li><a href="files.html"><span>Files</span></a></li>
57    </ul>
58  </div>
59  <div class="tabs">
60    <ul>
61      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
62      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
63      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
64      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
65    </ul>
66  </div>
67  <div class="navpath"><b>itpp</b>::<a class="el" href="classitpp_1_1Vector__Quantizer.html">Vector_Quantizer</a>
68  </div>
69</div>
70<div class="contents">
71<h1>itpp::Vector_Quantizer Class Reference<br>
72<small>
73[<a class="el" href="group__sourcecoding.html">Source Coding Routines</a>]</small>
74</h1><!-- doxytag: class="itpp::Vector_Quantizer" -->Class for vector quantization. 
75<a href="#_details">More...</a>
76<p>
77<code>#include &lt;<a class="el" href="vq_8h-source.html">vq.h</a>&gt;</code>
78<p>
79
80<p>
81<a href="classitpp_1_1Vector__Quantizer-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="b70eb8935871395a27346aefc092a047"></a><!-- doxytag: member="itpp::Vector_Quantizer::Vector_Quantizer" ref="b70eb8935871395a27346aefc092a047" args="()" -->
85&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#b70eb8935871395a27346aefc092a047">Vector_Quantizer</a> ()</td></tr>
86
87<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <br></td></tr>
88<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ac020b6944c5123a7efd73e9edf395d1"></a><!-- doxytag: member="itpp::Vector_Quantizer::Vector_Quantizer" ref="ac020b6944c5123a7efd73e9edf395d1" args="(const char *Name)" -->
89&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#ac020b6944c5123a7efd73e9edf395d1">Vector_Quantizer</a> (const char *<a class="el" href="classitpp_1_1Name.html">Name</a>)</td></tr>
90
91<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a VQ from a VQ file. <br></td></tr>
92<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4a51a14da06c9738abd6a27a24c7071c"></a><!-- doxytag: member="itpp::Vector_Quantizer::encode" ref="4a51a14da06c9738abd6a27a24c7071c" args="(const vec &amp;x)" -->
93int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#4a51a14da06c9738abd6a27a24c7071c">encode</a> (const vec &amp;x)</td></tr>
94
95<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encode the input vector. <br></td></tr>
96<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5445bf26148404b87bce1987a4728857"></a><!-- doxytag: member="itpp::Vector_Quantizer::encode" ref="5445bf26148404b87bce1987a4728857" args="(const vec &amp;x, int num)" -->
97ivec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#5445bf26148404b87bce1987a4728857">encode</a> (const vec &amp;x, int num)</td></tr>
98
99<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encode the input vector, and return the num best indices. <br></td></tr>
100<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5c0e94884ce8109500d0e1e80e8f6f49"></a><!-- doxytag: member="itpp::Vector_Quantizer::decode" ref="5c0e94884ce8109500d0e1e80e8f6f49" args="(int Index) const " -->
101vec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#5c0e94884ce8109500d0e1e80e8f6f49">decode</a> (int Index) const </td></tr>
102
103<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decode the index. <br></td></tr>
104<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="21c379c092506f65ab63ecb11ab081eb"></a><!-- doxytag: member="itpp::Vector_Quantizer::decode" ref="21c379c092506f65ab63ecb11ab081eb" args="(const ivec &amp;Index) const " -->
105<a class="el" href="classitpp_1_1Array.html">Array</a>&lt; vec &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#21c379c092506f65ab63ecb11ab081eb">decode</a> (const ivec &amp;Index) const </td></tr>
106
107<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decode the indices. <br></td></tr>
108<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="650aebaaf39fe0f203a2ba592f41da4c"></a><!-- doxytag: member="itpp::Vector_Quantizer::Q" ref="650aebaaf39fe0f203a2ba592f41da4c" args="(const vec &amp;x)" -->
109vec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#650aebaaf39fe0f203a2ba592f41da4c">Q</a> (const vec &amp;x)</td></tr>
110
111<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Quantize the input vector. <br></td></tr>
112<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1c01451b5e67befeca140af8c2b74341"></a><!-- doxytag: member="itpp::Vector_Quantizer::operator()" ref="1c01451b5e67befeca140af8c2b74341" args="(const vec &amp;x)" -->
113vec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#1c01451b5e67befeca140af8c2b74341">operator()</a> (const vec &amp;x)</td></tr>
114
115<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Quantize the input vector. <br></td></tr>
116<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3fbbf6a43917e93a213a879b867c1860"></a><!-- doxytag: member="itpp::Vector_Quantizer::set_codebook" ref="3fbbf6a43917e93a213a879b867c1860" args="(const mat &amp;CB)" -->
117void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#3fbbf6a43917e93a213a879b867c1860">set_codebook</a> (const mat &amp;CB)</td></tr>
118
119<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the codebook by a matrix. <br></td></tr>
120<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="349e9188c31a8963ed16e135a3778ac6"></a><!-- doxytag: member="itpp::Vector_Quantizer::get_codebook" ref="349e9188c31a8963ed16e135a3778ac6" args="() const " -->
121mat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#349e9188c31a8963ed16e135a3778ac6">get_codebook</a> () const </td></tr>
122
123<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the codebook. <br></td></tr>
124<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="69efdc19d6d85fac351937fde067a149"></a><!-- doxytag: member="itpp::Vector_Quantizer::set_codevector" ref="69efdc19d6d85fac351937fde067a149" args="(int Index, const vec &amp;indata)" -->
125void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#69efdc19d6d85fac351937fde067a149">set_codevector</a> (int Index, const vec &amp;indata)</td></tr>
126
127<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a codevector in the codebook. <br></td></tr>
128<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="af1ea157ef27a25fec39a46fce6df33a"></a><!-- doxytag: member="itpp::Vector_Quantizer::get_codevector" ref="af1ea157ef27a25fec39a46fce6df33a" args="(int Index) const " -->
129vec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#af1ea157ef27a25fec39a46fce6df33a">get_codevector</a> (int Index) const </td></tr>
130
131<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the codevector at the given index. <br></td></tr>
132<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0f863a2e16134d4076b456c3f698687b"></a><!-- doxytag: member="itpp::Vector_Quantizer::modify_codevector" ref="0f863a2e16134d4076b456c3f698687b" args="(int no, double mul, const vec &amp;add)" -->
133void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#0f863a2e16134d4076b456c3f698687b">modify_codevector</a> (int no, double mul, const vec &amp;add)</td></tr>
134
135<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rescale and translate a codevector. <br></td></tr>
136<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="28950d7d234af8eb427f2ca7a22f7b6d"></a><!-- doxytag: member="itpp::Vector_Quantizer::size" ref="28950d7d234af8eb427f2ca7a22f7b6d" args="() const " -->
137int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#28950d7d234af8eb427f2ca7a22f7b6d">size</a> () const </td></tr>
138
139<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the size (number of codevectors) of the VQ. <br></td></tr>
140<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d61b7199bfcd34838abacc717371d5cf"></a><!-- doxytag: member="itpp::Vector_Quantizer::dim" ref="d61b7199bfcd34838abacc717371d5cf" args="() const " -->
141int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#d61b7199bfcd34838abacc717371d5cf">dim</a> () const </td></tr>
142
143<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the dimension of the VQ. <br></td></tr>
144<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b79d19121e86b735b90f445d642c8eef"></a><!-- doxytag: member="itpp::Vector_Quantizer::nobits" ref="b79d19121e86b735b90f445d642c8eef" args="() const " -->
145int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#b79d19121e86b735b90f445d642c8eef">nobits</a> () const </td></tr>
146
147<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the number of bits of the VQ [log2(size)/dim]. <br></td></tr>
148<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#8378151d35b86475caedaf63d1a7b6a1">load</a> (const char *<a class="el" href="classitpp_1_1Name.html">Name</a>)</td></tr>
149
150<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the codebook from a file.  <a href="#8378151d35b86475caedaf63d1a7b6a1"></a><br></td></tr>
151<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#ddf2ffdf0d59b8f7ecf28fac780617ab">save</a> (const char *<a class="el" href="classitpp_1_1Name.html">Name</a>) const </td></tr>
152
153<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save the codebook to a file.  <a href="#ddf2ffdf0d59b8f7ecf28fac780617ab"></a><br></td></tr>
154<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="954211b1d52c23ef20545c7f74a25738"></a><!-- doxytag: member="itpp::Vector_Quantizer::latest_distortion" ref="954211b1d52c23ef20545c7f74a25738" args="()" -->
155double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#954211b1d52c23ef20545c7f74a25738">latest_distortion</a> ()</td></tr>
156
157<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the distortion at the latest time a vector was encoded. <br></td></tr>
158<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
159<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c6220558e3863332c7094a328a5c3e50"></a><!-- doxytag: member="itpp::Vector_Quantizer::CodeBook" ref="c6220558e3863332c7094a328a5c3e50" args="" -->
160vec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#c6220558e3863332c7094a328a5c3e50">CodeBook</a></td></tr>
161
162<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The vector containing the code book. <br></td></tr>
163<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7fb09561c02521795c19679c520829e5"></a><!-- doxytag: member="itpp::Vector_Quantizer::Size" ref="7fb09561c02521795c19679c520829e5" args="" -->
164int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#7fb09561c02521795c19679c520829e5">Size</a></td></tr>
165
166<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The size of the code book. <br></td></tr>
167<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cecdbde8911852c5472b28e7fb8609bb"></a><!-- doxytag: member="itpp::Vector_Quantizer::Dim" ref="cecdbde8911852c5472b28e7fb8609bb" args="" -->
168int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#cecdbde8911852c5472b28e7fb8609bb">Dim</a></td></tr>
169
170<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The dimension of the code book. <br></td></tr>
171<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c7cc12cb59533ac4cc4603d7fadc1738"></a><!-- doxytag: member="itpp::Vector_Quantizer::LatestDist" ref="c7cc12cb59533ac4cc4603d7fadc1738" args="" -->
172double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Vector__Quantizer.html#c7cc12cb59533ac4cc4603d7fadc1738">LatestDist</a></td></tr>
173
174<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The distortion at the latest time a vector was encoded. <br></td></tr>
175</table>
176<hr><a name="_details"></a><h2>Detailed Description</h2>
177Class for vector quantization.
178<p>
179The following code illustrates how the VQ can be initialized from a file and used to quantize a random vector. <div class="fragment"><pre class="fragment">  <a class="code" href="classitpp_1_1Vector__Quantizer.html#b70eb8935871395a27346aefc092a047" title="Default constructor.">Vector_Quantizer</a> Quantizer;
180  vec     x,y;
181  <span class="keywordtype">int</span>     i;
182
183  Quantizer.load(<span class="stringliteral">"randomvq.vq"</span>);
184  x=<a class="code" href="group__randgen.html#g9ecf5af23567f51abc9af737fdbd872a" title="Generates a random Gaussian (0,1) variable.">randn</a>(Quantizer.dim());
185  i=Quantizer.encode(x);
186  y=Quantizer.decode(i);
187</pre></div> <hr><h2>Member Function Documentation</h2>
188<a class="anchor" name="8378151d35b86475caedaf63d1a7b6a1"></a><!-- doxytag: member="itpp::Vector_Quantizer::load" ref="8378151d35b86475caedaf63d1a7b6a1" args="(const char *Name)" -->
189<div class="memitem">
190<div class="memproto">
191      <table class="memname">
192        <tr>
193          <td class="memname">void itpp::Vector_Quantizer::load           </td>
194          <td>(</td>
195          <td class="paramtype">const char *&nbsp;</td>
196          <td class="paramname"> <em>Name</em>          </td>
197          <td>&nbsp;)&nbsp;</td>
198          <td></td>
199        </tr>
200      </table>
201</div>
202<div class="memdoc">
203
204<p>
205Load the codebook from a file.
206<p>
207<dl compact><dt><b>Parameters:</b></dt><dd>
208  <table border="0" cellspacing="2" cellpadding="0">
209    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classitpp_1_1Name.html" title="Automatic naming when savingAn easy way to give a variable a name and optionally...">Name</a></em>&nbsp;</td><td>The name of the VQ file</td></tr>
210  </table>
211</dl>
212The file format is a textfile where each row is a vector from the codebook.
213</div>
214</div><p>
215<a class="anchor" name="ddf2ffdf0d59b8f7ecf28fac780617ab"></a><!-- doxytag: member="itpp::Vector_Quantizer::save" ref="ddf2ffdf0d59b8f7ecf28fac780617ab" args="(const char *Name) const " -->
216<div class="memitem">
217<div class="memproto">
218      <table class="memname">
219        <tr>
220          <td class="memname">void itpp::Vector_Quantizer::save           </td>
221          <td>(</td>
222          <td class="paramtype">const char *&nbsp;</td>
223          <td class="paramname"> <em>Name</em>          </td>
224          <td>&nbsp;)&nbsp;</td>
225          <td> const</td>
226        </tr>
227      </table>
228</div>
229<div class="memdoc">
230
231<p>
232Save the codebook to a file.
233<p>
234<dl compact><dt><b>Parameters:</b></dt><dd>
235  <table border="0" cellspacing="2" cellpadding="0">
236    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classitpp_1_1Name.html" title="Automatic naming when savingAn easy way to give a variable a name and optionally...">Name</a></em>&nbsp;</td><td>The name of the VQ file</td></tr>
237  </table>
238</dl>
239The file format is a textfile where each row is a vector from the codebook.
240</div>
241</div><p>
242<hr>The documentation for this class was generated from the following file:<ul>
243<li><a class="el" href="vq_8h-source.html">vq.h</a></ul>
244</div>
245<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by&nbsp;
246<a href="http://www.doxygen.org/index.html">
247<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
248</body>
249</html>
Note: See TracBrowser for help on using the browser.