root/doc/html/classitpp_1_1Root__Raised__Cosine.html @ 353

Revision 353, 19.8 kB (checked in by smidl, 16 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::Root_Raised_Cosine&lt; T1 &gt; Class Template 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_1Root__Raised__Cosine.html">Root_Raised_Cosine</a>
68  </div>
69</div>
70<div class="contents">
71<h1>itpp::Root_Raised_Cosine&lt; T1 &gt; Class Template Reference</h1><!-- doxytag: class="itpp::Root_Raised_Cosine" --><!-- doxytag: inherits="Pulse_Shape&lt; T1, double, T1 &gt;" -->(Square) Root Raised Cosine (RRC) Pulse Shaper 
72<a href="#_details">More...</a>
73<p>
74<code>#include &lt;<a class="el" href="pulse__shape_8h-source.html">pulse_shape.h</a>&gt;</code>
75<p>
76
77<p>
78<a href="classitpp_1_1Root__Raised__Cosine-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
79<tr><td></td></tr>
80<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
81<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f8664a35bcb061fdb28c5db4737842ce"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::Root_Raised_Cosine" ref="f8664a35bcb061fdb28c5db4737842ce" args="()" -->
82&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Root__Raised__Cosine.html#f8664a35bcb061fdb28c5db4737842ce">Root_Raised_Cosine</a> ()</td></tr>
83
84<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <br></td></tr>
85<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9015cc7c5c00be69fbbf42e63979ed7f"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::Root_Raised_Cosine" ref="9015cc7c5c00be69fbbf42e63979ed7f" args="(double roll_off_factor, int filter_length=6, int upsampling_factor=8)" -->
86&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Root__Raised__Cosine.html#9015cc7c5c00be69fbbf42e63979ed7f">Root_Raised_Cosine</a> (double <a class="el" href="classitpp_1_1Root__Raised__Cosine.html#7871d8432652602e6423d93224dae5cb">roll_off_factor</a>, int filter_length=6, int <a class="el" href="classitpp_1_1Pulse__Shape.html#0a389c9769f5714a3f0b01039fdfa2fd">upsampling_factor</a>=8)</td></tr>
87
88<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <br></td></tr>
89<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1375918f69f97ca87ae8d3b64cd35b75"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::~Root_Raised_Cosine" ref="1375918f69f97ca87ae8d3b64cd35b75" args="()" -->
90virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Root__Raised__Cosine.html#1375918f69f97ca87ae8d3b64cd35b75">~Root_Raised_Cosine</a> ()</td></tr>
91
92<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <br></td></tr>
93<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1809df167d368caf1bde6a7341934fcb"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::set_pulse_shape" ref="1809df167d368caf1bde6a7341934fcb" args="(double roll_off_factor, int filter_length=6, int upsampling_factor=8)" -->
94void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Root__Raised__Cosine.html#1809df167d368caf1bde6a7341934fcb">set_pulse_shape</a> (double <a class="el" href="classitpp_1_1Root__Raised__Cosine.html#7871d8432652602e6423d93224dae5cb">roll_off_factor</a>, int filter_length=6, int <a class="el" href="classitpp_1_1Pulse__Shape.html#0a389c9769f5714a3f0b01039fdfa2fd">upsampling_factor</a>=8)</td></tr>
95
96<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set pulse_shape, roll_off_factor between 0 and 1, filter_length even. <br></td></tr>
97<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b14c9e22c4e9393b6c81f4add91f5c4e"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::get_roll_off" ref="b14c9e22c4e9393b6c81f4add91f5c4e" args="(void) const " -->
98double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Root__Raised__Cosine.html#b14c9e22c4e9393b6c81f4add91f5c4e">get_roll_off</a> (void) const </td></tr>
99
100<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the Roll-off factor. <br></td></tr>
101<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#038f13f1eab9ae39e29c6c01fac0ac79">set_pulse_shape</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; double &gt; &amp;<a class="el" href="classitpp_1_1Pulse__Shape.html#cd7f0b701f29ad43caf8497eee8aacce">impulse_response</a>, int <a class="el" href="classitpp_1_1Pulse__Shape.html#0a389c9769f5714a3f0b01039fdfa2fd">upsampling_factor</a>)</td></tr>
102
103<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the general impulse response of the FIR filter.  <a href="#038f13f1eab9ae39e29c6c01fac0ac79"></a><br></td></tr>
104<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ac428c5628e3e5dff632b382caaacebe"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::get_pulse_shape" ref="ac428c5628e3e5dff632b382caaacebe" args="(void) const" -->
105<a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; double &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#ac428c5628e3e5dff632b382caaacebe">get_pulse_shape</a> (void) const</td></tr>
106
107<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the pulse shape. <br></td></tr>
108<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a344853245e5f45984b099e79fa998d5"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::get_upsampling_factor" ref="a344853245e5f45984b099e79fa998d5" args="() const" -->
109int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#a344853245e5f45984b099e79fa998d5">get_upsampling_factor</a> () const</td></tr>
110
111<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the over sampling factor. <br></td></tr>
112<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7556133cd7fb2ac87f4d34dee30bfc41"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::get_pulse_length" ref="7556133cd7fb2ac87f4d34dee30bfc41" args="() const" -->
113int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#7556133cd7fb2ac87f4d34dee30bfc41">get_pulse_length</a> () const</td></tr>
114
115<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the length of the pulse in number of symbols. <br></td></tr>
116<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="db6d549dc1076d2b8b4163b2078b7694"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::get_filter_length" ref="db6d549dc1076d2b8b4163b2078b7694" args="() const" -->
117int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#db6d549dc1076d2b8b4163b2078b7694">get_filter_length</a> () const</td></tr>
118
119<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the length of the internal FIR filter. <br></td></tr>
120<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="466e1220847c89e090a4bb367962df21"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::shape_symbols" ref="466e1220847c89e090a4bb367962df21" args="(const Vec&lt; T1 &gt; &amp;input, Vec&lt; T1 &gt; &amp;output)" -->
121void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#466e1220847c89e090a4bb367962df21">shape_symbols</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; T1 &gt; &amp;input, <a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; T1 &gt; &amp;output)</td></tr>
122
123<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shape the input symbols performing upsampling. <br></td></tr>
124<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e12e322608d6eecd5b7f2e3c9492c9a0"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::shape_symbols" ref="e12e322608d6eecd5b7f2e3c9492c9a0" args="(const Vec&lt; T1 &gt; &amp;input)" -->
125<a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; T1 &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#e12e322608d6eecd5b7f2e3c9492c9a0">shape_symbols</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; T1 &gt; &amp;input)</td></tr>
126
127<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shape the input symbols performing upsampling. <br></td></tr>
128<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="14086d26f13af721df4ae4939f80d331"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::shape_samples" ref="14086d26f13af721df4ae4939f80d331" args="(const Vec&lt; T1 &gt; &amp;input, Vec&lt; T1 &gt; &amp;output)" -->
129void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#14086d26f13af721df4ae4939f80d331">shape_samples</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; T1 &gt; &amp;input, <a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; T1 &gt; &amp;output)</td></tr>
130
131<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shape the input samples already upsampled. <br></td></tr>
132<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0161cf1c884ce1de260df48c82a15aa7"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::shape_samples" ref="0161cf1c884ce1de260df48c82a15aa7" args="(const Vec&lt; T1 &gt; &amp;input)" -->
133<a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; T1 &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#0161cf1c884ce1de260df48c82a15aa7">shape_samples</a> (const <a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; T1 &gt; &amp;input)</td></tr>
134
135<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shape the input symbols already upsampled. <br></td></tr>
136<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f85b84d4d2717ca2ae2170074c735bfa"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::clear" ref="f85b84d4d2717ca2ae2170074c735bfa" args="(void)" -->
137void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#f85b84d4d2717ca2ae2170074c735bfa">clear</a> (void)</td></tr>
138
139<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear internal states. <br></td></tr>
140<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
141<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7871d8432652602e6423d93224dae5cb"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::roll_off_factor" ref="7871d8432652602e6423d93224dae5cb" args="" -->
142double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Root__Raised__Cosine.html#7871d8432652602e6423d93224dae5cb">roll_off_factor</a></td></tr>
143
144<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The roll off factor (i.e. alpha). <br></td></tr>
145<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cd7f0b701f29ad43caf8497eee8aacce"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::impulse_response" ref="cd7f0b701f29ad43caf8497eee8aacce" args="" -->
146<a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; double &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#cd7f0b701f29ad43caf8497eee8aacce">impulse_response</a></td></tr>
147
148<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The impulse resounse of the pulse shaping filter. <br></td></tr>
149<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5dcd026bd37e73f910f2c5d6c1120d41"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::shaping_filter" ref="5dcd026bd37e73f910f2c5d6c1120d41" args="" -->
150<a class="el" href="classitpp_1_1MA__Filter.html">MA_Filter</a>&lt; T1, double, T1 &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#5dcd026bd37e73f910f2c5d6c1120d41">shaping_filter</a></td></tr>
151
152<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The pulse shaping filter. <br></td></tr>
153<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="adc84feb7843931d28b69b03595c47f9"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::pulse_length" ref="adc84feb7843931d28b69b03595c47f9" args="" -->
154int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#adc84feb7843931d28b69b03595c47f9">pulse_length</a></td></tr>
155
156<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Length in symbols. <br></td></tr>
157<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0a389c9769f5714a3f0b01039fdfa2fd"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::upsampling_factor" ref="0a389c9769f5714a3f0b01039fdfa2fd" args="" -->
158int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#0a389c9769f5714a3f0b01039fdfa2fd">upsampling_factor</a></td></tr>
159
160<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Samples per input symbol. <br></td></tr>
161<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f649289d3f21befa740b7462520c2bc7"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::setup_done" ref="f649289d3f21befa740b7462520c2bc7" args="" -->
162bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Pulse__Shape.html#f649289d3f21befa740b7462520c2bc7">setup_done</a></td></tr>
163
164<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ensures that setup is called before any other member function. <br></td></tr>
165</table>
166<hr><a name="_details"></a><h2>Detailed Description</h2>
167<h3>template&lt;class T1&gt;<br>
168 class itpp::Root_Raised_Cosine&lt; T1 &gt;</h3>
169
170(Square) Root Raised Cosine (RRC) Pulse Shaper
171<p>
172Upsamples and shapes symbols as square root raised cosine pulses with a given roll-off factor <img class="formulaInl" alt="$ \alpha $" src="form_304.png"> (zero is not allowed<ul>
173<li>use raised cosine instead). The Root Raised Cosine pulse shape is defined as: <p class="formulaDsp">
174<img class="formulaDsp" alt="\[ p(t) = \frac{4 \alpha}{\pi \sqrt{T}} \frac{\cos((1+\alpha)\pi t / T) + T \sin((1-\alpha)\pi t / T) / (4 \alpha t) }{1 - (4 \pi t / T)^2} \]" src="form_306.png">
175<p>
176</li></ul>
177<p>
178It is called square root raised cosine since it is defined as the square root of the raised cosine pulse in the frequency domain. Thus with a transmitter pulse shape of root raised cosine and a receiver filter that is root raised cosine, the overall response will be a raised cosine.<p>
179For more details see e.g. Lee &amp; Messerschmitt, p. 228. Observe that the shaping is done with a FIR filter where the size is given by <em>filter_length</em> * <em>over_sample_factor</em> + 1. The first samples in the output will therefore be zero or small before the memory of the filter is filled.<p>
180What is important, when using RRC shaping in a transmission system with the AWGN channel, the mean power of the output samples is not normalised, so the channel noise variance (or shaped signal) should be scaled appropriately.<p>
181The class is templated as follows: <code>T1</code> is the type of the input and the output samples. An example of usage is:<p>
182<div class="fragment"><pre class="fragment"><span class="preprocessor">  #include "<a class="code" href="itcomm_8h.html" title="Include file for the IT++ communications module.">itpp/itcomm.h</a>"</span>
183
184  Root_Raised_Cosine&lt;double&gt; rrc(0.5,6,8);
185  BPSK bpsk;
186  vec symbols, samples;
187
188  symbols = bpsk.modulate_bits(<a class="code" href="group__randgen.html#g5aa06887cf1fd3301b040987924068f0" title="Generates a random bit (equally likely 0s and 1s).">randb</a>(20));
189  samples = rrc.shape_symbols(symbols);
190</pre></div> <hr><h2>Member Function Documentation</h2>
191<a class="anchor" name="038f13f1eab9ae39e29c6c01fac0ac79"></a><!-- doxytag: member="itpp::Root_Raised_Cosine::set_pulse_shape" ref="038f13f1eab9ae39e29c6c01fac0ac79" args="(const Vec&lt; double &gt; &amp;impulse_response, int upsampling_factor)" -->
192<div class="memitem">
193<div class="memproto">
194      <table class="memname">
195        <tr>
196          <td class="memname">void <a class="el" href="classitpp_1_1Pulse__Shape.html">itpp::Pulse_Shape</a>&lt; T1 , double , T1  &gt;::set_pulse_shape           </td>
197          <td>(</td>
198          <td class="paramtype">const <a class="el" href="classitpp_1_1Vec.html">Vec</a>&lt; double  &gt; &amp;&nbsp;</td>
199          <td class="paramname"> <em>impulse_response</em>, </td>
200        </tr>
201        <tr>
202          <td class="paramkey"></td>
203          <td></td>
204          <td class="paramtype">int&nbsp;</td>
205          <td class="paramname"> <em>upsampling_factor</em></td><td>&nbsp;</td>
206        </tr>
207        <tr>
208          <td></td>
209          <td>)</td>
210          <td></td><td></td><td><code> [inherited]</code></td>
211        </tr>
212      </table>
213</div>
214<div class="memdoc">
215
216<p>
217Set the general impulse response of the FIR filter.
218<p>
219Observe that the pulse shape must have a duration of an integer number of symbols. Thus the length of the impulse response-1 modulo over sampling is an integer.
220</div>
221</div><p>
222<hr>The documentation for this class was generated from the following file:<ul>
223<li><a class="el" href="pulse__shape_8h-source.html">pulse_shape.h</a></ul>
224</div>
225<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by&nbsp;
226<a href="http://www.doxygen.org/index.html">
227<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
228</body>
229</html>
Note: See TracBrowser for help on using the browser.