diff m-toolbox/html_help/help/ug/whitening_content.html @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/html_help/help/ug/whitening_content.html	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,368 @@
+<!-- $Id: whitening_content.html,v 1.5 2011/04/11 14:24:19 luigi Exp $ -->
+
+  <!-- ================================================== -->
+  <!--                 BEGIN CONTENT FILE                 -->
+  <!-- ================================================== -->
+  <!-- ===== link box: Begin ===== -->
+  <p>
+    <table border="1"  width="80%">
+      <tr>
+        <td>
+          <table border="0" cellpadding="5" class="categorylist" width="100%">
+            <colgroup>
+              <col width="37%"/>
+              <col width="63%"/>
+            </colgroup>
+            <tbody>
+              <tr valign="top">
+                <td>
+                  <a href="#WhitenIntro">Introduction</a>
+                </td>
+                <td>Noise whitening in LTPDA.</td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="#WhitenAlgo">Algorithm</a>
+                </td>
+                <td>Whitening Algorithms.</td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="#Whiten1D">1D data</a>
+                </td>
+                <td>Whitening noise in one-dimensional data.</td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="#Whiten2D">2D data</a>
+                </td>
+                <td>Whitening noise in two-dimensional data.</td>
+              </tr>
+            </tbody>
+          </table>
+        </td>
+      </tr>
+    </table>
+  </p>
+  <!-- ===== link box: End ====== -->
+
+  
+  <!-- ===== Intro ====== -->
+  <h2><a name="WhitenIntro">Noise whitening in LTPDA</a></h2>
+  <p>
+    A random process <i>w(t)</i> is considered white if it is zero mean 
+    and uncorrelated:
+  </p>
+  <p>
+    <IMG src="images/whitening01.gif" align="center" border="0">
+  </p>
+  <p>
+    As a consequence, the power spectral density of a white process is a 
+    constant at every frequency:
+  </p>
+  <p>
+    <IMG src="images/whitening02.gif" align="center" border="0">
+  </p>
+  <p>
+    In other words, The power per unit of frequency associated to a white noise
+    process is uniformly distributed on the whole available frequency range.
+    An example is reported in figure 1.
+  </p>
+  
+  <div align="center">
+    <table border="0">
+      <caption align="bottom">
+        <b> Figure 1:</b> Power spectral density (estimated with the welch method)
+        of a gaussian unitary variance zero mean random process. 
+        The process <i>w(t)</i> is assumed to have 
+        physical units of <tt>m</tt> therefore its power spectral density has
+        physical units of <tt>m^2/Hz</tt>. Note that the power spectral density
+        average value is 2 instead of the expected 1 (unitary variance process)
+        since we calculated one-sided power spectral density.
+      </caption>
+      <tr>
+        <td>
+          <IMG src="images/whitening03.png" align="center" border="0">
+        </td>
+      </tr>
+    </table>
+  </div>
+  
+  <p>
+  </p>
+  
+  <p>
+    A non-white (colored) noise process is instead characterized by a given
+    distribution of the power per unit of frequency along the available frequency
+    bandwidth. <br>
+    Whitening operation on a given non-white process corresponds to force 
+    such a process to satisfy the conditions described above for a white process.
+  </p>
+  <p>
+    In LTPDA there are different methods for noise whitening:
+    <ul>
+      <li> <a href="matlab:doc('ao/buildWhitener1D')"> buildWhitener1D.m</a> 
+      <li> <a href="matlab:doc('ao/whiten1D')"> whiten1D.m</a> 
+      <li> <a href="matlab:doc('ao/firwhiten')">firwhiten.m</a>
+      <li> <a href="matlab:doc('ao/whiten2D')">whiten2D.m</a>
+    </ul>
+    They accept time series analysis objects as an input and they output noise 
+    whitening filters or whitened time series analysis objects.
+  </p>
+  
+  <!-- ===== Algorithm ====== -->
+  <h2><a name="WhitenAlgo">Whitening Algorithms</a></h2>
+
+  <h3>buildWhitener1D</h3>
+  <p>
+    <tt>buildWhitener1D</tt> performs a frequency domain identification of the system
+    in order to extract the proper whitening filter. The function needs a model
+    for the one-sided power spectral density of the given process. If no model
+    is provided, the power spectral density of the process is calculated with
+    the <a href="matlab:doc('ao/psd')">psd</a> and <a href="matlab:doc('ao/bin_data')">bin_data</a> algorithm. <br>
+    <ol>
+      <li> The inverse of the square root of the model for the power spectral 
+      density is fit in z-domain in order to determine a whitening 
+      filter.
+      <li> Unstable poles are removed by an all-pass stabilization procedure.
+      <li> Whitening filter is provided at the output.
+    </ol>
+  </p>
+  
+  <h3>Whiten1D</h3>
+  <p>
+    <tt>whiten1D</tt> implements the same functionality of <tt>buildWhitener1D</tt>
+    but it adds the filtering step so input data are filtered with the identified filter
+    internally to the method.
+  </p>
+  
+  <h3>Firwhiten</h3>
+  <p>
+    <tt>firwhiten</tt> whitens the input time-series by building an FIR
+    whitening filter. <br>
+    <ol>
+      <li> Make ASD of time-series.
+      <li> Perform running median to get noise-floor estimate <a href="matlab:doc('ao/smoother')">ao/smoother</a>.
+      <li> Invert noise-floor estimate.
+      <li> Call <a href="matlab:doc('mfir')">mfir()</a> on noise-floor estimate to produce whitening filter.
+      <li> Filter data.
+    </ol>
+  </p>
+  
+  <h3>Whiten2D</h3>
+  <p>
+    <tt>whiten2D</tt> whitens cross-correlated time-series. Whitening
+    filters are constructed by a fitting procedure to the models
+    for the corss-spectral matrix provided.
+    In order to work with <tt>whiten2D</tt> you must provide
+    a model (frequency series analysis objects) for the cross-spectral density
+    matrix of the process.
+    <ol>
+      <li> Whitening filters frequency response is calculated by the 
+      eigendecomposition of the cross-spectral matrix.
+      <li> Calculated responses are fit in z-domain in order to identify
+      corresponding autoregressive moving average filters.
+      <li> Input time-series is filtered. The filtering process corresponds to:<br>
+      w(1) = Filt11(a(1)) + Filt12(a(2))<br>
+      w(2) = Filt21(a(1)) + Filt22(a(2))
+    </ol>
+  </p>
+  
+  
+  <!-- ===== 1D Examples ====== -->
+  <h2><a name="buildWhitener1D">Whitening noise in one-dimensional data</a></h2>
+  <p>
+    We can now test an example of the one-dimensinal whitening filters capabilities.
+    With the following commands we can generate a colored noise data series
+    for parameters description please refer to the
+    <a href="matlab:doc('ao')">ao</a>,
+    <a href="matlab:doc('miir')">miir</a> and
+    <a href="matlab:doc('ao/filter')">filter</a>
+    documentation pages.
+  </p>
+  <div class="fragment"><pre>
+    
+    fs = 1; <span class="comment">% sampling frequency</span>
+    
+    <span class="comment">% Generate gaussian white noise</span>
+    pl = plist(<span class="string">'tsfcn'</span>, <span class="string">'randn(size(t))'</span>, ...
+      <span class="string">'fs'</span>, fs, ...
+      <span class="string">'nsecs'</span>, 1e5, ...
+      <span class="string">'yunits'</span>, <span class="string">'m'</span>);
+    a = ao(pl);
+    
+    <span class="comment">% Get a coloring filter</span>
+    pl = plist(<span class="string">'type'</span>, <span class="string">'bandpass'</span>, ...
+      <span class="string">'fs'</span>, fs, ...
+      <span class="string">'order'</span>, 3, ...
+      <span class="string">'gain'</span>, 1, ...
+      <span class="string">'fc'</span>, [0.03 0.1]);
+    ft = miir(pl);
+    
+    <span class="comment">% Coloring noise</span>
+    af = filter(a, ft);
+    
+  </pre></div>
+  
+  <p>
+    Now we can try to white colored noise.
+  </p>
+
+  
+  <h3>buildWhitener1D</h3>
+  <p>
+    If you want to try <tt>buildWhitener1D</tt> to get a whitening filter for
+    the present colored noise, you can try the following code. Please refer to the
+    <a href="matlab:doc('ao/buildWhitener1D')">buildWhitener1D</a> documentation page
+    for the meaning of any parameter. The result of the whitening procedure 
+    is reported in figure 2.
+  </p>
+  
+  <div class="fragment"><pre>
+      
+    pl = plist(...
+      <span class="string">'MaxIter'</span>, 30, ...
+      <span class="string">'MinOrder'</span>, 9, ...
+      <span class="string">'MaxOrder'</span>, 15, ...
+      <span class="string">'FITTOL'</span>, 5e-2);
+  
+    wfil = buildWhitener1D(af,pl);
+
+    aw = filter(af,wfil);
+    
+  </pre></div>
+  
+  <div align="center">
+    <table border="0">
+      <caption align="bottom">
+        <b> Figure 2:</b> Power spectral density (estimated with the welch method)
+        of colored and whitened processes.
+      </caption>
+      <tr>
+        <td>
+          <IMG src="images/whitening04.png" align="center" border="0">
+        </td>
+      </tr>
+    </table>
+  </div>
+  
+  
+  <h3>Firwhiten</h3>
+  <p>
+    As an alternative you can try <tt>firwhiten</tt> to whiten the present 
+    colored noise. Please refer to the
+    <a href="matlab:doc('ao/firwhiten')">firwhiten</a> documentation page
+    for the meaning of any parameter. The result of the whitening procedure 
+    is reported in figure 3.
+  </p>
+  
+  <div class="fragment"><pre>
+      
+    pl = plist(...
+      <span class="string">'Ntaps'</span>, 5000, ...
+      <span class="string">'Nfft'</span>, 1e5, ...
+      <span class="string">'BW'</span>, 5);
+  
+    aw = firwhiten(af, pl);
+    
+  </pre></div>
+  
+  <div align="center">
+    <table border="0">
+      <caption align="bottom">
+        <b> Figure 3:</b> Power spectral density (estimated with the welch method)
+        of colored and whitened processes.
+      </caption>
+      <tr>
+        <td>
+          <IMG src="images/whitening05.png" align="center" border="0">
+        </td>
+      </tr>
+    </table>
+  </div>
+  
+  
+  <!-- ===== 2D Examples ====== -->
+  <h2><a name="Whiten2D">Whitening noise in two-dimensional data</a></h2>
+  
+  <p>
+    We consider now the problem of whitening cross correlated data series.
+    As a example we consider a typical couple of x-dynamics LTP data series.
+    <tt>a1</tt> and <tt>a2</tt> are interferometer output noise data series.
+    In oreder to whiten data we must input a frequency response model of the 
+    cross spectral matrix of the cross-correlated process.
+  </p>
+  <p>
+    <IMG src="images/whitening10.gif" align="center" border="0">
+  </p>
+  <p>
+    Refer to <a href="matlab:doc('ao/firwhiten')">whiten2D</a> documentation page
+    for the meaning of any parameter.
+  </p>
+  
+  <div class="fragment"><pre>
+      
+    pl = plist(...
+      <span class="string">'csd11'</span>, mod11, ...
+      <span class="string">'csd12'</span>, mod12, ...
+      <span class="string">'csd21'</span>, mod21, ...
+      <span class="string">'csd22'</span>, mod22, ...
+      <span class="string">'MaxIter'</span>, 75, ...
+      <span class="string">'PoleType'</span>, 3, ...
+      <span class="string">'MinOrder'</span>, 20, ...
+      <span class="string">'MaxOrder'</span>, 40, ...
+      <span class="string">'Weights'</span>, 2, ...
+      <span class="string">'Plot'</span>, false,...
+      <span class="string">'Disp'</span>, false,...
+      <span class="string">'MSEVARTOL'</span>, 1e-2,...
+      <span class="string">'FITTOL'</span>, 1e-3);
+  
+    [aw1,aw2] = whiten2D(a1,a2,pl);
+    
+  </pre></div>
+  
+  <div align="center">
+    <table border="0">
+      <caption align="bottom">
+        <b> Figure 4:</b> Power spectral density of the noisy data series
+        before (left) and after (right) the whitening.
+      </caption>
+      <tr>
+        <td>
+          <IMG src="images/whitening06.png" align="center" border="0">
+        </td>
+        <td>
+          <IMG src="images/whitening07.png" align="center" border="0">
+        </td>
+      </tr>
+    </table>
+  </div>
+  
+  <div align="center">
+    <table border="0">
+      <caption align="bottom">
+        <b> Figure 5:</b> Real (left) and Imaginary (right) part of the 
+        <a href="matlab:doc('ao/cohere')">coherence</a> function. 
+        Blue line refers to theoretical expectation for colored noise data.
+        Red line refers to calculated values for colored noise data.
+        Green line refers to calculated values for whitened noise data.
+        
+      </caption>
+      <tr>
+        <td>
+          <IMG src="images/whitening08.png" align="center" border="0">
+        </td>
+        <td>
+          <IMG src="images/whitening09.png" align="center" border="0">
+        </td>
+      </tr>
+    </table>
+  </div>
+  
+  
+  
+  
+  
+  
+  
+