Mercurial > hg > ltpda
diff m-toolbox/html_help/help/ug/sigproc_diff_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/sigproc_diff_content.html Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,277 @@ +<!-- $Id: sigproc_diff_content.html,v 1.10 2011/04/05 08:12:13 hewitson 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="#description">Description</a> + </td> + <td>Discrete derivative estimation in LTPDA.</td> + </tr> + <tr valign="top"> + <td> + <a href="#algorithm">Algorithm</a> + </td> + <td>Derivatives Algorithms.</td> + </tr> + <tr valign="top"> + <td> + <a href="#examples">Examples</a> + </td> + <td>Usage examples of discrete derivative estimation tools.</td> + </tr> + <tr valign="top"> + <td> + <a href="#references">References</a> + </td> + <td>Bibliographic references.</td> + </tr> + </tbody> + </table> + </td> + </tr> + </table> +</p> +<!-- ===== link box: End ====== --> + + + +<p> + +</p> + + +<h2><a name="description">Derivative calculation for dicrete data series</a></h2> + +<p> + Derivative estimation on discrete data series is implemented by the function + <a href="matlab:doc('ao/diff')">ao/diff</a>. + This function embeds several algorithms for the calculation + of zero, first and second order derivative. Where with zero order derivative we intend + a particular category of data smoothers [1]. +</p> + + + +<h2><a name="algorithm">Algorithm</a></h2> + +<p> + <table cellspacing="0" class="body" cellpadding="2" border="0" width="80%"> + <colgroup> + <col width="15%"/> + <col width="85%"/> + </colgroup> + <thead> + <tr valign="top"> + <th class="categorylist">Method</th> + <th class="categorylist">Description</th> + </tr> + </thead> + <tbody> + <tr valign="top"> + <td bgcolor="#f3f4f5"> + <p><span class="string">'2POINT'</span></p> + </td> + <td bgcolor="#f3f4f5"> + <p> + Compute first derivative with two point equation according to: + <div align="center"> + <IMG src="images/sigproc_diff_algo01.gif" align="center" border="0"> + </div> + </p> + </td> + </tr> + <tr valign="top"> + <td bgcolor="#f3f4f5"> + <p><span class="string">'3POINT'</span></p> + </td> + <td bgcolor="#f3f4f5"> + <p> + Compute first derivative with three point equation according to: + <div align="center"> + <IMG src="images/sigproc_diff_algo02.gif" align="center" border="0"> + </div> + </p> + </td> + </tr> + <tr valign="top"> + <td bgcolor="#f3f4f5"> + <p><span class="string">'5POINT'</span></p> + </td> + <td bgcolor="#f3f4f5"> + <p> + Compute first derivative with five point equation according to: + <div align="center"> + <IMG src="images/sigproc_diff_algo03.gif" align="center" border="0"> + </div> + </p> + </td> + </tr> + <tr valign="top"> + <td bgcolor="#f3f4f5"> + <p><span class="string">'FPS'</span></p> + </td> + <td bgcolor="#f3f4f5"> + <p> + Five Point Stencil is a generalized method to calculate zero, first and second + order discrete derivative of a given time series. Derivative approximation, + at a given time <i>t = kT</i> (<i>k</i> being an integer and <i>T</i> + being the sampling time), is calculated by means of finite differences + between the element at <i>t</i> with its four neighbors: + <div align="center"> + <IMG src="images/sigproc_diff_algo04.gif" align="center" border="0"> + </div> + </p> + <p> + It can be demonstrated that the coefficients of the expansion can be + expressed as a function of one of them [1]. This allows the construction + of a family of discrete derivative estimators characterized by a + good low frequency accuracy and a smoothing behavior at high frequencies + (near the nyquist frequency). <br/> + Non-trivial values for the <span class="string">'COEFF'</span> parameter are: + <ul> + <li> Parabolic fit approximation <br/> + These coefficients can be obtained by a parabolic fit procedure on + a generic set of data [1]. + <ul> + <li> Zeroth order -3/35 + <li> First order -1/5 + <li> Second order 2/7 + </ul> + <li> Taylor series expansion <br/> + These coefficients can be obtained by a series expansion of a generic set of data [1 - 3]. + <ul> + <li> First order 1/12 + <li> Second order -1/12 + </ul> + <li> PI <br/> + This coefficient allows to define a second derivative estimator with + a notch feature at the nyquist frequency [1]. + <ul> + <li> Second order 1/4 + </ul> + </ul> + </p> + </td> + </tr> + </tbody> + </table> +</p> + +<h2><a name="examples"></a>Examples</h2> + +Consider <tt>a</tt> as a time series analysis object. First and second +derivative of <tt>a</tt> can be easily obtained with a call to +<a href="matlab:doc('ao/diff')">diff</a>. Please refer to +<a href="matlab:doc('ao/diff')">ao/diff</a> documantation page for the +meaning of any parameter. +<p> + Frequency response of first and second order estimators is reported in + figures 1 and 2 respectively. +</p> + +<h3>First derivative</h3> + +<div class="fragment"><pre> + + pl = plist(... + <span class="string">'method'</span>, <span class="string">'2POINT'</span>); + b = diff(a, pl); + + pl = plist(... + <span class="string">'method'</span>, <span class="string">'ORDER2SMOOTH'</span>); + c = diff(a, pl); + + pl = plist(... + <span class="string">'method'</span>, <span class="string">'3POINT'</span>); + d = diff(a, pl); + + pl = plist(... + <span class="string">'method'</span>, <span class="string">'5POINT'</span>); + e = diff(a, pl); + + pl = plist(... + <span class="string">'method'</span>, <span class="string">'FPS'</span>, ... + <span class="string">'ORDER'</span>, <span class="string">'FIRST'</span>, ... + <span class="string">'COEFF'</span>, -1/5); + f = diff(a, pl); + +</pre></div> + +<h3>Second derivative</h3> + +<div class="fragment"><pre> + + pl = plist(... + <span class="string">'method'</span>, <span class="string">'FPS'</span>, ... + <span class="string">'ORDER'</span>, <span class="string">'SECOND'</span>, ... + <span class="string">'COEFF'</span>, 2/7); + b = diff(a, pl); + + pl = plist(... + <span class="string">'method'</span>, <span class="string">'FPS'</span>, ... + <span class="string">'ORDER'</span>, <span class="string">'SECOND'</span>, ... + <span class="string">'COEFF'</span>, -1/12); + c = diff(a, pl); + + pl = plist(... + <span class="string">'method'</span>, <span class="string">'FPS'</span>, ... + <span class="string">'ORDER'</span>, <span class="string">'SECOND'</span>, ... + <span class="string">'COEFF'</span>, 1/4); + d = diff(a, pl); + +</pre></div> + + +<div align="center"> + <p> + <IMG src="images/sigproc_diff_algo05.png" align="center" border="0"> + </p> + <p> + <b> Figure 1:</b> Frequency response of first derivative estimators. + </p> + +</div> +<div align="center"> + <p> + </p> + <IMG src="images/sigproc_diff_algo06.png" align="center" border="0"> + <p> + <b> Figure 2:</b> Frequency response of second derivative estimators. + </p> +</div> + + +<h2><a name="references">References</a></h2> + +<ol> + <li> L. Ferraioli, M. Hueller and S. Vitale, Discrete derivative + estimation in LISA Pathfinder data reduction, + <a href="matlab:web('http://www.iop.org/EJ/abstract/0264-9381/26/9/094013/','-browser')">Class. Quantum Grav. 26 (2009) 094013.</a>. <br/> + L. Ferraioli, M. Hueller and S. Vitale, Discrete derivative + estimation in LISA Pathfinder data reduction + <a href="matlab:web('http://arxiv.org/abs/0903.0324v1','-browser')">arXiv:0903.0324v1</a> + <li> Steven E. Koonin and Dawn C. Meredith, Computational Physics, Westview Press (1990). + <li> John H. Mathews, Computer derivations of numerical differentiation formulae, + <i>Int. J. Math. Educ. Sci. Technol.<i>, 34:2, 280 - 287. +</ol> + + + + + + + +