Mercurial > hg > ltpda
diff m-toolbox/html_help/help/ug/specwin_using_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/specwin_using_content.html Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,78 @@ +<p> + Spectral windows are typically used in spectral analysis algorithms. In all LTPDA spectral analysis + functions, spectral windows are specified as parameters in an input parameter list. The following + example shows the use of <tt>ao/psd</tt> to estimate an Amplitude Spectral Density of + the time-series captured in the input AO, <tt>a</tt>. The help for <a href="matlab:doc('ao/ao/psd')">ao/lpsd</a> + reveals that the required parameter for setting the window function is <tt>'Win'</tt>. +</p> +<div class="fragment"><pre> + <br> <span class="comment">% Parameters</span> + nsecs = 1000; + fs = 10; + + <span class="comment">% Create input AOs</span> + x1 = 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)); + x2 = 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)); + + <span class="comment">% Add both</span> + x = x1 + x2; + + <span class="comment">% Compute psd with Blackman-Harris window</span> + z = psd(x,plist(<span class="string">'win'</span>,<span class="string">'BH92'</span>)); + + <span class="comment">% Plot</span> + iplot(z); +</pre></div> +<p> + In this case, the size of the spectral window (number of samples) may not match the length + of the segments in the spectral estimation. The <tt>psd</tt> algorithm then + recomputes the window using the input design but for the correct length of window function. +</p> + +<img src="images/specwin_using1.png" > + +<h2>Selecting the Peak Side-Lobe level (psll) with Kaiser's window</h2> +<p> + The <a href="specwin_description.html">table</a> in the previous section shows how each standard spectral window is defined by the + Peak Side-Lobe level (<tt>psll</tt>). However, Kaiser's window allows the user to define the <tt>psll</tt> of the window. +</p> +<p> + The following example shows the importance of selecting a suitable <tt>psll</tt> according to each application. The example creates + 1/f noise (in fact, noise generated + by a pole-zero model with a pole at low frequencies) and computes the Amplitude Spectrum Density (ASD) with three different <tt>psll</tt> + values. The ASD with the lowest value shows a bias at high frequencies compared with the response of the pzmodel used to generate + the data (in black). This effect is due to the power added by the high order lobes of the window. The ASD with the highet value of the + <tt>psll</tt> adds a feature at low frequencies because the main lobe of the window is too wide. Only the + middle value gives an estimation of the ASD without adding window related features. +</p> + +<div class="fragment"><pre> + <br> <span class="comment">% Parameters</span> + nsecs = 10000; + fs = 1; + + <span class="comment">% Create pzmodel with a low frequency pole</span> + pzm = pzmodel(1e5,[1e-7,0.1],[]); + + <span class="comment">% Build (nearly) 1/f noise</span> + x = ao(plist(<span class="string">'pzmodel'</span>,pzm, <span class="string">'nsecs'</span>,nsecs, <span class="string">'fs'</span>,fs)); + + <span class="comment">% Compute psd with Blackman-Harris window</span> + z1 = psd(x,plist(<span class="string">'scale'</span>,<span class="string">'ASD'</span>,<span class="string">'win'</span>,<span class="string">'Kaiser'</span>,<span class="string">'psll'</span>,50)); + z1.setName(<span class="string">'psll = 50'</span>); + z2 = psd(x,plist('scale',<span class="string">'ASD'</span>,<span class="string">'win'</span>,<span class="string">'Kaiser'</span>,<span class="string">'psll'</span>,100)); + z2.setName(<span class="string">'psll = 100'</span>); + z3 = psd(x,plist(<span class="string">'scale'</span>,<span class="string">'ASD'</span>,<span class="string">'win'</span>,<span class="string">'Kaiser'</span>,<span class="string">'psll'</span>,1000)); + z3.setName(<span class="string">'psll = 1000'</span>); + + <span class="comment">% Plot</span> + r = resp(pzm,plist(<span class="string">'f1'</span>,1e-4,<span class="string">'f2'</span>,1)); + r.setName(<span class="string">'response'</span>) + r.setPlotinfo(plist(<span class="string">'color'</span>,<span class="string">'k'</span>)) + iplot(z1,z2,z3,abs(r)); +</pre></div> + +<img src="images/specwin_using2.png" > + + +