Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > by-pkgid > def0228095a1541e2d3632b6b6da7c38 > files > 2297

gnuradio-doc-3.3.0-8mdv2010.1.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GNU Radio 3.3.0 C++ API: gr_pfb_interpolator_ccf Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="contents">
<h1>gr_pfb_interpolator_ccf Class Reference<br/>
<small>
[<a class="el" href="group__filter__blk.html">Filters</a>]</small>
</h1><!-- doxytag: class="gr_pfb_interpolator_ccf" --><!-- doxytag: inherits="gr_sync_interpolator" -->
<p>Polyphase filterbank interpolator with gr_complex input, gr_complex output and float taps.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="gr__pfb__interpolator__ccf_8h_source.html">gr_pfb_interpolator_ccf.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for gr_pfb_interpolator_ccf:</div>
<div class="dynsection">
<div class="center"><img src="classgr__pfb__interpolator__ccf__inherit__graph.png" border="0" usemap="#gr__pfb__interpolator__ccf_inherit__map" alt="Inheritance graph"/></div>
<map name="gr__pfb__interpolator__ccf_inherit__map" id="gr__pfb__interpolator__ccf_inherit__map">
<area shape="rect" id="node2" href="classgr__sync__interpolator.html" title="synchronous 1:N input to output with historyOverride work to provide the signal processing..." alt="" coords="13,392,152,421"/><area shape="rect" id="node4" href="classgr__sync__block.html" title="synchronous 1:1 input to output with historyOverride work to provide the signal processing..." alt="" coords="29,315,136,344"/><area shape="rect" id="node6" href="classgr__block.html" title="The abstract base class for all &#39;terminal&#39; processing blocks.A signal processing..." alt="" coords="48,237,117,267"/><area shape="rect" id="node8" href="classgr__basic__block.html" title="The abstract base class for all signal processing blocks.Basic blocks are the bare..." alt="" coords="28,160,137,189"/><area shape="rect" id="node10" href="classgr__msg__accepter.html" title="Accepts messages and inserts them into a message queue, then notifies subclass gr_basic_block..." alt="" coords="21,83,144,112"/><area shape="rect" id="node12" href="classgruel_1_1msg__accepter.html" title="Virtual base class that accepts messages." alt="" coords="13,5,152,35"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classgr__pfb__interpolator__ccf-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgr__pfb__interpolator__ccf.html#a2eaf438a9cd2790dc7d124756d845887">~gr_pfb_interpolator_ccf</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgr__pfb__interpolator__ccf.html#a892dd61b67931a1b46fddeb078af82dd">set_taps</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;<a class="el" href="interpolator__taps_8h.html#a30bf032e13c2a9fc4a98e14e390cd65a">taps</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgr__pfb__interpolator__ccf.html#a13f6b31430b26996bfa9d057746adf0c">print_taps</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgr__pfb__interpolator__ccf.html#afc835f4e97638fd6d495832fd457932d">work</a> (int noutput_items, <a class="el" href="classstd_1_1vector.html">gr_vector_const_void_star</a> &amp;input_items, <a class="el" href="classstd_1_1vector.html">gr_vector_void_star</a> &amp;output_items)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">just like <a class="el" href="classgr__block.html#a137b93d87dc83bbdb6369d33f4ea8197" title="compute output items from input items">gr_block::general_work</a>, only this arranges to call consume_each for you  <a href="#afc835f4e97638fd6d495832fd457932d"></a><br/></td></tr>
<tr><td colspan="2"><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1shared__ptr.html">gr_pfb_interpolator_ccf_sptr</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgr__pfb__interpolator__ccf.html#a50b9fc79fc9652c366a9f89c71d233d1">gr_make_pfb_interpolator_ccf</a> (unsigned int interp, const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;<a class="el" href="interpolator__taps_8h.html#a30bf032e13c2a9fc4a98e14e390cd65a">taps</a>)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Polyphase filterbank interpolator with gr_complex input, gr_complex output and float taps. </p>
<p>This block takes in a signal stream and performs interger up- sampling (interpolation) with a polyphase filterbank. The first input is the integer specifying how much to interpolate by. The second input is a vector (Python list) of floating-point taps of the prototype filter.</p>
<p>The filter's taps should be based on the interpolation rate specified. That is, the bandwidth specified is relative to the bandwidth after interpolation.</p>
<p>For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of <em>fs</em>, a 3-dB bandwidth of <em>BW</em> and a transition bandwidth of <em>TB</em>. We can also specify the out-of-band attenuation to use, ATT, and the filter window function (a Blackman-harris window in this case). The first input is the gain, which is also specified as the interpolation rate so that the output levels are the same as the input (this creates an overall increase in power).</p>
<p><b><em>self._taps = gr.firdes.low_pass_2(interp, interp*fs, BW, TB, attenuation_dB=ATT, window=gr.firdes.WIN_BLACKMAN_hARRIS)</em></b></p>
<p>The PFB interpolator code takes the taps generated above and builds a set of filters. The set contains <em>interp</em> number of filters and each filter contains ceil(taps.size()/interp) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps.</p>
<p>The theory behind this block can be found in Chapter 7.1 of the following book.</p>
<p><b><em>f. harris, "Multirate Signal Processing for Communication
       Systems&lt;/EM&gt;," Upper Saddle River, NJ: Prentice Hall, Inc. 2004.</em></b> </p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a2eaf438a9cd2790dc7d124756d845887"></a><!-- doxytag: member="gr_pfb_interpolator_ccf::~gr_pfb_interpolator_ccf" ref="a2eaf438a9cd2790dc7d124756d845887" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">gr_pfb_interpolator_ccf::~gr_pfb_interpolator_ccf </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a13f6b31430b26996bfa9d057746adf0c"></a><!-- doxytag: member="gr_pfb_interpolator_ccf::print_taps" ref="a13f6b31430b26996bfa9d057746adf0c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void gr_pfb_interpolator_ccf::print_taps </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Print all of the filterbank taps to screen. </p>

