Mercurial > hg > ltpda
view m-toolbox/html_help/help/ug/sigproc_tfe.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 source
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> <html lang="en"> <head> <meta name="generator" content= "HTML Tidy for Mac OS X (vers 1st December 2004), see www.w3.org"> <meta http-equiv="Content-Type" content= "text/html; charset=us-ascii"> <title>Transfer function estimates (LTPDA Toolbox)</title> <link rel="stylesheet" href="docstyle.css" type="text/css"> <meta name="generator" content="DocBook XSL Stylesheets V1.52.2"> <meta name="description" content= "Presents an overview of the features, system requirements, and starting the toolbox."> </head> <body> <a name="top_of_page" id="top_of_page"></a> <p style="font-size:1px;"> </p> <table class="nav" summary="Navigation aid" border="0" width= "100%" cellpadding="0" cellspacing="0"> <tr> <td valign="baseline"><b>LTPDA Toolbox</b></td><td><a href="../helptoc.html">contents</a></td> <td valign="baseline" align="right"><a href= "sigproc_cohere.html"><img src="b_prev.gif" border="0" align= "bottom" alt="Cross coherence estimates"></a> <a href= "sigproc_lpsd.html"><img src="b_next.gif" border="0" align= "bottom" alt="Log-scale power spectral density estimates"></a></td> </tr> </table> <h1 class="title"><a name="f3-12899" id="f3-12899"></a>Transfer function estimates</h1> <hr> <p> <h2>Description</h2> <p> The LTPDA method <a href="matlab:doc('ao/tfe')">ao/tfe</a> estimates the transfer function of time-series signals, included in the input <tt>ao</tt>s following the Welch's averaged, modified periodogram method <a href="#references">[1]</a>. Data are windowed prior to the estimation of the spectra, by multiplying it with a <a href="specwin.html">spectral window object</a>, and can be detrended by polinomial of time in order to reduce the impact of the border discontinuities. The window length is adjustable to shorter lenghts to reduce the spectral density uncertainties, and the percentage of subsequent window overlap can be adjusted as well. <br> <br> <h2>Syntax</h2> </p> <div class="fragment"><pre> <br> b = tfe(a1,a2,pl) </pre> </div> <p> <tt>a1</tt> and <tt>a2</tt> are the 2 <tt>ao</tt>s containing the input time series to be evaluated, <tt>b</tt> is the output object and <tt>pl</tt> is an optional parameters list. </p> <h2>Parameters</h2> The parameter list <tt>pl</tt> includes the following parameters: <ul> <li> <tt>'Nfft'</tt> - number of samples in each fft [default: length of input data] A string value containing the variable 'fs' can also be used, e.g., plist('Nfft', '2*fs') </li> <li> <tt>'Win'</tt> - the window to be applied to the data to remove the discontinuities at edges of segments. [default: taken from user prefs].<br> The window is described by a string with its name and, only in the case of Kaiser window, the additional parameter <tt>'psll'</tt>. <br>For instance: plist('Win', 'Kaiser', 'psll', 200). </li> <li> <tt>'Olap'</tt> - segment percent overlap [default: -1, (taken from window function)] </li> <li> <tt>'Order'</tt> - order of segment detrending <ul> <li> -1 - no detrending </li> <li> 0 - subtract mean [default] </li> <li> 1 - subtract linear fit </li> <li> N - subtract fit of polynomial, order N </li> </ul> </li> <li><tt>'Navs'</tt> - number of averages. If set, and if Nfft was set to 0 or -1, the number of points for each window will be calculated to match the request. [default: -1, not set] </li> <li><tt>'Times'</tt> - interval of time to evaluate the calculation on. If empty [default], it will take the whole section.</li> </ul> The length of the window is set by the value of the parameter <tt>'Nfft'</tt>, so that the window is actually rebuilt using only the key features of the window, i.e. the name and, for Kaiser windows, the PSLL. </p> <p>As an alternative to setting the number of points <tt>'Nfft'</tt> in each window, it's possible to ask for a given number of TFE estimates by setting the <tt>'Navs'</tt> parameter, and the algorithm takes care of calculating the correct window length, according to the amount of overlap between subsequent segments.</p> <p> <table cellspacing="0" class="note" summary="Note" cellpadding="5" border="1"> <tr width="90%"> <td> If the user doesn't specify the value of a given parameter, the default value is used. </td> </tr> </table> </p> <p>The function makes transfer functions estimates between the 2 input <tt>ao</tt>s, and the output will contain the transfer function estimate from the first <tt>ao</tt> to the second.</p> <h2>Algorithm</h2> <p> The algorithm is based in standard MATLAB's tools, as the ones used by <a href="matlab:doc('pwelch')">pwelch</a>. The standard deviation of the mean is computed as <div align="center"> <img src="images/tfe_sigma1.png" > </div> where <div align="center"> <img src="images/tfe_sigma2.png" > </div> is the coherence function. </p> <h2>Example</h2> <p> Evaluation of the transfer function between two time-series represented by: a low frequency sinewave signal superimposed to white noise, and a low frequency sinewave signal at the same frequency, phase shifted and with different amplitude, superimposed to white noise. </p> <div class="fragment"><pre> <br> <span class="comment">% parameters</span> nsecs = 1000; fs = 10; <span class="comment">% create first signal AO</span> x = ao(plist(<span class="string">'waveform'</span>,<span class="string">'sine wave'</span>,<span class="string">'f'</span>,0.1,<span class="string">'A'</span>,1,<span class="string">'nsecs'</span>,nsecs,<span class="string">'fs'</span>,fs)) + ... ao(plist(<span class="string">'waveform'</span>,<span class="string">'noise'</span>,<span class="string">'type'</span>,<span class="string">'normal'</span>,<span class="string">'nsecs'</span>,nsecs,<span class="string">'fs'</span>,fs)); x.setYunits(<span class="string">'m'</span>); <span class="comment">% create second signal AO</span> y = ao(plist(<span class="string">'waveform'</span>,<span class="string">'sine wave'</span>,<span class="string">'f'</span>,0.1,<span class="string">'A'</span>,2,<span class="string">'nsecs'</span>,nsecs,<span class="string">'fs'</span>,fs,<span class="string">'phi'</span>,90)) + ... 0.1*ao(plist(<span class="string">'waveform'</span>,<span class="string">'noise'</span>,<span class="string">'type'</span>,<span class="string">'normal'</span>,<span class="string">'nsecs'</span>,nsecs,<span class="string">'fs'</span>,fs)); y.setYunits(<span class="string">'rad'</span>); <span class="comment">% compute transfer function</span> nfft = 1000; psll = 200; Txy = tfe(x,y,plist(<span class="string">'win'</span>,<span class="string">'Kaiser'</span>,<span class="string">'psll'</span>,psll,<span class="string">'nfft'</span>,nfft)); <span class="comment">% plot</span> iplot(Txy) </pre> </div> <br> <img src="images/transfer_1.png" alt="" border="3"> <h2><a name="references">References</a></h2> <ol> <li> P.D. Welch, The Use of Fast Fourier Transform for the Estimation of Power Spectra: A Method Based on Time Averaging Over Short, Modified Periodograms, <i>IEEE Trans. on Audio and Electroacoustics</i>, Vol. 15, No. 2 (1967), pp. 70 - 73.</a></li> </ol> </p> <br> <br> <table class="nav" summary="Navigation aid" border="0" width= "100%" cellpadding="0" cellspacing="0"> <tr valign="top"> <td align="left" width="20"><a href="sigproc_cohere.html"><img src= "b_prev.gif" border="0" align="bottom" alt= "Cross coherence estimates"></a> </td> <td align="left">Cross coherence estimates</td> <td> </td> <td align="right">Log-scale power spectral density estimates</td> <td align="right" width="20"><a href= "sigproc_lpsd.html"><img src="b_next.gif" border="0" align= "bottom" alt="Log-scale power spectral density estimates"></a></td> </tr> </table><br> <p class="copy">©LTP Team</p> </body> </html>