Mercurial > hg > ltpda
diff m-toolbox/html_help/help/ug/whiten1D_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/whiten1D_content.html Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,204 @@ +<!-- +<p> + <ul> + <li><a href="#description">Description</a></li> + <li><a href="#call">Call</a></li> + <li><a href="#inputs">Inputs</a></li> + <li><a href="#outputs">Outputs</a></li> + <li><a href="#algorithm">Algorithm</a></li> + <li><a href="#parameters">Parameters</a></li> + <li><a href="#example">Example</a></li> + </ul> +</p> +--> +<h2><a name="description">Description</a></h2> + +<p> + whiten1D whitens input time-series. Whitening filter is constructed + by a fitting procedure to the model provided. If no model is provided, a + fit is made to a log-spectral-density estimate of the + time-series (made using lpsd). + Note: The function assumes that the input model corresponds + to the one-sided psd of the data to be whitened. +</p> + +<h2><a name="call">Call</a></h2> +<div class="fragment"> + <pre> + <br> + b = whiten1D(a, pl) + [b1,b2,...,bn] = whiten1D(a1,a2,...,an, pl); + </pre> +</div> + +<h2><a name="inputs">Inputs</a></h2> + +<p> + <ul> + <li> a - is a tsdata analysis object or a vector of tsdata analysis objects + <li> pl - is a plist with the input parameters. See the list of function parameters below + </ul> +</p> + +<h2><a name="outputs">Outputs</a></h2> + +<p> + <ul> + <li> b "whitened" time-series AOs. The whitening filters used + are stored in the objects procinfo field under the + parameter 'Filt'. + </ul> +</p> + +<h2><a name="algorithm">Algorithm</a></h2> + +<p> + <ol> + <li> If no model provided, make lpsd of time-series and take it + as a model for the data power spectral density + <li> Fit a set of partial fraction z-domain filters using + utils.math.psd2wf. The fit is automatically stopped when + the accuracy tolerance is reached. + <li> Convert to bank of MIIR filters. + <li> Filter time-series in parallel + </ol> +</p> +<p> + Accuracy tolerance criteria + <ul> + <li> No model provided <br/> + In such a case the algorithm try to extract a smooth model + from lpsd noisy data. Fit residuals spectral flatness is + compared with the 'FitTolerance' parameter. Fit is stopped + when residuals spectral flatness is larger than the + 'FitTolerance' parameter. Admitted values are 0 < tol < 1. + Recommended values are 0.5 < tol < 0.7. If out of range values + are provided the parameter is set to 0.5. + <li> Model provided <br/> + In such a case the algorithm try to exactly fit the input + model whitin the accuracy reported in 'FitTolerance'. Check + if the minimum of the logarithmic difference between data + and residuals is larger than a specified value. + Admitted values are tol>0. Recommended values are + 0.5 < tol < 2. if the conditioning value is 2, the function + ensures that the difference between data and residuals is + at lest 2 order of magnitude lower than data itsleves. If a + negative value is provided the tolerance is set to 1. + </ul> +</p> + + +<h2><a name="parameters">Parameters</a></h2> +<p> + <ul> + <li> 'Model' - a frequency-series AO describing the model + response to build the filter from. [default: lpsd + of time-series]. + <li> 'MaxIter' - Maximum number of iterations in fit routine + [default: 30] + <li> 'PoleType' - Choose the pole type for fitting: + <ul> + <li> 1 - use real starting poles. + <li> 2 - generates complex conjugate poles of the + type a.*exp(theta*pi*j) + with theta = linspace(0,pi,N/2+1). + <li> 3 - generates complex conjugate poles of the type + a.*exp(theta*pi*j) + with theta = linspace(0,pi,N/2+2) [default]. + </ul> + </li> + <li> 'MinOrder' - Minimum order to fit with. [default: 2]. + <li> 'MaxOrder' - Maximum order to fit with. [default: 25] + <li> 'Weights' - choose weighting for the fit: [default: 2] + <ul> + <li> 1 - equal weights for each point. + <li> 2 - weight with 1/abs(model). + <li> 3 - weight with 1/abs(model).^2. + <li> 4 - weight with inverse of the square mean spread of the model. + </ul> + </li> + <li> 'Plot' - plot results of each fitting step. [default: false] + <li> 'Disp' - Display the progress of the fitting iteration. + [default: false] + <li> 'FitTolerance' - Stopping fit tolerance condition. Be sure to + read the algorithm description to provide the + correct value. [default: 0.6] + <li> 'RMSEVar' - Root Mean Squared Error Variation - Check if the + variation of the RMS error is smaller than 10^(-b), + where b is the value given to the variable. This + option is useful for finding the minimum of Chi + squared. [default: 7]. + </ul> + parameters passed to lpsd() + <ul> + <li> 'Jdes' - The number of points in the power spectrum. + [default: help lpsd]. + <li> 'Win' - Spectral window used in spectral estimation. + [default: help lpsd]. + <li> 'Order' - order of segment detrending: [default: help lpsd] + <ul> + <li> -1 - no detrending + <li> 0 - subtract mean + <li> 1 - subtract linear fit + <li> N - subtract fit of polynomial, order N + </ul> + </ul> +</p> + +<h2><a name="example">Example</a></h2> + +<div class="fragment"> + <br> + <pre> + <span class="comment">% Generate white noise</span> + fs = 1; + a = ao(plist( <span class="string">'tsfcn'</span>, <span class="string">'randn(size(t))'</span>, <span class="string">'fs'</span>, fs, <span class="string">'nsecs'</span>, 10000, <span class="string">'yunits'</span>, <span class="string">'m'</span>, <span class="string">'name'</span>, <span class="string">'input'</span>)); + + <span class="comment">% filter </span> + pzm = pzmodel(1e-2, {0.01}, {0.1}); + ft = miir(pzm,plist( <span class="string">'fs'</span>,fs)); + + <span class="comment">% coloring white noise </span> + af = filter(a, ft); + + <span class="comment">% Whitening colored noise</span> + pl = plist(... + <span class="string">'model'</span>, [], ... + <span class="string">'MaxIter'</span>, 30, ... + <span class="string">'PoleType'</span>, 2, ... + <span class="string">'MinOrder'</span>, 2, ... + <span class="string">'MaxOrder'</span>, 9, ... + <span class="string">'Weights'</span>, 2, ... + <span class="string">'Plot'</span>, false,... + <span class="string">'Disp'</span>, false,... + <span class="string">'RMSEVar'</span>, 3,... + <span class="string">'FitTolerance'</span>, 0.6); <span class="comment">% tolerancee on fit residuals spectral flatness</span> + + aw = whiten1D(af,pl); + + <span class="comment">% Calculate psd of colored and whitened data </span> + afxx = af.psd; + awxx = aw.psd; + + <span class="comment">% plotting </span> + iplot(afxx,awxx) + </pre> +</div> +<br> +<br> +<p> + <div align="center"> + <IMG src="images/whiten1D_1.png" align="center" border="0"> + </div> +</p> + + + + + + + + + + +