</div>
</div>
<a class="anchor" id="a892dd61b67931a1b46fddeb078af82dd"></a><!-- doxytag: member="gr_pfb_interpolator_ccf::set_taps" ref="a892dd61b67931a1b46fddeb078af82dd" args="(const std::vector&lt; float &gt; &amp;taps)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void gr_pfb_interpolator_ccf::set_taps </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>taps</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Resets the filterbank's filter taps with the new prototype filter </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>taps</em>&nbsp;</td><td>(vector/list of floats) The prototype filter to populate the filterbank. The taps should be generated at the interpolated sampling rate. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="afc835f4e97638fd6d495832fd457932d"></a><!-- doxytag: member="gr_pfb_interpolator_ccf::work" ref="afc835f4e97638fd6d495832fd457932d" args="(int noutput_items, gr_vector_const_void_star &amp;input_items, gr_vector_void_star &amp;output_items)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int gr_pfb_interpolator_ccf::work </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>noutput_items</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">gr_vector_const_void_star</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>input_items</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">gr_vector_void_star</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>output_items</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>just like <a class="el" href="classgr__block.html#a137b93d87dc83bbdb6369d33f4ea8197" title="compute output items from input items">gr_block::general_work</a>, only this arranges to call consume_each for you </p>
<p>The user must override work to define the signal processing code </p>

<p>Implements <a class="el" href="classgr__sync__block.html#a0c523f4285a6eb690f677ee6295ab117">gr_sync_block</a>.</p>

</div>
</div>
<hr/><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="a50b9fc79fc9652c366a9f89c71d233d1"></a><!-- doxytag: member="gr_pfb_interpolator_ccf::gr_make_pfb_interpolator_ccf" ref="a50b9fc79fc9652c366a9f89c71d233d1" args="(unsigned int interp, const std::vector&lt; float &gt; &amp;taps)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classboost_1_1shared__ptr.html">gr_pfb_interpolator_ccf_sptr</a> gr_make_pfb_interpolator_ccf </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>interp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>taps</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Build the polyphase filterbank interpolator. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>interp</em>&nbsp;</td><td>(unsigned integer) Specifies the interpolation rate to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>taps</em>&nbsp;</td><td>(vector/list of floats) The prototype filter to populate the filterbank. The taps should be generated at the interpolated sampling rate. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="gr__pfb__interpolator__ccf_8h_source.html">gr_pfb_interpolator_ccf.h</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Dec 29 19:52:53 2010 for GNU Radio 3.3.0 C++ API by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>