<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!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="m10421">

  <name>Discrete Fourier Transformation</name>


  <metadata>
  <md:version>2.9</md:version>
  <md:created>2001/12/31</md:created>
  <md:revised>2003/07/24 10:50:43 GMT-5</md:revised>
  <md:authorlist>
      <md:author id="schniter">
      <md:firstname>Phil</md:firstname>
      
      <md:surname>Schniter</md:surname>
      <md:email>schniter@ee.eng.ohio-state.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="mariyah">
      <md:firstname>Mariyah</md:firstname>
      
      <md:surname>Poonawala</md:surname>
      <md:email>mariyah@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="prash">
      <md:firstname>Prashant</md:firstname>
      
      <md:surname>Singh</md:surname>
      <md:email>prash@ece.rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist>
    <md:keyword>DFT</md:keyword>
    <md:keyword>Dirichlet sinc</md:keyword>
    <md:keyword>DTFT</md:keyword>
    <md:keyword>FFT</md:keyword>
  </md:keywordlist>

  <md:abstract>This module covers the fundamentals of Discrete-Fourier Transformations.
</md:abstract>
</metadata>


  <content>
    <section id="sec1">
      <name>N-point Discrete Fourier Transform (DFT)</name>

      <para id="sec1para1">
	
	<equation id="eq01">
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:ci type="fn" class="discrete">X</m:ci>
		<m:ci>k</m:ci>
	      </m:apply>
	      <m:apply>
		<m:sum/>
		<m:bvar><m:ci>n</m:ci></m:bvar>
		<m:lowlimit><m:cn>0</m:cn></m:lowlimit>
		<m:uplimit>
		  <m:apply>
		    <m:minus/>
		    <m:ci>N</m:ci>
		    <m:cn>1</m:cn>
		  </m:apply>
		</m:uplimit>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:ci type="fn" class="discrete">x</m:ci>
		    <m:ci>n</m:ci>
		  </m:apply>
		  <m:apply>                
		    <m:exp/>
                    <m:apply>
                      <m:times/>
		      <m:apply>
			<m:minus/>
			<m:imaginaryi/>
		      </m:apply>
		      <m:apply>
			<m:divide/>
			<m:apply>
			  <m:times/>
			  <m:cn>2</m:cn>
			  <m:pi/>
			</m:apply>
			<m:ci>n</m:ci>
		      </m:apply>
		      <m:ci>k</m:ci>
		      <m:ci>n</m:ci>
                    </m:apply>
		  </m:apply>
		</m:apply> 
	      </m:apply>
	    </m:apply>
	    <m:apply>
	      <m:forall/>
	      <m:bvar>
		<m:ci>k</m:ci>
	      </m:bvar>
	      <m:condition>
		<m:apply>
		  <m:eq/>
		  <m:ci>k</m:ci>
		  <m:set>
		    <m:cn>0</m:cn>
		    <m:mo>…</m:mo>
		    <m:apply>
		      <m:minus/>
		      <m:ci>N</m:ci>
		      <m:cn>1</m:cn>
		    </m:apply>
		  </m:set>
		</m:apply>
	      </m:condition>
	    </m:apply>
	  </m:math>
	</equation>

	<equation id="eq02">
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:ci type="fn" class="discrete">x</m:ci>
		<m:ci>n</m:ci>
	      </m:apply>
	      <m:apply>
		<m:times/>
		<m:apply>
		  <m:divide/>
		  <m:cn>1</m:cn>
		  <m:ci>N</m:ci>
		</m:apply>
		<m:apply>
		  <m:sum/>
		  <m:bvar><m:ci>k</m:ci></m:bvar>
		  <m:lowlimit><m:cn>0</m:cn></m:lowlimit>
		  <m:uplimit>
		    <m:apply>
		      <m:minus/>
                      <m:ci>N</m:ci>
                      <m:cn>1</m:cn>
		    </m:apply>
		  </m:uplimit>
		  <m:apply>
		    <m:times/>
                    <m:apply>
                      <m:ci type="fn" class="discrete">X</m:ci>
                      <m:ci>k</m:ci>
                    </m:apply>
                    <m:apply>                
                      <m:exp/>
		      <m:apply>
			<m:times/>
			<m:imaginaryi/>
			<m:apply>
			  <m:divide/>
			  <m:apply>
			    <m:times/>
			    <m:cn>2</m:cn>
			    <m:pi/>
			  </m:apply>
			  <m:ci>n</m:ci>
			</m:apply>
			<m:ci>k</m:ci>
			<m:ci>n</m:ci>
		      </m:apply>
                    </m:apply>
		  </m:apply> 
		</m:apply>
	      </m:apply>
	    </m:apply>
	    <m:apply>
	      <m:forall/>
	      <m:bvar><m:ci>n</m:ci></m:bvar>
	      <m:condition>
		<m:apply>
		  <m:eq/>
		  <m:ci>n</m:ci>
		  <m:set>
		    <m:cn>0</m:cn>
		    <m:mo>…</m:mo>
		    <m:apply>
		      <m:minus/>
		      <m:ci>N</m:ci>
		      <m:cn>1</m:cn>
		    </m:apply>
		  </m:set>
		</m:apply>
	      </m:condition>
	    </m:apply>
	  </m:math>
	</equation>
      </para>

      <para id="sec1para2">
	Note that:
	<list id="observations">
	  <item>
	    <m:math>
	      <m:apply>
		<m:ci type="fn" class="discrete">X</m:ci>
		<m:ci>k</m:ci>
	      </m:apply>
	    </m:math> is the DTFT evaluated at
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:ci>ω</m:ci>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:divide/>
                    <m:apply>
                      <m:times/>
		      <m:cn>2</m:cn>
		      <m:pi/>
                    </m:apply>
                    <m:ci>N</m:ci>
		  </m:apply>
		  <m:ci>k</m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:forall/>
		<m:bvar>
		  <m:ci>k</m:ci>
		</m:bvar>
		<m:condition>
		  <m:apply>
		    <m:eq/>
		    <m:ci>k</m:ci>
		    <m:set>
		      <m:cn>0</m:cn>
		      <m:mo>…</m:mo>
		      <m:apply>
			<m:minus/>
			<m:ci>N</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:set>
		  </m:apply>
		</m:condition>
	      </m:apply>
	    </m:math>
	  </item>


	  <item>
	    Zero-padding
	    <m:math>
	      <m:apply>
		<m:ci type="fn" class="discrete">x</m:ci>
		<m:ci>n</m:ci>
	      </m:apply>
	    </m:math> to <m:math><m:ci>M</m:ci></m:math> samples prior
	    to the DFT yields an <m:math><m:ci>M</m:ci></m:math>-point
	    uniform sampled version of the DTFT:

	    <equation id="eq03">
	      <m:math>
		<m:apply>
		  <m:eq/>
		  <m:apply>
		    <m:ci type="fn">X</m:ci>
		    <m:apply>
		      <m:exp/>
		      <m:apply>
			<m:times/>
                        <m:imaginaryi/>
                        <m:apply>
                          <m:divide/>
			  <m:apply>
			    <m:times/>
			    <m:cn>2</m:cn>
			    <m:pi/>
			  </m:apply>
			  <m:ci>M</m:ci>
                        </m:apply>
                        <m:ci>k</m:ci>
		      </m:apply>
		    </m:apply>
		  </m:apply>

		  <m:apply>
		    <m:sum/>
		    <m:bvar>
		      <m:ci>n</m:ci>
		    </m:bvar>
		    <m:lowlimit>
		      <m:cn>0</m:cn>
		    </m:lowlimit>
		    <m:uplimit>
		      <m:apply>
			<m:minus/>
			<m:ci>N</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:uplimit>
		    <m:apply>
		      <m:times/>
                      <m:apply>
			<m:ci type="fn" class="discrete">x</m:ci>
			<m:ci>n</m:ci>
                      </m:apply>
                      <m:apply>                
			<m:exp/>
			<m:apply>
			  <m:times/>
			  <m:apply>
			    <m:minus/>
			    <m:imaginaryi/>
			  </m:apply>
			  <m:apply>
			    <m:divide/>
			    <m:apply>
			      <m:times/>
			      <m:cn>2</m:cn>
			      <m:pi/>
			    </m:apply>
			    <m:ci>M</m:ci>
			  </m:apply>
			  <m:ci>k</m:ci>
			</m:apply>
                      </m:apply>
		    </m:apply> 
		  </m:apply>
		</m:apply>
	      </m:math>
	    </equation>
	    
	    <m:math display="block">
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:ci type="fn">X</m:ci>
		  <m:apply>
		    <m:exp/>
		    <m:apply>
		      <m:times/>
		      <m:imaginaryi/>
		      <m:apply>
			<m:divide/>
			<m:apply>
			  <m:times/>
			  <m:cn>2</m:cn>
			  <m:pi/>
			</m:apply>
			<m:ci>M</m:ci>
		      </m:apply>
		      <m:ci>k</m:ci>
		    </m:apply>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:sum/>
		  <m:bvar><m:ci>n</m:ci></m:bvar>
		  <m:lowlimit><m:cn>0</m:cn></m:lowlimit>
		  <m:uplimit>
		    <m:apply>
		      <m:minus/>
		      <m:ci>N</m:ci>
		      <m:cn>1</m:cn>
		    </m:apply>
		  </m:uplimit>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:ci type="fn" class="discrete">
			<m:msub>
			  <m:mi>x</m:mi>
			  <m:mi>zp</m:mi>
			</m:msub>
		      </m:ci>
		      <m:ci>n</m:ci>
		    </m:apply>
		    <m:apply>                
		      <m:exp/>
		      <m:apply>
			<m:times/>
			<m:apply>
			  <m:minus/>
			  <m:imaginaryi/>
			</m:apply>
			<m:apply>
			  <m:divide/>
			  <m:apply>
			    <m:times/>
			    <m:cn>2</m:cn>
			    <m:pi/>
			  </m:apply>
			  <m:ci>M</m:ci>
			</m:apply>
			<m:ci>k</m:ci>
		      </m:apply>
		    </m:apply>
		  </m:apply> 
		</m:apply>
	      </m:apply>
	    </m:math>

	    <m:math display="block">
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:ci type="fn">X</m:ci>
		  <m:apply>
		    <m:exp/>
		    <m:apply>
		      <m:times/>
		      <m:imaginaryi/>
		      <m:apply>
			<m:divide/>
			<m:apply>
			  <m:times/>
			  <m:cn>2</m:cn>
			  <m:pi/>
			</m:apply>
			<m:ci>M</m:ci>
		      </m:apply>
		      <m:ci>k</m:ci>
		    </m:apply>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:ci type="fn" class="discrete">
		    <m:msub>
		      <m:mi>X</m:mi>
		      <m:mi>zp</m:mi>
		    </m:msub>
		  </m:ci>
		  <m:ci>k</m:ci>
		</m:apply>              
	      </m:apply>
	      <m:apply>
		<m:forall/>
		<m:bvar>
		  <m:ci>k</m:ci>
		</m:bvar>
		<m:condition>
		  <m:apply>
		    <m:eq/>
		    <m:ci>k</m:ci>
		    <m:set>
		      <m:cn>0</m:cn>
		      <m:mo>…</m:mo>
		      <m:apply>
			<m:minus/>
			<m:ci>M</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:set>
		  </m:apply>
		</m:condition>
	      </m:apply>
	    </m:math>
	  </item>


	  <item>
	    The <m:math><m:ci>N</m:ci></m:math>-pt DFT is sufficient
	    to reconstruct the entire DTFT of an
	    <m:math><m:ci>N</m:ci></m:math>-pt sequence:

	    <equation id="eq04">
	      <m:math>
		<m:apply>
		  <m:eq/>
		  <m:apply>
		    <m:ci type="fn">X</m:ci>
		    <m:apply>
		      <m:exp/>
		      <m:apply>
			<m:times/>
                        <m:imaginaryi/>
                        <m:ci>ω</m:ci>
		      </m:apply>
		    </m:apply>
		  </m:apply>

		  <m:apply>
		    <m:sum/>
		    <m:bvar>
		      <m:ci>n</m:ci>
		    </m:bvar>
		    <m:lowlimit>
		      <m:cn>0</m:cn>
		    </m:lowlimit>
		    <m:uplimit>
		      <m:apply>
			<m:minus/>
                        <m:ci>N</m:ci>
                        <m:cn>1</m:cn>
		      </m:apply>
		    </m:uplimit>
		    <m:apply>
		      <m:times/>
                      <m:apply>
                        <m:ci type="fn" class="discrete">x</m:ci>
                        <m:ci>n</m:ci>
                      </m:apply>
                      <m:apply>                
                        <m:exp/>
			<m:apply>
			  <m:times/>
			  <m:apply>
			    <m:minus/>
			    <m:imaginaryi/>
			  </m:apply>
			  <m:ci>ω</m:ci>
			  <m:ci>n</m:ci>
			</m:apply>
                      </m:apply>
		    </m:apply> 
		  </m:apply>
		</m:apply>
	      </m:math>
	    </equation>

	    <m:math display="block">
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:ci type="fn">X</m:ci>
		  <m:apply>
		    <m:exp/>
		    <m:apply>
		      <m:times/>
		      <m:imaginaryi/>
		      <m:ci>ω</m:ci>
		    </m:apply>
		  </m:apply>
		</m:apply>

		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:sum/>
		    <m:bvar><m:ci>n</m:ci></m:bvar>
		    <m:lowlimit><m:cn>0</m:cn></m:lowlimit>
		    <m:uplimit>
		      <m:apply>
			<m:minus/>
			<m:ci>N</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:uplimit>
		    <m:apply>
		      <m:divide/>
		      <m:cn>1</m:cn>
		      <m:ci>N</m:ci>
		    </m:apply> 
		  </m:apply>
		  <m:apply>
		    <m:sum/>
		    <m:bvar><m:ci>k</m:ci></m:bvar>
		    <m:lowlimit><m:cn>0</m:cn></m:lowlimit>
		    <m:uplimit>
		      <m:apply>
			<m:minus/>
			<m:ci>N</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:uplimit>
		    <m:apply>
		      <m:times/>
		      <m:apply>
			<m:ci type="fn" class="discrete">X</m:ci>
			<m:ci>k</m:ci>
		      </m:apply>
		      <m:apply>
			<m:exp/>
			<m:apply>
			  <m:times/>
			  <m:imaginaryi/>
			  <m:apply>
			    <m:divide/>
			    <m:apply>
			      <m:times/>
			      <m:cn>2</m:cn>
			      <m:pi/>
			    </m:apply>
			    <m:ci>N</m:ci>
			  </m:apply>
			  <m:ci>k</m:ci>
			  <m:ci>n</m:ci>
			</m:apply>
		      </m:apply>
		      <m:apply>
			<m:exp/>
			<m:apply>
			  <m:times/>
			  <m:apply>
			    <m:minus/>
			    <m:imaginaryi/>
			  </m:apply>
			  <m:ci>ω</m:ci>
			  <m:ci>n</m:ci>
			</m:apply>
		      </m:apply>
		    </m:apply> 
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>

	    <m:math display="block">
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:ci type="fn">X</m:ci>
		  <m:apply>
		    <m:exp/>
		    <m:apply>
		      <m:times/>
		      <m:imaginaryi/>
		      <m:ci>ω</m:ci>
		    </m:apply>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:sum/>
		    <m:bvar><m:ci>k</m:ci></m:bvar>
		    <m:lowlimit><m:cn>0</m:cn></m:lowlimit>
		    <m:uplimit>
		      <m:apply>
			<m:minus/>
			<m:ci>N</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:uplimit>
		    <m:apply>
		      <m:ci type="fn" class="discrete">X</m:ci>
		      <m:ci>k</m:ci>
		    </m:apply>
		  </m:apply>
		  <m:apply>
		    <m:divide/>
		    <m:cn>1</m:cn>
		    <m:ci>N</m:ci>
		  </m:apply>
		  <m:apply>
		    <m:sum/>
		    <m:bvar><m:ci>k</m:ci></m:bvar>
		    <m:lowlimit><m:cn>0</m:cn></m:lowlimit>
		    <m:uplimit>
		      <m:apply>
			<m:minus/>
			<m:ci>N</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:uplimit>
		    <m:apply>
		      <m:exp/>
		      <m:apply>
			<m:times/>
			<m:apply>
			  <m:minus/>
			  <m:imaginaryi/>
			</m:apply>
			<m:apply>
			  <m:minus/>
			  <m:ci>ω</m:ci>
			  <m:apply>
			    <m:times/>
			    <m:apply>
			      <m:divide/>
			      <m:apply>
				<m:times/>
				<m:cn>2</m:cn>
				<m:pi/>
			      </m:apply>
			      <m:ci>N</m:ci>
			    </m:apply>
			    <m:ci>k</m:ci>
			  </m:apply>
			</m:apply>
			<m:ci>n</m:ci>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>

	    <m:math display="block">
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:ci type="fn">X</m:ci>
		  <m:apply>
		    <m:exp/>
		    <m:apply>
		      <m:times/>
		      <m:imaginaryi/>
		      <m:ci>ω</m:ci>
		    </m:apply>
		  </m:apply>
		</m:apply>

		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:sum/>
		    <m:bvar><m:ci>k</m:ci></m:bvar>
		    <m:lowlimit><m:cn>0</m:cn></m:lowlimit>
		    <m:uplimit>
		      <m:apply>
			<m:minus/>
			<m:ci>N</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:uplimit>
		    <m:apply>
		      <m:ci type="fn" class="discrete">X</m:ci>
		      <m:ci>k</m:ci>
		    </m:apply>
		  </m:apply>
		  <m:apply>
		    <m:divide/>
		    <m:cn>1</m:cn>
		    <m:ci>N</m:ci>
		  </m:apply>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:divide/>
		      <m:apply>
			<m:sin/>
			<m:apply>
			  <m:divide/>
			  <m:apply>
			    <m:minus/>
			    <m:apply>
			      <m:times/>
			      <m:ci>ω</m:ci>
			      <m:ci>N</m:ci>
			    </m:apply>
			    <m:apply>
			      <m:times/>
			      <m:cn>2</m:cn>
			      <m:pi/>
			      <m:ci>k</m:ci>
			    </m:apply>
			  </m:apply>
			  <m:cn>2</m:cn>
			</m:apply>
		      </m:apply>
		      <m:apply>
			<m:sin/>
			<m:apply>
			  <m:divide/>
			  <m:apply>
			    <m:minus/>
			    <m:apply>
			      <m:times/>
			      <m:ci>ω</m:ci>
			      <m:ci>N</m:ci>
			    </m:apply>
			    <m:apply>
			      <m:times/>
			      <m:cn>2</m:cn>
			      <m:pi/>
			      <m:ci>k</m:ci>
			    </m:apply>
			  </m:apply>
			  <m:apply>
			    <m:times/>
			    <m:cn>2</m:cn>
			    <m:ci>N</m:ci>
			  </m:apply>
			</m:apply>
		      </m:apply>
		    </m:apply>
		    <m:apply>
		      <m:exp/>
		      <m:apply>
			<m:times/>
			<m:apply>
			  <m:minus/>
			  <m:imaginaryi/>
			</m:apply>
			<m:apply>
			  <m:minus/>
			  <m:ci>ω</m:ci>
			  <m:apply>
			    <m:times/>
			    <m:apply>
			      <m:divide/>
			      <m:apply>
				<m:times/>
				<m:cn>2</m:cn>
				<m:pi/>
			      </m:apply>
			      <m:ci>N</m:ci>
			    </m:apply>
			    <m:ci>k</m:ci>
			  </m:apply>
			</m:apply>
			<m:apply>
			  <m:divide/>
			  <m:apply>
			    <m:minus/>
			    <m:ci>N</m:ci>
			    <m:cn>1</m:cn>
			  </m:apply>
			  <m:cn>2</m:cn>
			</m:apply>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>
	  </item>
	</list>
      </para>


      <figure id="fig1">
	<media type="image/png" src="dirichletsinc.png"/>
	<caption> 
	  Dirichlet sinc, 
	  <m:math>
	    <m:apply>
	      <m:times/>
	      <m:apply>
		<m:divide/>
		<m:cn>1</m:cn>
		<m:ci>N</m:ci>
	      </m:apply>   
	      <m:apply>
		<m:divide/>
		<m:apply>
		  <m:sin/>
                  <m:apply>
                    <m:divide/>
		    <m:apply>
		      <m:times/>
		      <m:ci>ω</m:ci>
		      <m:ci>N</m:ci>
		    </m:apply>
		    <m:cn>2</m:cn>
                  </m:apply>
		</m:apply>
		<m:apply>
		  <m:sin/>
                  <m:apply>
                    <m:divide/>
		    <m:ci>ω</m:ci>
		    <m:cn>2</m:cn>
                  </m:apply>
		</m:apply>
	      </m:apply>      
	    </m:apply>
	  </m:math>
	</caption>
      </figure>


      <para id="sec1para3">
	<list id="observations_contd">
	  <item>
	    The DFT has a convenient matrix representation.  Defining

	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:ci>
		  <m:msub>
		    <m:mi>W</m:mi>
		    <m:mi>N</m:mi>
		  </m:msub>
		</m:ci>
		<m:apply>
		  <m:exp/>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:minus/>
		      <m:imaginaryi/>
		    </m:apply>
		    <m:apply>
		      <m:divide/>
		      <m:apply>
			<m:times/>
			<m:cn>2</m:cn>
			<m:pi/>
		      </m:apply>
		      <m:ci>N</m:ci>
		    </m:apply>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>, 

	    <equation id="eq05">
	      <m:math>
		<m:apply>
		  <m:eq/>
		  <m:matrix>
		    <m:matrixrow>
		      <m:apply>
			<m:ci type="fn" class="discrete">X</m:ci>
			<m:cn>0</m:cn>
		      </m:apply>
		    </m:matrixrow>
		    <m:matrixrow>
		      <m:apply>
			<m:ci type="fn" class="discrete">X</m:ci>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:matrixrow>
		    <m:matrixrow>
		      <m:mo>⋮</m:mo>
		    </m:matrixrow>
		    <m:matrixrow>
		      <m:apply>
			<m:ci type="fn" class="discrete">X</m:ci>
			<m:apply>
			  <m:minus/>
			  <m:ci>N</m:ci>
			  <m:cn>1</m:cn>
			</m:apply>
		      </m:apply>
		    </m:matrixrow>
		  </m:matrix>

		  <m:apply>
		    <m:times/>
		    <m:matrix>
		      <m:matrixrow>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>0</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>0</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>0</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>0</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:mo>…</m:mo>
		      </m:matrixrow>

		      <m:matrixrow>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>0</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>1</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>2</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>3</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:mo>…</m:mo>
		      </m:matrixrow>

		      <m:matrixrow>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>0</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>2</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>4</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mi>N</m:mi>
			    <m:mn>6</m:mn>
			  </m:msubsup>
			</m:ci>
			<m:ci>…</m:ci>
		      </m:matrixrow>  

		      <m:matrixrow>
			<m:ci>⋮</m:ci>
			<m:ci>⋮</m:ci>
			<m:ci>⋮</m:ci>
			<m:ci>⋮</m:ci>
			<m:ci>⋮</m:ci>
		      </m:matrixrow>                 
		    </m:matrix>

		    <m:matrix>
		      <m:matrixrow>
			<m:apply>
			  <m:ci type="fn" class="discrete">x</m:ci>
			  <m:cn>0</m:cn>
			</m:apply>
		      </m:matrixrow>
		      <m:matrixrow>
			<m:apply>
			  <m:ci type="fn" class="discrete">x</m:ci>
			  <m:cn>1</m:cn>
			</m:apply>
		      </m:matrixrow>
		      <m:matrixrow>
			<m:ci>⋮</m:ci>
		      </m:matrixrow>
		      <m:matrixrow>
			<m:apply>
			  <m:ci type="fn" class="discrete">x</m:ci>
			  <m:apply>
			    <m:minus/>
                            <m:ci>N</m:ci>
                            <m:cn>1</m:cn>
			  </m:apply>
			</m:apply>
		      </m:matrixrow>        
		    </m:matrix>
		  </m:apply>
		</m:apply>
	      </m:math>
	    </equation>

	    where 

	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:ci>X</m:ci>
		<m:apply>
		  <m:ci type="fn">W</m:ci>
		  <m:ci>x</m:ci>
		</m:apply>
	      </m:apply>
	    </m:math> respectively.  <m:math><m:ci>W</m:ci></m:math>
	    has the following properties:

	    <list id="properties_of_W">
	      <item>
		<m:math><m:ci>W</m:ci></m:math> is Vandermonde: the
		<m:math><m:ci>n</m:ci></m:math>th column of
		<m:math><m:ci>W</m:ci></m:math> is a polynomial in
		<m:math>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mi>N</m:mi>
		      <m:mi>n</m:mi>
		    </m:msubsup>
		  </m:ci>
		</m:math>
	      </item>

	      <item>
		<m:math><m:ci>W</m:ci></m:math> is symmetric:
		<m:math>
		  <m:apply>
		    <m:eq/>
		    <m:ci>W</m:ci>
		    <m:apply>
		      <m:transpose/>
		      <m:ci>W</m:ci>
		    </m:apply>
		  </m:apply>
		</m:math>
	      </item>

	      <item>
		<m:math>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:divide/>
		      <m:cn>1</m:cn>
		      <m:apply>
			<m:root/>
                        <m:ci>N</m:ci>
		      </m:apply>                     
		    </m:apply>
		    <m:ci>W</m:ci>
		  </m:apply>
		</m:math>
		
		is unitary:
		
		<m:math>
		  <m:apply>
		    <m:eq/>
		    <m:apply>
		      <m:times/>
		      <m:apply>
			<m:times/>
			<m:apply>
			  <m:divide/>
			  <m:cn>1</m:cn>
			  <m:apply>
			    <m:root/>
			    <m:ci>N</m:ci>
			  </m:apply>                     
			</m:apply>
			<m:ci>W</m:ci>
		      </m:apply>
		      <m:apply>
			<m:power/>
			<m:apply>
			  <m:times/>
			  <m:apply>
			    <m:divide/>
			    <m:cn>1</m:cn>
			    <m:apply>
			      <m:root/>
			      <m:ci>N</m:ci>
			    </m:apply>                     
			  </m:apply>
			  <m:ci>W</m:ci>
			</m:apply>
                        <m:ci>H</m:ci>
		      </m:apply>
		    </m:apply>
		    <m:apply>
		      <m:times/>
		      <m:apply>
			<m:power/>
			<m:apply>
			  <m:times/>
			  <m:apply>
			    <m:divide/>
			    <m:cn>1</m:cn>
			    <m:apply>
			      <m:root/>
			      <m:ci>N</m:ci>
			    </m:apply>                     
			  </m:apply>
			  <m:ci>W</m:ci>
			</m:apply>
                        <m:ci>H</m:ci>
		      </m:apply>
		      <m:apply>
			<m:times/>
			<m:apply>
			  <m:divide/>
			  <m:cn>1</m:cn>
			  <m:apply>
			    <m:root/>
			    <m:ci>N</m:ci>
			  </m:apply>                     
			</m:apply>
			<m:ci>W</m:ci>
		      </m:apply>
		    </m:apply>
		    <m:ci>I</m:ci>
		  </m:apply>
		</m:math>
	      </item>

	      <item>
		<m:math>
		  <m:apply>
		    <m:eq/>
		    <m:apply>
		      <m:times/>
		      <m:apply>
			<m:divide/>
                        <m:cn>1</m:cn>
                        <m:ci>N</m:ci>
		      </m:apply>
		      <m:apply>
			<m:conjugate/>
                        <m:ci>W</m:ci>
		      </m:apply>
		    </m:apply>
		    <m:apply>
		      <m:power/>
		      <m:ci>W</m:ci>
		      <m:cn>-1</m:cn>
		    </m:apply>
		  </m:apply>
		</m:math>, the IDFT matrix.
	      </item>
	    </list>
	  </item>

	  <item>
	    For <m:math><m:ci>N</m:ci></m:math> a power of 2, the FFT
	    can be used to compute the DFT using about
	    <m:math>
	      <m:apply>
		<m:times/>
		<m:apply>
		  <m:divide/>
		  <m:ci>N</m:ci>
		  <m:cn>2</m:cn>
		</m:apply>
		<m:apply>
		  <m:log/>
		  <m:logbase><m:cn>2</m:cn></m:logbase>
		  <m:ci>N</m:ci>
		</m:apply>
	      </m:apply>
	    </m:math> rather than 
	    
	    <m:math>
	      <m:apply>
		<m:power/>
		<m:ci>N</m:ci>
		<m:cn>2</m:cn>
	      </m:apply>
	    </m:math> operations.
	  </item>
	</list>
      </para>
      
      <table id="computations">
	<tgroup cols="3">
	  <thead>
	    <row>
	      <entry align="center">
		<m:math>
		  <m:ci>N</m:ci>
		</m:math>
	      </entry>
	      <entry align="center">
		<m:math>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:divide/>
		      <m:ci>N</m:ci>
		      <m:cn>2</m:cn>
		    </m:apply>
		    <m:apply>
		      <m:log/>
		      <m:logbase><m:cn>2</m:cn></m:logbase>
		      <m:ci>N</m:ci>
		    </m:apply>
		  </m:apply>
		</m:math>
	      </entry>
	      <entry align="center">
		<m:math>
		  <m:apply>
		    <m:power/>
		    <m:ci>N</m:ci>
		    <m:cn>2</m:cn>
		  </m:apply>
		</m:math>
	      </entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry align="center">16</entry>
	      <entry align="center">32</entry>
	      <entry align="center">256</entry>
	    </row>
	    <row>
	      <entry align="center">64</entry>
	      <entry align="center">192</entry>
	      <entry align="center">4096</entry>
	    </row>
	    <row>
	      <entry align="center">256</entry>
	      <entry align="center">1024</entry>
	      <entry align="center">65536</entry>
	    </row>
	    <row>
	      <entry align="center">1024</entry>
	      <entry align="center">5120</entry>
	      <entry align="center">1048576</entry>
	    </row>
	  </tbody>
	</tgroup>
      </table>
    </section>
  </content>
</document>
