<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="m0535">

  <name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Efficiency in Filtering</name>

  <metadata xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
  <md:version xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">2.4</md:version>
  <md:created xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">2000/08/10</md:created>
  <md:revised xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">2004/08/09 11:24:19.662 GMT-5</md:revised>
  <md:authorlist xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
      <md:author xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="dhj">
      <md:firstname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Don</md:firstname>
      
      <md:surname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Johnson</md:surname>
      <md:email xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">dhj@rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
    <md:maintainer xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="mselik">
      <md:firstname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Melissa</md:firstname>
      
      <md:surname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Selik</md:surname>
      <md:email xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">mselik@alumni.rice.edu</md:email>
    </md:maintainer>
    <md:maintainer xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="dhj">
      <md:firstname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Don</md:firstname>
      
      <md:surname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Johnson</md:surname>
      <md:email xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">dhj@rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
    <md:keyword xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">FFT</md:keyword>
    <md:keyword xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">frequency-domain</md:keyword>
  </md:keywordlist>

  <md:abstract xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Compares the efficiency of frequency-domain and time-domain filtering.
</md:abstract>
</metadata>

  <content xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">

    <para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="para1">
      To determine for what signal and filter durations a time- or
      frequency-domain implementation would be the most efficient, we
      need only count the computations required by each.  For the
      time-domain, difference-equation approach, we need
      <m:math>
	<m:apply>
	  <m:times/>
	  <m:ci><m:msub>
	      <m:mi>N</m:mi>
	      <m:mi>x</m:mi>
	    </m:msub></m:ci>
	  <m:apply>
	    <m:plus/>
	    <m:apply>
	      <m:cn>2</m:cn>
	      <m:ci>q</m:ci>
	    </m:apply>
	    <m:cn>1</m:cn>
	  </m:apply>
	</m:apply>
      </m:math>
      . The frequency-domain approach requires three Fourier transforms, each
      requiring
      <m:math>
	<m:apply>
	  <m:apply>
	    <m:divide/>
	    <m:ci>K</m:ci>
	    <m:cn>2</m:cn>
	  </m:apply>
	  <m:apply>
	    <m:log/>
	    <m:ci>K</m:ci>
	  </m:apply>
	</m:apply>
      </m:math>
      computations for a length-<m:math><m:ci>K</m:ci></m:math> FFT, and the
      multiplication of two spectra ( 
      <m:math>
	<m:apply>
	  <m:times/>
	  <m:cn>6</m:cn>
	  <m:ci>K</m:ci>
	</m:apply>
      </m:math>
      computations).  The output-signal-duration-determined length
      must be at least
      <m:math>
	<m:apply>
	  <m:plus/>
	  <m:ci><m:msub>
	      <m:mi>N</m:mi>
	      <m:mi>x</m:mi>
	    </m:msub></m:ci>
	  <m:ci>q</m:ci>  
	</m:apply>
      </m:math>
      .  Thus, we must compare 

      <equation xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="eqn0003">
	<m:math>
	  <m:apply>
	  <m:mo>↔</m:mo>
	    <m:apply>
	      <m:times/>
	      <m:ci><m:msub>
		  <m:mi>N</m:mi>
		  <m:mi>x</m:mi>
		</m:msub></m:ci>
	      <m:apply>
		<m:plus/>
		<m:apply>
		  <m:times/>
		  <m:cn>2</m:cn>
		  <m:ci>q</m:ci>
		</m:apply>
		<m:cn>1</m:cn>
	    </m:apply>
	    </m:apply>
	    <m:apply>
	      <m:plus/>
	      <m:apply>
		<m:times/>
		<m:cn>6</m:cn>
		<m:apply>
		  <m:plus/>
		  <m:ci><m:msub>
		      <m:mi>N</m:mi>
		      <m:mi>x</m:mi>
		    </m:msub></m:ci>
		  <m:ci>q</m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:times/>
		<m:apply>
		  <m:divide/>
		  <m:cn>3</m:cn>
		<m:cn>2</m:cn>
		</m:apply>
		<m:apply>
		  <m:plus/>
		  <m:ci><m:msub>
		      <m:mi>N</m:mi>
		      <m:mi>x</m:mi>
		    </m:msub>
		  </m:ci>
		  <m:ci>q</m:ci>
		</m:apply>
		<m:apply>
		  <m:log/>
		  <m:logbase><m:cn>2</m:cn></m:logbase>
		  <m:apply>
		    <m:plus/>
		    <m:ci><m:msub>
			<m:mi>N</m:mi>
			<m:mi>x</m:mi>
		      </m:msub></m:ci>
		    <m:ci>q</m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
      </equation>

      Exact analytic evaluation of this comparison is quite difficult
      (we have a transcendental equation to solve).  Insight into this
      comparison is best obtained by dividing by
      <m:math>
	<m:ci><m:msub>
	    <m:mi>N</m:mi>
	    <m:mi>x</m:mi>
	  </m:msub></m:ci>
      </m:math>
      .

      <equation xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="eqn0004">
	<m:math>
	  <m:apply>
	    <m:mo>↔</m:mo>  
	    <m:apply>
	      <m:plus/>
	      <m:apply>
		<m:times/>
		<m:cn>2</m:cn>
		<m:ci>q</m:ci>
	      </m:apply>
	      <m:cn>1</m:cn>
	    </m:apply>
	    <m:apply>
	      <m:plus/>
	      <m:apply>
		<m:times/>
		<m:cn>6</m:cn>
		<m:apply>
		  <m:plus/>
		  <m:cn>1</m:cn>
		  <m:apply>
		    <m:divide/>
		    <m:ci>q</m:ci>
		    <m:ci><m:msub>
			<m:mi>N</m:mi>
			<m:mi>x</m:mi>
		      </m:msub></m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:times/>
		<m:apply>
		  <m:divide/>
		  <m:cn>3</m:cn>
		  <m:cn>2</m:cn>
		</m:apply>
		<m:apply>
		  <m:plus/>
		  <m:cn>1</m:cn>
		  <m:apply>
		    <m:divide/>
		    <m:ci>q</m:ci>
		    <m:ci><m:msub>
			<m:mi>N</m:mi>
			<m:mi>x</m:mi>
		      </m:msub></m:ci>
		</m:apply>
		</m:apply>
		<m:apply>
		  <m:log/>
		  <m:logbase><m:cn>2</m:cn></m:logbase>
		  <m:apply>
		    <m:plus/>
		    <m:ci><m:msub>
			<m:mi>N</m:mi>
			<m:mi>x</m:mi>
		      </m:msub></m:ci>
		    <m:ci>q</m:ci>
		</m:apply>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
      </equation>

      With this manipulation, we are evaluating the number of
      computations per sample.  For any given value of the filter's
      order <m:math><m:ci>q</m:ci></m:math>, the right side, the
      number of frequency-domain computations, will exceed the left if
      the signal's duration is long enough.  However, for filter
      durations greater than about 10, as long as the input is at
      least 10 samples, the frequency-domain approach is faster
      <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">so long as the FFT's power-of-two constraint is
      advantageous</emphasis>.
    </para>

    <para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="para2">
      The frequency-domain approach is not yet viable; what will we do
      when the input signal is infinitely long?  The difference
      equation scenario fits perfectly with the <cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" document="m0511" target="fig1000" strength="9">envisioned digital filtering
      structure</cnxn>, but so far we have required the input to have
      limited duration (so that we could calculate its Fourier
      transform).  The solution to this problem is quite simple:
      Section the input into frames, filter each, and add the results
      together. To section a signal means expressing it as a linear
      combination of length-
      <m:math>
	<m:ci><m:msub>
	    <m:mi>N</m:mi>
	    <m:mi>x</m:mi>
	  </m:msub></m:ci>
      </m:math>
      non-overlapping "chunks."  Because the filter is linear,
      filtering a sum of terms is equivalent to summing the results of
      filtering each term.

      <equation xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="eqn0005">
	<m:math>
	  <m:apply>
	    <m:mo>⇔</m:mo>
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:ci type="fn">x</m:ci>
		<m:ci>n</m:ci>
	      </m:apply>
	      <m:apply>
		<m:sum/>
		<m:bvar><m:ci>m</m:ci></m:bvar>
		<m:lowlimit>
		  <m:apply>
		    <m:minus/>
		    <m:infinity/>
		  </m:apply>
		</m:lowlimit>
		<m:uplimit>
		  <m:infinity/>
		</m:uplimit>
		<m:apply>
		  <m:ci type="fn">x</m:ci>
		  <m:apply>
		    <m:minus/>
		    <m:ci>n</m:ci>
		    <m:apply>
		      <m:times/>
		      <m:ci>m</m:ci>
		      <m:ci><m:msub>
			  <m:mi>N</m:mi>
			  <m:mi>x</m:mi>
			</m:msub></m:ci>
		    </m:apply>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:apply>
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:ci type="fn">y</m:ci>
		<m:ci>n</m:ci>
	      </m:apply>
	      <m:apply>
		<m:sum/>
		<m:bvar><m:ci>m</m:ci></m:bvar>
		<m:lowlimit>
		  <m:apply>
		    <m:minus/>
		    <m:infinity/>
		  </m:apply>
		</m:lowlimit>
		<m:uplimit>
		  <m:infinity/>
		</m:uplimit>
		<m:apply>
		  <m:ci type="fn">y</m:ci>
		  <m:apply>
		    <m:minus/>
		    <m:ci>n</m:ci>
		    <m:apply>
		      <m:times/>
		      <m:ci>m</m:ci>
		      <m:ci><m:msub>
			  <m:mi>N</m:mi>
			  <m:mi>x</m:mi>
			</m:msub></m:ci>
		    </m:apply>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
      </equation>

      As illustrated in <cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" target="fig1003" strength="9"/>, note
      that each filtered section has a duration longer than the input.
      Consequently, we must literally add the filtered sections
      together, not just butt them together.
    </para>
    
    <figure xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="fig1003">
      <media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="image/png" src="sig25.png"/>
      <caption xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
	The noisy input signal is sectioned into length-48 frames,
	each of which is filtered using frequency-domain
	techniques.  Each filtered section is added to other outputs
	that overlap to create the signal equivalent to having
	filtered the entire input.  The sinusoidal component of the
	signal is shown as the red dashed line.
      </caption>
    </figure>

    <para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="para3">
      Computational considerations reveal a substantial advantage for
      a frequency-domain implementation over a time-domain one.  The
      number of computations for a time-domain implementation
      essentially remains constant whether we section the input or
      not.  Thus, the number of computations for each output is
      <m:math>
	<m:apply>
	  <m:plus/>
	  <m:apply>
	    <m:cn>2</m:cn>
	    <m:ci>q</m:ci>
	  </m:apply>
	  <m:cn>1</m:cn>
	</m:apply>
      </m:math>
      .  In the frequency-domain approach, computation counting
      changes because we need only compute the filter's frequency
      response
      <m:math>
	<m:apply>
	  <m:ci type="fn">H</m:ci>
	  <m:ci>k</m:ci>
	</m:apply>
      </m:math>
      once, which amounts to a fixed overhead.  We need only compute
      two DFTs and multiply them to filter a section.  Letting
      <m:math>
	<m:ci><m:msub>
	    <m:mi>N</m:mi>
	    <m:mi>x</m:mi>
	  </m:msub></m:ci>
      </m:math>
      denote a section's length, the number of computations for a
      section amounts to
      <m:math>
	<m:apply>
	  <m:plus/>
	  <m:apply>
	    <m:times/>
	    <m:apply>
	      <m:plus/>
	      <m:ci><m:msub>
		  <m:mi>N</m:mi>
		  <m:mi>x</m:mi>
		</m:msub></m:ci>
	      <m:ci>q</m:ci>
	    </m:apply>
	    <m:apply>
	      <m:log/>
	      <m:logbase><m:cn>2</m:cn></m:logbase>
	      <m:apply>
		<m:plus/>
		<m:ci><m:msub>
		    <m:mi>N</m:mi>
		    <m:mi>x</m:mi>
		  </m:msub></m:ci>
		<m:ci>q</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	  <m:apply>
	    <m:times/>
	    <m:cn>6</m:cn>
	    <m:apply>
	      <m:plus/>
	      <m:ci><m:msub>
		  <m:mi>N</m:mi>
		  <m:mi>x</m:mi>
		</m:msub></m:ci>
	      <m:ci>q</m:ci>
	    </m:apply>
	  </m:apply>
	</m:apply>
      </m:math>
      .  In addition, we must add the filtered outputs together; the
      number of terms to add corresponds to the excess duration of the
      output compared with the input
      (<m:math><m:ci>q</m:ci></m:math>).  The frequency-domain approach
      thus requires
      <m:math>
	<m:apply>
	  <m:plus/>
	  <m:apply>
	    <m:times/>
	    <m:apply>
	      <m:plus/>
	      <m:cn>1</m:cn>
	      <m:apply>
		<m:divide/>
		<m:ci>q</m:ci>
		<m:ci><m:msub>
		    <m:mi>N</m:mi>
		    <m:mi>x</m:mi>
		  </m:msub></m:ci>
	      </m:apply>
	    </m:apply>
	    <m:apply>
	      <m:log/>
	      <m:logbase><m:cn>2</m:cn></m:logbase>
	      <m:apply>
		<m:plus/>
		<m:ci><m:msub>
		    <m:mi>N</m:mi>
		    <m:mi>x</m:mi>
		  </m:msub></m:ci>
		<m:ci>q</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	  <m:apply>
	    <m:times/>
	    <m:cn>7</m:cn>
	    <m:apply>
	      <m:divide/>
	      <m:ci>q</m:ci>
	      <m:ci><m:msub>
		  <m:mi>N</m:mi>
		  <m:mi>x</m:mi>
		</m:msub></m:ci>
	    </m:apply>
	  </m:apply>
	  <m:cn>6</m:cn>
	</m:apply>
      </m:math>
      computations per output value.  For even modest filter orders,
      the frequency-domain approach is much faster.
    </para>

    <exercise xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="exer1">
      <problem xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
	<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="exer1a">
	  Show that as the section length increases, the frequency
	  domain approach becomes increasingly more efficient.
	</para>
      </problem>
      <solution xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
	<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="exer1b">
	  Let <m:math><m:ci>N</m:ci></m:math> denote the input's total
	  duration.  The time-domain implementation requires a total of
	  <m:math>
	    <m:apply>
	      <m:times/>
	      <m:ci>N</m:ci>
	      <m:apply>
		<m:plus/>
		<m:apply>
		  <m:times/>
		  <m:cn>2</m:cn>
		  <m:ci>q</m:ci>
		</m:apply>
		<m:cn>1</m:cn>
	      </m:apply>
	    </m:apply>
	  </m:math>
	  computations, or   
	  <m:math>
	    <m:apply>
	      <m:plus/>
	      <m:apply>
		<m:times/>
		<m:cn>2</m:cn>
		<m:ci>q</m:ci>
	      </m:apply>
	      <m:cn>1</m:cn>
	    </m:apply>
	  </m:math>
	  computations per input value. In the frequency domain, we split the
	  input into
	  <m:math>
	    <m:apply>
	      <m:divide/>
	      <m:ci>N</m:ci>
	      <m:ci><m:msub>
		  <m:mi>N</m:mi>
		  <m:mi>x</m:mi>
		</m:msub></m:ci>
	    </m:apply>
	  </m:math>
	  sections, each of which requires 
	  <m:math>
	    <m:apply>
	      <m:plus/>
	      <m:apply>
		<m:times/>
		<m:apply>
		  <m:plus/>
		  <m:cn>1</m:cn>
		  <m:apply>
		    <m:divide/>
		    <m:ci>q</m:ci>
		    <m:ci><m:msub>
			<m:mi>N</m:mi>
			<m:mi>x</m:mi>
		      </m:msub></m:ci>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:log/>
		  <m:logbase><m:cn>2</m:cn></m:logbase>
		  <m:apply>
		    <m:plus/>
		    <m:ci><m:msub>
			<m:mi>N</m:mi>
			<m:mi>x</m:mi>
		      </m:msub></m:ci>
		    <m:ci>q</m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:times/>
		<m:cn>7</m:cn>
		<m:apply>
		  <m:divide/>
		  <m:ci>q</m:ci>
		  <m:ci><m:msub>
		      <m:mi>N</m:mi>
		      <m:mi>x</m:mi>
		    </m:msub></m:ci>
		</m:apply>
	      </m:apply>
	      <m:cn>6</m:cn>
	    </m:apply>
	  </m:math>
	  per input in the section.  Because we divide
	  <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">again</emphasis>by
	  <m:math>
	    <m:ci><m:msub>
		<m:mi>N</m:mi>
		<m:mi>x</m:mi>
	      </m:msub></m:ci>
	  </m:math>
	  to find the number of computations per input value in the
	  entire input, this quantity <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">decreases</emphasis>as
	  <m:math>
	    <m:ci><m:msub>
		<m:mi>N</m:mi>
		<m:mi>x</m:mi>
	      </m:msub></m:ci>
	  </m:math>
	  increases.  For the time-domain implementation, it stays
	  constant.
	</para>
      </solution>
    </exercise>

    <para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="para4"> 
      Note that the choice of section duration is arbitrary. Once the
      filter is chosen, we should section so that the required FFT length is
      precisely a power of two: Choose
      <m:math>
	<m:ci><m:msub>
	    <m:mi>N</m:mi>
	    <m:mi>x</m:mi>
	  </m:msub></m:ci>
      </m:math>
      so that 
      <m:math>
	<m:apply>
	  <m:eq/>
	  <m:apply>
	    <m:plus/>
	    <m:ci><m:msub>
		<m:mi>N</m:mi>
		<m:mi>x</m:mi>
	      </m:msub></m:ci>
	    <m:ci>q</m:ci>  
	  </m:apply>
	  <m:apply>
	    <m:power/>
	    <m:cn>2</m:cn>
	    <m:ci>l</m:ci>
	  </m:apply>
	</m:apply>
      </m:math>
    </para>

  </content>
</document>

