<?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="new8">
  <name>Introduction to Adaptive Filtering</name>
  <metadata>
  <md:version>1.5</md:version>
  <md:created>2003/06/25 11:49:51 GMT-5</md:created>
  <md:revised>2003/08/11 15:46:14.460 GMT-5</md:revised>
  <md:authorlist>
    <md:author id="nowak">
      <md:firstname>Rob</md:firstname>
      <md:othername>"The Kid"</md:othername>
      <md:surname>Nowak</md:surname>
      <md:email>nowak@rice.edu</md:email>
    </md:author>
    <md:author id="cscott">
      <md:firstname>Clayton</md:firstname>
      
      <md:surname>Scott</md:surname>
      <md:email>cscott@rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="nowak">
      <md:firstname>Rob</md:firstname>
      <md:othername>"The Kid"</md:othername>
      <md:surname>Nowak</md:surname>
      <md:email>nowak@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="cscott">
      <md:firstname>Clayton</md:firstname>
      
      <md:surname>Scott</md:surname>
      <md:email>cscott@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="lizzardg">
      <md:firstname>Elizabeth</md:firstname>
      
      <md:surname>Gregory</md:surname>
      <md:email>lizzardg@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="jsilv">
      <md:firstname>Jeffrey</md:firstname>
      
      <md:surname>Silverman</md:surname>
      <md:email>jsilv@rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist>
    <md:keyword>adaptive</md:keyword>
    <md:keyword>least-mean-square</md:keyword>
    <md:keyword>channel/system identification</md:keyword>
    <md:keyword>noise cancellation</md:keyword>
    <md:keyword>channel equalization</md:keyword>
    <md:keyword>adaptive controller</md:keyword>
    <md:keyword>iterative minimization</md:keyword>
    <md:keyword>real-time</md:keyword>
    <md:keyword>on-line</md:keyword>
    <md:keyword>steepest descent</md:keyword>
    <md:keyword>downhill</md:keyword>
  </md:keywordlist>

  <md:abstract/>
