<?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:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="None">
  <name>Why Eigenstuff Matters in DSP</name>
  <metadata>
  <md:version>1.1</md:version>
  <md:created>2004/06/10 10:38:31 GMT-5</md:created>
  <md:revised>2004/07/06 10:48:07.515 GMT-5</md:revised>
  <md:authorlist>
      <md:author id="richb">
      <md:firstname>Richard</md:firstname>
      <md:othername>G.</md:othername>
      <md:surname>Baraniuk</md:surname>
      <md:email>richb@rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="richb">
      <md:firstname>Richard</md:firstname>
      <md:othername>G.</md:othername>
      <md:surname>Baraniuk</md:surname>
      <md:email>richb@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="ahlfing">
      <md:firstname>Robert</md:firstname>
      
      <md:surname>Ahlfinger</md:surname>
      <md:email>ahlfing@rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist>
    <md:keyword>DSP</md:keyword>
    <md:keyword>Eig</md:keyword>
  </md:keywordlist>

  <md:abstract>An explaination as to why eigenstuff matters in DSP</md:abstract>
</metadata>

  <content>
    <para id="para1">Consider processing a signal
      <m:math>
	<m:apply>
	  <m:in/>
	  <m:ci type="vector">x</m:ci>
	  <m:apply>
	    <m:power/>
	    <m:complexes/>
	    <m:ci>N</m:ci>
	  </m:apply>
	</m:apply>
      </m:math> with system represented by a normal matrix
      <m:math>
	<m:ci type="matrix">A</m:ci>
      </m:math>
    </para>
    <figure id="fig1">
      <media type="image/png" src="fig1.png"/>
    </figure>
    <para id="para2">
      <equation id="eq1">
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:ci type="vector">y</m:ci>
	    <m:apply>
	      <m:times/>
	      <m:ci type="matrix">A</m:ci>
	      <m:ci type="vector">x</m:ci>
	    </m:apply>
	  </m:apply>
	</m:math>
      </equation>
      <list id="lis">
	<item>matrix multiply</item>
	<item>
	  <equation id="eq2">
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:ci type="fn" class="discrete">y</m:ci>
		  <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:cn/>
		</m:apply>
	      </m:apply>
	    </m:math>
	  </equation>
	  where each
	  <m:math>
	    <m:apply>
	      <m:ci type="fn" class="discrete">y</m:ci>
	      <m:ci>n</m:ci>
	    </m:apply>
	  </m:math> involves coupling all 
	  <m:math>
	    <m:apply>
	      <m:ci type="fn" class="discrete">x</m:ci>
	      <m:ci>k</m:ci>
	    </m:apply>
	  </m:math> via
	  <m:math>
	    <m:ci type="matrix">
	      <m:msub>
		<m:mi>A</m:mi>
		<m:mrow>
		  <m:mi>n</m:mi>
		  <m:mo>,</m:mo>
		  <m:mi>k</m:mi>
		</m:mrow>
	      </m:msub>
	    </m:ci>
	  </m:math>
	</item>
	<item>
	  cost:
	  <m:math>
	    <m:apply>
	      <m:ci type="fn">O</m:ci>
	      <m:apply>
		<m:power/>
		<m:ci>N</m:ci>
		<m:cn>2</m:cn>
	      </m:apply>
	    </m:apply>
	  </m:math> in general
	</item>
	<item>one-step procedure</item>
      </list>
    </para>
    <para id="para3">Now consider representation
      <equation id="eq3">
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:ci type="matrix">A</m:ci>
	    <m:apply>
	      <m:times/>
	      <m:ci type="matrix">V</m:ci>
	      <m:ci type="matrix">Λ</m:ci>
	      <m:apply>
		<m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#adjoint"/> 
		<m:ci type="matrix">V</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
      </equation>This is implemented by a three-step procedure:
      <equation id="eq4">
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:ci type="vector">y</m:ci>
	    <m:apply>
	      <m:times/>
	      <m:ci type="matrix">A</m:ci>
	      <m:ci type="vector">x</m:ci>
	    </m:apply>
	    <m:apply>
	      <m:times/>
	      <m:ci type="matrix">V</m:ci>
	      <m:ci type="matrix">Λ</m:ci>
	      <m:apply>
		<m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#adjoint"/> 
		<m:ci type="matrix">V</m:ci>
	      </m:apply>
	      <m:ci type="vector">x</m:ci>
	    </m:apply>
	  </m:apply>
	</m:math>
      </equation>
      <list id="lis2" type="enumerated">
	<item>

	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:ci type="vector">α</m:ci>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#adjoint"/> 
		    <m:ci type="matrix">V</m:ci>
		  </m:apply>
		  <m:ci type="vector">x</m:ci>
		</m:apply>
	      </m:apply>
	    </m:math>
	  This computes the coefficients
	  <m:math>
	    <m:ci type="vector">α</m:ci>
	  </m:math> that build up
	  <m:math>
	    <m:ci type="vector">x</m:ci>
	  </m:math> in terms of eigenbasis 
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>v</m:mi>
		<m:mi>i</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math>:
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci type="vector">x</m:ci>
	      <m:apply>
		<m:times/>
		<m:ci type="matrix">V</m:ci>
		<m:ci type="vector">α</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:math> (ie: 
	  <m:math>
	    <m:apply>
	      <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#adjoint"/> 
	      <m:ci type="matrix">V</m:ci>
	    </m:apply>
	  </m:math> takes
	  <m:math>
	    <m:ci type="vector">x</m:ci> </m:math> from the
	  "time-domain" to the "eigenbasis domain".
	</item>
	<item>
	  <m:math>
	    <m:apply>
	      <m:times/>
	      <m:ci type="matrix">Λ</m:ci>
	      <m:ci type="vector">α</m:ci>
	    </m:apply>
	  </m:math>  with
	  <m:math>
	    <m:ci type="matrix">Λ</m:ci>
	  </m:math> a <emphasis>diagonal</emphasis> matrix
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci type="matrix">Λ</m:ci>
	      <m:matrix>
		<m:matrixrow>
		  <m:ci>
		    <m:msub>
		      <m:mi>λ</m:mi>
		      <m:mn>0</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		</m:matrixrow>
		<m:matrixrow>
		  <m:cn>0</m:cn>
		  <m:ci>
		    <m:msub>
		      <m:mi>λ</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		</m:matrixrow>
		<m:matrixrow>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		  <m:ci>
		    <m:msub>
		      <m:mi>...</m:mi>
		      <m:ci>...</m:ci>
		    </m:msub>
		  </m:ci>
		  <m:cn>0</m:cn>
		</m:matrixrow>
		<m:matrixrow>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		  <m:ci>...</m:ci>
		  <m:ci>
		    <m:msub>
		      <m:mi>λ</m:mi>
		      <m:mrow>
			<m:mi>N</m:mi>
			<m:mo>-</m:mo>
			<m:mn>1</m:mn>
		      </m:mrow>
		    </m:msub>
		  </m:ci>
		</m:matrixrow>
	      </m:matrix>
	    </m:apply>
	  </m:math> ie: we just do element-wise multiplication
	  <m:math>
	    <m:apply>
	      <m:times/>
	      <m:ci>
		<m:msub>
		  <m:mi>λ</m:mi>
		  <m:mi>i</m:mi>
		</m:msub>
	      </m:ci>
	      <m:ci>
		<m:msub>
		  <m:mi>α</m:mi>
		  <m:mi>i</m:mi>
		</m:msub>
	      </m:ci>
	    </m:apply>
	  </m:math> (super easy and no <emphasis>coupling</emphasis>
	  between
	  <m:math>
	    <m:ci>
	      <m:msub>
		<m:mi>α</m:mi>
		<m:mi>i</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math>'s)
	</item>
	<item>
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:times/>
		<m:ci type="matrix">V</m:ci>
		  <m:apply>
		  <m:times/>
		  <m:ci type="vector">Λ</m:ci>
		  <m:ci type="vector">α</m:ci>
		</m:apply>
	      </m:apply>
	      <m:ci type="vector">y</m:ci>
	    </m:apply>
	  </m:math>
	  takes the vector
	  <m:math>
	    <m:apply>
	      <m:times/>
	      <m:ci type="vector">Λ</m:ci>
	      <m:ci type="vector">α</m:ci>
	    </m:apply>
	  </m:math> back to the time-domain.
	</item>
      </list>
      <list id="lis3">
	<name>Hallmarks</name>
	<item>Once we transform 
	  <m:math>
	    <m:ci type="vector">x</m:ci> </m:math> to the eigenbasis
	  domain of
	  <m:math>
	    <m:ci type="matrix">A</m:ci> </m:math>, we can perform an
	  operation equivalent to
	  <m:math>
	    <m:ci type="matrix">A</m:ci> </m:math> but
	  <emphasis>independently</emphasis> on each
	  <m:math>
	    <m:ci>
	      <m:msub>
		<m:mi>α</m:mi>
		<m:mi>i</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math>.
	</item>
	<item>This works for <emphasis>any</emphasis> normal matrix
	  <m:math>
	    <m:ci type="matrix">A</m:ci>
	  </m:math>.
	</item>
	<item>Most of the systems studied in DSP are "linear
	shift-invariant":
	  <list id="sublis1">
	    <item>all correspond to normal matrices</item>
	    <item>all share <emphasis>the same</emphasis>
	      <m:math>
		<m:ci>V</m:ci>
	      </m:math>: <emphasis>DFT basis</emphasis>
	    </item>
	  </list>
	</item>
      </list>
      All LSI processing
      <m:math>
	<m:apply>
	  <m:eq/>
	  <m:ci type="vector">y</m:ci>
	  <m:apply>
	    <m:times/>
	    <m:ci type="matrix">A</m:ci>
	    <m:ci type="vector">x</m:ci>
	  </m:apply>
	</m:apply>
      </m:math> can be done through:
      <list id="lis4" type="enumerated">
	<item>
	  
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:ci type="vector">α</m:ci>
		<m:apply>
		  <m:ci type="fn">fft</m:ci>
		  <m:ci type="vector">x</m:ci>
		</m:apply>
	      </m:apply>
	    </m:math>
	  
	</item>
	<item>
	  <m:math>
	      <m:apply>
		<m:eq/>
		<m:ci type="vector">
		  <m:mover accent="true">
		    <m:mi>α</m:mi>
		    <m:mi>~</m:mi>
		  </m:mover>
		</m:ci>
		<m:apply>
		  <m:times/>
		  <m:ci type="vector">λ</m:ci>
		  <m:ci type="vector">α</m:ci>
		</m:apply>
	      </m:apply>
	    </m:math>
	   where 
	  <m:math>
	    <m:ci type="vector">λ</m:ci>
	  </m:math>is diagonal of eigen matrix
	  <m:math>
	    <m:ci type="matrix">Λ</m:ci>
	  </m:math>
	</item>
	<item>
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci type="vector">y</m:ci>
	      <m:apply>
		<m:ci type="fn">ifft</m:ci>
		<m:ci type="vector">
		  <m:mover accent="true">
		    <m:mi>α</m:mi>
		    <m:mi>~</m:mi>
		  </m:mover>
		  </m:ci>
	      </m:apply>
	    </m:apply>
	  </m:math>
	  
	</item>
      </list>The Cost:
      <list id="lis5" type="namedlist">
	<item><name>Step 1</name>	  
	  <m:math>
	    <m:apply>
	      <m:ci type="fn">O</m:ci>
	      <m:apply>
		<m:times/>
		<m:ci>N</m:ci>
		<m:apply>
		  <m:log/>
		  <m:ci>N</m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</item>
	<item><name>Step 2</name>
	  <m:math>
	    <m:apply>
	      <m:ci type="fn">O</m:ci>
	      <m:apply>
		<m:ci>N</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</item>
	<item><name>Step 3</name>
	  <m:math>
	    <m:apply>
	      <m:ci type="fn">O</m:ci>
	      <m:apply>
		<m:times/>
		<m:ci>N</m:ci>
		<m:apply>
		  <m:log/>
		  <m:ci>N</m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</item>
	<item><name>total</name>
	  <m:math>
	    <m:apply>
	      <m:ci type="fn">O</m:ci>
	      <m:apply>
		<m:times/>
		<m:ci>N</m:ci>
		<m:apply>
		  <m:log/>
		  <m:ci>N</m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</item>

      </list>
      <equation id="eq10">
	<m:math>
	  <m:apply>
	    <m:gt/>
	    <m:apply>
	      <m:ci type="fn">O</m:ci>
	      <m:apply>
		<m:times/>
		<m:ci>N</m:ci>
		<m:apply>
		  <m:log/>
		  <m:ci>N</m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	    <m:apply>
	      <m:ci type="fn">O</m:ci>
	      <m:apply>
		<m:power/>
		<m:ci>N</m:ci>
		<m:cn>2</m:cn>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
      </equation>ie: It is faster/more efficient than
      <m:math>
	<m:apply>
	  <m:eq/>
	  <m:ci type="vector">y</m:ci>
	  <m:apply>
	    <m:times/>
	    <m:ci type="matrix">A</m:ci>
	    <m:ci type="vector">x</m:ci>
	  </m:apply>
	</m:apply>
      </m:math> directly!!!
    </para>
    <section id="sec1">
      <name>Useful Formulas</name>
      <para id="sec1p1">
	<equation id="eq11">
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci type="matrix">A</m:ci>
	      <m:apply>
		<m:times/>
		<m:ci type="matrix">V</m:ci>
		<m:ci type="matrix">Λ</m:ci>
	      	<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#adjoint"/>
		    <m:ci type="matrix">V</m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:times/>
		<m:matrix>
		  <m:matrixrow>
		  <m:ci type="vector">
		    <m:msub>
		      <m:mi>v</m:mi>
		      <m:mn>0</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:ci type="vector">
		    <m:msub>
		      <m:mi>v</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		    </m:ci>
		  <m:ci type="vector">
		    <m:msub>
		      <m:mi>v</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		    </m:ci>
		    <m:ci>...</m:ci>
		  <m:ci type="vector">
		    <m:msub>
		      <m:mi>v</m:mi>
		      <m:mrow>
			  <m:mi>N</m:mi>
			  <m:mo>-</m:mo>
			  <m:mn>1</m:mn>
		      </m:mrow>
		    </m:msub>
		  </m:ci>
		</m:matrixrow>
		</m:matrix>
		<m:matrix>
		<m:matrixrow>
		  <m:ci>
		    <m:msub>
		      <m:mi>λ</m:mi>
		      <m:mn>0</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		</m:matrixrow>
		<m:matrixrow>
		  <m:cn>0</m:cn>
		  <m:ci>
		    <m:msub>
		      <m:mi>λ</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		</m:matrixrow>
		<m:matrixrow>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		  <m:ci>
		    <m:msub>
		      <m:mi>...</m:mi>
		      <m:ci>...</m:ci>
		    </m:msub>
		  </m:ci>
		  <m:cn>0</m:cn>
		</m:matrixrow>
		<m:matrixrow>
		  <m:cn>0</m:cn>
		  <m:cn>0</m:cn>
		  <m:ci>...</m:ci>
		  <m:ci>
		    <m:msub>
		      <m:mi>λ</m:mi>
		      <m:mrow>
			  <m:mi>N</m:mi>
			  <m:mo>-</m:mo>
			  <m:mn>1</m:mn>
		      </m:mrow>
		    </m:msub>
		  </m:ci>
		</m:matrixrow>
		</m:matrix>
		<m:matrix>
		  <m:matrixrow>
		  <m:ci type="vector">
		    <m:msub>
	      	<m:apply>
		<m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#adjoint"/> 
		<m:ci type="matrix">V</m:ci>
		</m:apply>
		      <m:mn>0</m:mn>
		    </m:msub>
		  </m:ci>
		</m:matrixrow>
		<m:matrixrow>
		  <m:ci type="vector">
		    <m:msub>
	      	<m:apply>
		<m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#adjoint"/> 
		<m:ci type="matrix">V</m:ci>
		</m:apply>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		</m:matrixrow>
		<m:matrixrow>
		  <m:ci type="vector">
		    <m:msub>
	      	<m:apply>
		<m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#adjoint"/> 
		<m:ci type="matrix">V</m:ci>
		</m:apply>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		</m:matrixrow>
		  <m:matrixrow>
		    <m:ci>...</m:ci>
		  </m:matrixrow>
		<m:matrixrow>
		  <m:ci type="vector">
		    <m:msub>
	      	<m:apply>
		<m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#adjoint"/> 
		<m:ci type="matrix">V</m:ci>
		</m:apply>
			<m:mrow>
			  <m:mi>N</m:mi>
			  <m:mo>-</m:mo>
			  <m:mn>1</m:mn>
			</m:mrow>
		      </m:msub>
		    </m:ci>
		  </m:matrixrow>
		</m:matrix>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</equation>
      </para>
    </section>
  </content>
 
</document>