</metadata>

  <content>
    <para id="para1">The Kalman filter is just one of many
    <term>adaptive</term> filtering (or estimation)
    algorithms. Despite its elegant derivation and often excellent
    performance, the Kalman filter has two drawbacks:
      <list id="list1" type="enumerated">
	
	<item>The derivation and hence performance of the Kalman
	filter depends on the accuracy of the <foreign>a
	priori</foreign> assumptions. The performance can be less than
	impressive if the assumptions are erroneous.</item>

	<item>The Kalman filter is fairly computationally demanding,
	requiring
	  <m:math>
	    <m:apply>
	      <m:ci type="fn">O</m:ci>
	      <m:apply>
		<m:power/>
		<m:ci>P</m:ci>
		<m:cn>2</m:cn>
	      </m:apply>
	    </m:apply>
	  </m:math> operations per sample. This can limit the utility
	  of Kalman filters in high rate real time
	  applications.</item>
      </list>
      
      As a popular alternative to the Kalman filter, we will
      investigate the so-called <term>least-mean-square</term> (LMS)
      adaptive filtering algorithm.
    </para>

    <para id="para2">The principle advantages of LMS are
      <list id="list2" type="enumerated">
	<item>No prior assumptions are made regarding the signal to be
	estimated.</item>

	<item>Computationally, LMS is very efficient, requiring
	  <m:math>
	    <m:apply>
	      <m:ci type="fn">O</m:ci>
	      <m:ci>P</m:ci>
	    </m:apply>
	  </m:math> per sample.
	</item>
      </list>

      The price we pay with LMS instead of a Kalman filter is that the
      rate of convergence and adaptation to sudden changes is slower for
      LMS than for the Kalman filter (with correct prior assumptions).
    </para>

    <section id="AFA">
      <name>Adaptive Filtering Applications</name>
      
      <section id="CSI">
	<name>Channel/System Identification</name>
	
	<figure id="fig1">
	  <name>Channel/System Identification</name>
	  <media type="image/png" src="csid.png"/>
	</figure>
      </section>

      <section id="NC">
	<name>Noise Cancellation</name>
	
	<para id="paranoise">Suppression of maternal ECG component in
	fetal ECG (<cnxn target="fig2"/>).

	  <!-- Missing figure -->
	  <figure id="fig2">
	    <media type="image/png" src=".png"/> 
	    <caption>Cancelling maternal heartbeat in fetal
	    electrocardiography (ECG): position of leads.</caption>
	  </figure>
	    
	  <figure id="fig3">
	    <media type="image/png" src="ecg.png"/>
	  </figure>
	  
	  <m:math>
	    <m:apply>
	      <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#estimate"/>
	      <m:ci>y</m:ci>
	    </m:apply>
	  </m:math> is an estimate of the maternal ECG signal present
	  in the abdominal signal (<cnxn target="fig4"/>).
	
	  <!-- Missing figure -->
	  <figure id="fig4">
	    <media type="image/png" src=".png"/> 
	    <caption>Results of fetal ECG experiment (bandwidth,
	    3-35Hz; sampling rate, 256Hz): (a)reference input (chest
	    lead); (b)primary input (abdominal lead);
	    (c)noise-canceller output.</caption>
	  </figure>
	</para>
      </section>

      <section id="CE">
	<name>Channel Equalization</name>
	
	<figure id="fig5">
	  <name>Channel Equalization</name>
	  <media type="image/png" src="ce.png"/>
	</figure>
      </section>

      <section id="AC">
	<name>Adaptive Controller</name>
	
	<figure id="fig6">
	  <name>Adaptive Controller</name>
	  <media type="image/png" src="ac.png"/>
	  <caption>Here, the reference signal is the desired output. 
	    The adaptive controller adjusts the controller
	    gains (filter weights) to keep them appropriate to the
	    system as it changes over time.</caption>
	</figure>
      </section>
    </section>

    <section id="IM">
      <name>Iterative Minimization</name>

      <para id="im1">Most adaptive filtering alogrithms (LMS
	included) are modifications of standard iterative procedures
	for solving minimization problems in a <term>real-time</term>
	or <term>on-line</term> fashion. Therefore, before deriving
	the LMS algorithm we will look at iterative methods of
	minimizing error criteria such as MSE.
      </para>

      <para id="im2">Conider the following set-up:
	<m:math display="block">
	  <m:mrow>
	    <m:msub>
	      <m:mi>x</m:mi>
	      <m:mi>k</m:mi>
	    </m:msub>
	    <m:mo>:</m:mo>
	    <m:mtext>observation</m:mtext>
	  </m:mrow>
	</m:math>
	<m:math display="block">
	  <m:mrow>
	    <m:msub>
	      <m:mi>y</m:mi>
	      <m:mi>k</m:mi>
	    </m:msub>
	    <m:mo>:</m:mo>
	    <m:mtext>signal to be estimated</m:mtext>
	  </m:mrow>
	</m:math>
      </para>
	
      <section id="LE">
	<name>Linear estimator</name>
	<para id="le1">
	  <equation id="eqn1">
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#estimate"/>
		  <m:ci><m:msub>
		    <m:mi>y</m:mi>
		    <m:mi>k</m:mi>
		  </m:msub></m:ci>
		</m:apply>
		<m:apply>
		  <m:plus/>
		  <m:apply>
		    <m:times/>
		    <m:ci><m:msub>
		      <m:mi>w</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub></m:ci>
		    <m:ci><m:msub>
		      <m:mi>x</m:mi>
		      <m:mi>k</m:mi>
		    </m:msub></m:ci>
		  </m:apply>
		  <m:apply>
		    <m:times/>
		    <m:ci><m:msub>
		      <m:mi>w</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub></m:ci>
		    <m:ci><m:msub>
		      <m:mi>x</m:mi>
		      <m:apply>
			<m:minus/>
			<m:mi>k</m:mi>
			<m:mn>1</m:mn>
		      </m:apply>
		    </m:msub></m:ci>
		  </m:apply>
		  <m:ci>…</m:ci>
		  <m:apply>
		    <m:times/>
		    <m:ci><m:msub>
		      <m:mi>w</m:mi>
		      <m:mi>p</m:mi>
		    </m:msub></m:ci>
		    <m:ci><m:msub>
		      <m:mi>x</m:mi>
		      <m:apply>
			<m:plus/>
			<m:apply>
			  <m:minus/>
			  <m:mi>k</m:mi>
			  <m:mi>p</m:mi>
			</m:apply>
			<m:mn>1</m:mn>
		      </m:apply>
		    </m:msub></m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>
	  </equation>

	  <figure id="fig7">
	    <media type="image/png" src="fir.png"/>
	  </figure>

	  Impulse response of the filter:
	  <m:math display="block">
	    <m:mrow>
	      <m:mi>…</m:mi>
	      <m:mo>,</m:mo>
	      <m:mn>0</m:mn>
	      <m:mo>,</m:mo>
	      <m:mn>0</m:mn>
	      <m:mo>,</m:mo>
	      <m:msub>
		<m:mi>w</m:mi>
		<m:mn>1</m:mn>
	      </m:msub>
	      <m:mo>,</m:mo>
	      <m:msub>
		<m:mi>w</m:mi>
		<m:mn>2</m:mn>
	      </m:msub>
	      <m:mo>,</m:mo>
	      <m:mi>…</m:mi>
	      <m:msub>
		<m:mi>w</m:mi>
		<m:mi>p</m:mi>
	      </m:msub>
	      <m:mo>,</m:mo>
	      <m:mn>0</m:mn>
	      <m:mo>,</m:mo>
	      <m:mn>0</m:mn>
	      <m:mo>,</m:mo>
	      <m:mi>…</m:mi>
	    </m:mrow>
	  </m:math>
	</para>
      </section>

      <section id="VN">
	<name>Vector notation</name>
	<para id="vn1">
	  <equation id="eqn2">
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#estimate"/>
		  <m:ci><m:msub>
		    <m:mi>y</m:mi>
		    <m:mi>k</m:mi>
		  </m:msub></m:ci>
		</m:apply>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:transpose/>
		    <m:ci type="vector">
		      <m:msub>
			<m:mi>x</m:mi>
			<m:mi>k</m:mi>
		      </m:msub>
		    </m:ci>
		  </m:apply>
		  <m:ci type="vector">w</m:ci>
		</m:apply>
	      </m:apply>
	    </m:math>
	  </equation>
	  Where
	  <m:math display="block">
	    <m:apply>
	      <m:eq/>
	      <m:ci type="vector">
		<m:msub>
		  <m:mi>x</m:mi>
		  <m:mi>k</m:mi>
		</m:msub>
	      </m:ci>
	      <m:vector>
		<m:ci><m:msub>
		  <m:mi>x</m:mi>
		  <m:mi>k</m:mi>
		</m:msub></m:ci>
		<m:ci><m:msub>
		  <m:mi>x</m:mi>
		  <m:apply>
		    <m:minus/>
		    <m:mi>k</m:mi>
		    <m:mn>1</m:mn>
		  </m:apply>
		</m:msub></m:ci>
		<m:ci>⋮</m:ci>
		<m:ci><m:msub>
		  <m:mi>x</m:mi>
		  <m:apply>
		    <m:plus/>
		    <m:apply>
		      <m:minus/>
		      <m:mi>k</m:mi>
		      <m:mi>p</m:mi>
		    </m:apply>
		    <m:mn>1</m:mn>
		  </m:apply>
		</m:msub></m:ci>
	      </m:vector>
	    </m:apply>
	  </m:math> and
	  <m:math display="block">
	    <m:apply>
	      <m:eq/>
	      <m:ci type="vector">w</m:ci>
	      <m:vector>
		<m:ci><m:msub>
		  <m:mi>w</m:mi>
		  <m:mn>1</m:mn>
		</m:msub></m:ci>
		<m:ci><m:msub>
		  <m:mi>w</m:mi>
		  <m:mn>2</m:mn>
		</m:msub></m:ci>
		<m:ci>⋮</m:ci>
		<m:ci><m:msub>
		  <m:mi>w</m:mi>
		  <m:mi>p</m:mi>
		</m:msub></m:ci>
	      </m:vector>
	    </m:apply>
	  </m:math>
	</para>
      </section>

      <section id="ES">
	<name>Error signal</name>
	<equation id="eqn3">
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci><m:msub>
		<m:mi>e</m:mi>
		<m:mi>k</m:mi>
	      </m:msub></m:ci>
	      <m:apply>
		<m:minus/>
		<m:ci><m:msub>
		  <m:mi>y</m:mi>
		  <m:mi>k</m:mi>
		</m:msub></m:ci>
		<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#estimate"/>
		  <m:ci><m:msub>
		    <m:mi>y</m:mi>
		    <m:mi>k</m:mi>
		  </m:msub></m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:minus/>
		<m:ci><m:msub>
		  <m:mi>y</m:mi>
		  <m:mi>k</m:mi>
		</m:msub></m:ci>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:transpose/>
		    <m:ci type="vector">
		      <m:msub>
			<m:mi>x</m:mi>
			<m:mi>k</m:mi>
		      </m:msub>
		    </m:ci>
		  </m:apply>
		  <m:ci type="vector">w</m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</equation>
      </section>

      <section id="Assump">
	<name>Assumptions</name>
	
	<para id="assump1">
	  <m:math>
	    <m:mrow>
	      <m:mo>(</m:mo>
	      <m:ci type="vector">
		<m:msub>
		  <m:mi>x</m:mi>
		  <m:mi>k</m:mi>
		</m:msub>
	      </m:ci>
	      <m:mo>,</m:mo>
	      <m:ci><m:msub>
		<m:mi>y</m:mi>
		<m:mi>k</m:mi>
	      </m:msub></m:ci>
	      <m:mo>)</m:mo>
	    </m:mrow>
	  </m:math> are jointly stationary with zero-mean.
	</para>
      </section>

      <section id="MSE">
	<name>MSE</name>
	<para id="mse1">
	  <equation id="eqn4">
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		  <m:apply>
		    <m:power/>
		    <m:ci><m:msub>
		      <m:mi>e</m:mi>
		      <m:mi>k</m:mi>
		    </m:msub></m:ci>
		    <m:cn>2</m:cn>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		  <m:apply>
		    <m:power/>
		    <m:apply>
		      <m:minus/>
		      <m:ci><m:msub>
			<m:mi>y</m:mi>
			<m:mi>k</m:mi>
		      </m:msub></m:ci>
		      <m:apply>
			<m:times/>
			<m:apply>
			  <m:transpose/>
			  <m:ci type="vector">
			    <m:msub>
			      <m:mi>x</m:mi>
			      <m:mi>k</m:mi>
			    </m:msub>
			  </m:ci>
			</m:apply>
			<m:ci type="vector">w</m:ci>
		      </m:apply>
		    </m:apply>
		    <m:cn>2</m:cn>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:plus/>
		  <m:apply>
		    <m:minus/>
		    <m:apply>
		      <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		      <m:apply>
			<m:power/>
			<m:ci><m:msub>
			  <m:mi>y</m:mi>
			  <m:mi>k</m:mi>
			</m:msub></m:ci>
			<m:cn>2</m:cn>
		      </m:apply>
		    </m:apply>
		    <m:apply>
		      <m:times/>
		      <m:cn>2</m:cn>
		      <m:apply>
			<m:transpose/>
			<m:ci type="vector">w</m:ci>
		      </m:apply>
		      <m:apply>
			<m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
			<m:apply>
			  <m:times/>
			  <m:ci type="vector">
			    <m:msub>
			      <m:mi>x</m:mi>
			      <m:mi>k</m:mi>
			    </m:msub>
			  </m:ci>
			  <m:ci><m:msub>
			    <m:mi>y</m:mi>
			    <m:mi>k</m:mi>
			  </m:msub></m:ci>
			</m:apply>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:transpose/>
		      <m:ci type="vector">w</m:ci>
		    </m:apply>
		    <m:apply>
		      <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		      <m:apply>
			<m:times/>
			<m:ci type="vector">
			  <m:msub>
			    <m:mi>x</m:mi>
			    <m:mi>k</m:mi>
			  </m:msub>
			</m:ci>
			<m:apply>
			  <m:transpose/>
			  <m:ci type="vector">
			    <m:msub>
			      <m:mi>x</m:mi>
			      <m:mi>k</m:mi>
			    </m:msub>
			  </m:ci>
			</m:apply>
		      </m:apply>
		    </m:apply>
		    <m:ci type="vector">w</m:ci>
		  </m:apply>
		</m:apply>

		<m:apply>
		  <m:plus/>
		  <m:apply>
		    <m:minus/>
		    <m:ci><m:msub>
		      <m:mi>R</m:mi>
		      <m:mi>yy</m:mi>
		    </m:msub></m:ci>
		    <m:apply>
		      <m:times/>
		      <m:cn>2</m:cn>
		      <m:apply>
			<m:transpose/>
			<m:ci type="vector">w</m:ci>
		      </m:apply>
		      <m:ci type="vector">
			<m:msub>
			  <m:mi>R</m:mi>
			  <m:mi>xy</m:mi>
			</m:msub>
		      </m:ci>
		    </m:apply>
		  </m:apply>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:transpose/>
		      <m:ci type="vector">w</m:ci>
		    </m:apply>
		    <m:ci type="vector">
		      <m:msub>
			<m:mi>R</m:mi>
			<m:mi>xx</m:mi>
		      </m:msub>
		    </m:ci>
		    <m:ci type="vector">w</m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>
	  </equation>
	  Where
	  <m:math>
	    <m:ci><m:msub>
	      <m:mi>R</m:mi>
	      <m:mi>yy</m:mi>
	    </m:msub></m:ci>
	  </m:math> is the variance of
	  <m:math>
	    <m:apply>
	      <m:power/>
	      <m:ci><m:msub>
		<m:mi>y</m:mi>
		<m:mi>k</m:mi>
	      </m:msub></m:ci>
	      <m:cn>2</m:cn>
	    </m:apply>
	  </m:math>, 
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>R</m:mi>
		<m:mi>xx</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math> is the covariance matrix of
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>x</m:mi>
		<m:mi>k</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math>, and
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci type="vector">
		<m:msub>
		  <m:mi>R</m:mi>
		  <m:mi>xy</m:mi>
		</m:msub>
	      </m:ci>
	      <m:apply>
		<m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		<m:apply>
		  <m:times/>
		  <m:ci type="vector">
		    <m:msub>
		      <m:mi>x</m:mi>
		      <m:mi>k</m:mi>
		    </m:msub>
		  </m:ci>
		  <m:ci><m:msub>
		    <m:mi>y</m:mi>
		    <m:mi>k</m:mi>
		  </m:msub></m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math> is the cross-covariance between 
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>x</m:mi>
		<m:mi>k</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math> and
	  <m:math>
	    <m:ci><m:msub>
	      <m:mi>y</m:mi>
	      <m:mi>k</m:mi>
	    </m:msub></m:ci>
	  </m:math>

	  <note type="Note">The MSE is quadratic in <m:math> <m:ci type="vector">W</m:ci> </m:math> which implies the MSE
	    surface is "bowl" shaped with a unique minimum point (<cnxn target="fig8"/>).
	  </note>

	  <figure id="fig8">
	    <media type="image/png" src="mse.png"/>
	  </figure>
	</para>
      </section>

      <section id="OF">
	<name>Optimum Filter</name>

	<para id="of1">Minimize MSE:
	  <equation id="eqn5">
	    <m:math>
	      <m:apply>
		<m:implies/>
		<m:apply>
		  <m:eq/>
		  <m:apply>
		    <m:partialdiff/>
		    <m:bvar>
		      <m:ci type="vector">w</m:ci>
		    </m:bvar>
		    <m:apply>
		      <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		      <m:apply>
			<m:power/>
			<m:ci><m:msub>
			  <m:mi>e</m:mi>
			  <m:mi>k</m:mi>
			</m:msub></m:ci>
			<m:cn>2</m:cn>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		
		  <m:apply>
		    <m:plus/>
		    <m:apply>
		      <m:times/>
		      <m:cn>-2</m:cn>
		      <m:ci type="vector">
			<m:msub>
			  <m:mi>R</m:mi>
			  <m:mi>xy</m:mi>
			</m:msub>
		      </m:ci>
		    </m:apply>
		    <m:apply>
		      <m:times/>
		      <m:cn>2</m:cn>
		      <m:ci type="vector">
			<m:msub>
			  <m:mi>R</m:mi>
			  <m:mi>xx</m:mi>
			</m:msub>
		      </m:ci>
		      <m:ci type="vector">w</m:ci>
		    </m:apply>
		  </m:apply>
		  <m:cn>0</m:cn>
		</m:apply>
		
		<m:apply>
		  <m:eq/>
		  <m:ci type="vector">
		    <m:msub>
		      <m:mi>w</m:mi>
		      <m:mi>opt</m:mi>
		    </m:msub>
		  </m:ci>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:inverse/>
		      <m:ci type="vector">
			<m:msub>
			  <m:mi>R</m:mi>
			  <m:mi>xx</m:mi>
			</m:msub>
		      </m:ci>
		    </m:apply>
		    <m:ci type="vector">
		      <m:msub>
			<m:mi>R</m:mi>
			<m:mi>xy</m:mi>
		      </m:msub>
		    </m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>
	  </equation>
	  Notice that we can re-write <cnxn target="eqn5"/> as
	  <equation id="eqn6">
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		  <m:apply>
		    <m:times/>
		    <m:ci type="vector">
		      <m:msub>
			<m:mi>x</m:mi>
			<m:mi>k</m:mi>
		      </m:msub>
		    </m:ci>
		    <m:apply>
		      <m:transpose/>
		      <m:ci type="vector">
			<m:msub>
			  <m:mi>x</m:mi>
			  <m:mi>k</m:mi>
			</m:msub>
		      </m:ci>
		    </m:apply>
		    <m:ci type="vector">w</m:ci>
		  </m:apply>
		</m:apply>

		<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		  <m:apply>
		    <m:times/>
		    <m:ci type="vector">
		      <m:msub>
			<m:mi>x</m:mi>
			<m:mi>k</m:mi>
		      </m:msub>
		    </m:ci>
		    <m:ci><m:msub>
		      <m:mi>y</m:mi>
		      <m:mi>k</m:mi>
		    </m:msub></m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>
	  </equation>
	  or
	  <equation id="eqn7">
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		  <m:apply>
		    <m:times/>
		    <m:ci type="vector">
		      <m:msub>
			<m:mi>x</m:mi>
			<m:mi>k</m:mi>
		      </m:msub>
		    </m:ci>
		    <m:apply>
		      <m:minus/>
		      <m:ci><m:msub>
			<m:mi>y</m:mi>
			<m:mi>k</m:mi>
		      </m:msub></m:ci>
		      <m:apply>
			<m:times/>
			<m:apply>
			  <m:transpose/>
			  <m:ci type="vector">
			    <m:msub>
			      <m:mi>x</m:mi>
			      <m:mi>k</m:mi>
			    </m:msub>
			  </m:ci>
			</m:apply>
			<m:ci type="vector">w</m:ci>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		</m:apply>

		<m:apply>
		  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
		  <m:apply>
		    <m:times/>
		    <m:ci type="vector">
		      <m:msub>
			<m:mi>x</m:mi>
			<m:mi>k</m:mi>
		      </m:msub>
		    </m:ci>
		    <m:ci><m:msub>
		      <m:mi>e</m:mi>
		      <m:mi>k</m:mi>
		    </m:msub></m:ci>
		  </m:apply>
		</m:apply>

		<m:cn>0</m:cn>
	      </m:apply>
	    </m:math>
	  </equation>
	  Which shows that the error signal is orthogonal to the input
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>x</m:mi>
		<m:mi>k</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math> (by the <term>orthogonality principle</term> of
	  minimum MSE estimator).
	</para>
      </section>

      <section id="SD">
	<name>Steepest Descent</name>
	
	<para id="sd1">Although we can easily determine
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>w</m:mi>
		<m:mi>opt</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math> by solving the system of equations
	  <equation id="eqn8">
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:apply>
		  <m:times/>
		  <m:ci type="vector">
		    <m:msub>
		      <m:mi>R</m:mi>
		      <m:mi>xx</m:mi>
		    </m:msub>
		  </m:ci>
		  <m:ci type="vector">w</m:ci>
		</m:apply>
		<m:ci type="vector">
		  <m:msub>
		    <m:mi>R</m:mi>
		    <m:mi>xy</m:mi>
		  </m:msub>
		</m:ci>
	      </m:apply>
	    </m:math>
	  </equation>
	  Let's look at an iterative procedure for solving this
	  problem. This will set the stage for our adaptive filtering
	  algorithm.
	</para>

	<para id="sd2">We want to minimize the MSE. The idea is
	simple. Starting at some initial weight vector
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>w</m:mi>
		<m:mn>0</m:mn>
	      </m:msub>
	    </m:ci>
	  </m:math>, iteratively adjust the values to decrease the
	  MSE (<cnxn target="fig9"/>).

	  <figure id="fig9">
	    <name>In One-Dimension</name>
	    <media type="image/png" src="iterative.png"/>
	  </figure>

	  We want to <emphasis>move</emphasis>
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>w</m:mi>
		<m:mn>0</m:mn>
	      </m:msub>
	    </m:ci>
	  </m:math> towards the optimal vector
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>w</m:mi>
		<m:mi>opt</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math>. In order to move in the correct direction, we
	  must move <term>downhill</term> or in the direction opposite
	  to the gradient of the MSE surface at the point
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>w</m:mi>
		<m:mn>0</m:mn>
	      </m:msub>
	    </m:ci>
	  </m:math>. Thus, a natural and simple adjustment takes the form
	  <equation id="eqn9">
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:ci type="vector">
		  <m:msub>
		    <m:mi>w</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
		<m:apply>
		  <m:minus/>
		  <m:ci type="vector">
		    <m:msub>
		      <m:mi>w</m:mi>
		      <m:mn>0</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:divide/>
		      <m:cn>1</m:cn>
		      <m:cn>2</m:cn>
		    </m:apply>
		    <m:ci>μ</m:ci>
		    <m:apply>
		      <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#evaluateat"/>
		      <m:bvar>
			<m:ci type="vector">w</m:ci>
		      </m:bvar>
		      <m:lowlimit>
			<m:ci type="vector">
			  <m:msub>
			    <m:mi>w</m:mi>
			    <m:mn>0</m:mn>
			  </m:msub>
			</m:ci>
		      </m:lowlimit>
		      <m:apply>
			<m:partialdiff/>
			<m:bvar>
			  <m:ci type="vector">w</m:ci>
			</m:bvar>
			<m:apply>
			  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
			  <m:apply>
			    <m:power/>
			    <m:ci><m:msub>
			      <m:mi>e</m:mi>
			      <m:mi>k</m:mi>
			    </m:msub></m:ci>
			    <m:cn>2</m:cn>
			  </m:apply>
			</m:apply>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>
	  </equation>
	  Where <m:math><m:ci>μ</m:ci></m:math> is the step size and
	  tells us how far to move in the negative gradient direction
	  (<cnxn target="fig10"/>).

	  <figure id="fig10">
	    <media type="image/png" src="adjust.png"/>
	  </figure>
	  
	  Generalizing this idea to an iterative strategy, we get
	  <equation id="eqn10">
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:ci type="vector">
		  <m:msub>
		    <m:mi>w</m:mi>
		    <m:mi>k</m:mi>
		  </m:msub>
		</m:ci>
		<m:apply>
		  <m:minus/>
		  <m:ci type="vector">
		    <m:msub>
		      <m:mi>w</m:mi>
		      <m:apply>
			<m:minus/>
			<m:mi>k</m:mi>
			<m:mn>1</m:mn>
		      </m:apply>
		    </m:msub>
		  </m:ci>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:divide/>
		      <m:cn>1</m:cn>
		      <m:cn>2</m:cn>
		    </m:apply>
		    <m:ci>μ</m:ci>
		    <m:apply>
		      <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#evaluateat"/>
		      <m:bvar>
			<m:ci type="vector">w</m:ci>
		      </m:bvar>
		      <m:lowlimit>
			<m:ci type="vector">
			  <m:msub>
			    <m:mi>w</m:mi>
			    <m:apply>
			      <m:minus/>
			      <m:mi>k</m:mi>
			      <m:mn>1</m:mn>
			    </m:apply>
			  </m:msub>
			</m:ci>
		      </m:lowlimit>
		      <m:apply>
			<m:partialdiff/>
			<m:bvar>
			  <m:ci type="vector">w</m:ci>
			</m:bvar>
			<m:apply>
			  <m:csymbol definitionURL="http://cnx.rice.edu/cd/cnxmath.ocd#expectedvalue"/>
			  <m:apply>
			    <m:power/>
			    <m:ci><m:msub>
			      <m:mi>e</m:mi>
			      <m:mi>k</m:mi>
			    </m:msub></m:ci>
			    <m:cn>2</m:cn>
			  </m:apply>
			</m:apply>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:math>
	  </equation>
	  and we can repeatedly update 
	  <m:math>
	    <m:ci type="vector">w</m:ci>
	  </m:math>:
	  <m:math>
	    <m:mrow>
	      <m:ci type="vector">
		<m:msub>
		  <m:mi>w</m:mi>
		  <m:mn>0</m:mn>
		</m:msub>
	      </m:ci>
	      <m:mo>,</m:mo>
	      <m:ci type="vector">
		<m:msub>
		  <m:mi>w</m:mi>
		  <m:mn>1</m:mn>
		</m:msub>
	      </m:ci>
	      <m:mo>,</m:mo>
	      <m:mi>…</m:mi>
	      <m:mo>,</m:mo>
	      <m:ci type="vector">
		<m:msub>
		  <m:mi>w</m:mi>
		  <m:mi>k</m:mi>
		</m:msub>
	      </m:ci>
	    </m:mrow>
	  </m:math>. Hopefully each subsequent
	  <m:math>
	    <m:ci type="vector">
		<m:msub>
		<m:mi>w</m:mi>
		<m:mi>k</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math> is closer to
	  <m:math>
	    <m:ci type="vector">
	      <m:msub>
		<m:mi>w</m:mi>
		<m:mi>opt</m:mi>
	      </m:msub>
	    </m:ci>
	  </m:math>. Does the procedure converge? Can we adapt it to
	  an on-line, real-time, dynamic situation in which the
	  signals may not be stationary?
	</para>
      </section>
    </section>
 
  </content>
  
</document>
