diff m-toolbox/html_help/help/ug/ltpda_training_topic_1_3.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/ltpda_training_topic_1_3.html	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,382 @@
+<!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>Making a time-series AO (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;">&nbsp;</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=
+      "ltpda_training_topic_1_2.html"><img src="b_prev.gif" border="0" align=
+      "bottom" alt="Making AOs"></a>&nbsp;&nbsp;&nbsp;<a href=
+      "ltpda_training_topic_1_4.html"><img src="b_next.gif" border="0" align=
+      "bottom" alt="Basic math with AOs"></a></td>
+    </tr>
+  </table>
+
+  <h1 class="title"><a name="f3-12899" id="f3-12899"></a>Making a time-series AO</h1>
+  <hr>
+  
+  <p>
+	<h2>Exercise 4</h2>
+<p>
+  Time-series data are stored in a data object of the class <tt>tsdata</tt>.
+  As a user, you don't need to care about this, but it's sometimes
+  nice to know how things work. There are various ways (constructors)
+  to build time-series AOs. For example, you can give a set of values and
+  a sample rate like
+</p>
+<div class="fragment"><pre>
+  a = ao([1 2 3 4 5], 2)
+</pre></div>
+<p>
+  The first argument is the Y data vector; the second, the sample rate.
+</p>
+<p>
+  If you run this command in the MATLAB terminal you should see
+</p>
+<div class="fragment"><pre>
+>> a = ao([1 2 3 4 5], 2)
+M:     constructing from Y values and fs
+----------- ao 01: a -----------
+
+       name: ''
+       data: (0,1) (0.5,2) (1,3) (1.5,4) (2,5)
+             -------- tsdata 01 ------------
+
+                 fs:  2
+                  x:  [1 5], double
+                  y:  [1 5], double
+                 dx:  [0 0], double
+                 dy:  [0 0], double
+             xunits:  [s]
+             yunits:  []
+              nsecs:  2.5
+                 t0:  1970-01-01 00:00:00.000
+             -------------------------------
+
+       hist: ao / ao / SId: fromXYVals.m,v 1.10 2011/05/07 05:15:26 mauro Exp S-->SId: ao.m,v 1.346 2011/05/07 06:56:17 mauro Exp S
+description:
+       UUID: 2484d029-4616-4b22-8229-7685c8d3e847
+--------------------------------
+</pre></div>
+<p>
+  Now you see that the data type is <tt>tsdata</tt> and the X units are automatically
+  set to seconds ('s'). You can also see that the data series spans 2.5s
+  and that the first sample corresponds to 1970-01-01 00:00:00.000 UTC.
+  You can set further properties of the object, for example
+</p>
+<p>
+<div class="fragment"><pre>
+a.setT0(<span class="string">'2009-02-03 12:23:44'</span>);
+a.setDescription(<span class="string">'My lovely time-series'</span>)
+</pre></div>
+</p>
+<br>
+<p>
+  You can do all of this in one block on the workbench. To do that:
+  <ol>
+    <li>Start the workbench and create a new pipeline</li>
+    <li>Drag an AO constructor block from the library (or use "Quick Block")</li>
+    <li>Select the block and select the "From XY Values" parameter set</li>
+    <li>Click the "Set" button to set the parameters to the block</li>
+    <li>Double-click the value cell for the key "YVALS" and enter some values, e.g., <tt>1:10</tt></li>
+    <li>Double-click the value cell for the key "FS" and enter a sample frequency, e.g., <tt>2</tt>. By
+  setting a set of values for the Y-data and a sample rate, we tell the AO constructor that we want to
+    build a <tt>tsdata</tt> AO.</li>
+    <li>To set the name of the block, double click the block and enter a name in the dialog box. Automatic
+    setting of AO names from the block name only happens for constructor blocks. To the set the name of AOs
+      which are outputs of all other block types, use the <tt>setName</tt> block.
+    </li>
+    <li>You'll notice that the parameter list doesn't contain a <tt>T0</tt> parameter by default, but you can
+      easily add this parameter by clicking on the "plus" button below the parameter list. Enter the key <tt>T0</tt>
+    in the dialog box, and an appropriate value in the next dialog box. (Note: parameter key names are case
+  insensitive.)</li>
+    <li>You can do the same for the description, or any other property of the AO.</li>
+  </ol>
+</p>
+<p>
+  The final parameter list in this case might look like:
+</p>
+<img src="images/ltpda_training_1/topic1/tsdata_pset.png" alt="Time-series parameter set" border="1">
+
+<br>
+<br>
+<!-- Plists -->
+<h2>Digression: Introducing parameter lists</h2>
+<br>
+<p>
+  The time has come to go back to that <tt>plist</tt> command we saw earlier when plotting
+  the AO history via the graphviz renderer.
+</p>
+<p>
+  The following two commands are equivalent:
+</p>
+<div class="fragment"><pre>
+a = ao([1 2 3 4 5], 2);
+a = ao(plist(<span class="string">'yvals'</span>, [1 2 3 4 5], <span class="string">'fs'</span>, 2))
+</pre></div>
+<p>
+  Here we introduce the idea of parameter lists (<tt>plist</tt>). A <tt>plist</tt> is a list
+  of parameters, each parameter being defined by a key/value pair. The key of
+  a <tt>plist</tt> is always a string and is always case insensitive. The value can be
+  anything: a number, a string, another LTPDA object, a cell-array, a structure, etc. For more
+  information about parameter lists, see the <a href="plist_intro.html">appropriate section</a>
+  of the LTPDA user manual.
+</p>
+<p>
+  Going on with time-series objects: The following is almost equivalent:
+</p>
+<div class="fragment"><pre>
+  a = ao(plist(<span class="string">'xvals'</span>, [0 0.5 1 1.5 2], <span class="string">'yvals'</span>, [1 2 3 4 5]))
+</pre></div>
+<p>
+  The difference is, if you run this command, you will see that the resulting
+  AO has data of type <tt>xydata</tt>. To make this a time-series object,
+  we need to tell the constructor some more information. Either you need to
+  specify the sample-rate, or you can explicitly set the data type:
+</p>
+<div class="fragment"><pre>
+  a = ao(plist(<span class="string">'xvals'</span>, [0 0.5 1 1.5 2], <span class="string">'yvals'</span>, [1 2 3 4 5], <span class="string">'fs'</span>, 2))
+  a = ao(plist(<span class="string">'xvals'</span>, [0 0.5 1 1.5 2], <span class="string">'yvals'</span>, [1 2 3 4 5], <span class="string">'type'</span>,...
+        <span class="string">'tsdata'</span>))
+</pre></div>
+<p>
+  <table cellspacing="0" class="note" summary="Note" cellpadding="5" border="1">
+    <tr width="90%">
+      <td>
+        The elipsis (<tt>...</tt>) in MATLAB means join the two lines.
+      </td>
+    </tr>
+  </table>
+</p>
+<p>
+  If you specify the samples rate with the key 'fs', then the 'xvals'
+  are just ignored. If you tell the data type with the key 'type', then
+  the sample rate is computed from the 'xvals'.
+</p>
+<p>
+  You can add additional parameters to these constructor lines. For example,
+</p>
+<div class="fragment"><pre>
+a = ao(plist(<span class="string">'xvals'</span>, [0 0.5 1 1.5 2], <span class="string">'yvals'</span>, [1 2 3 4 5], ...
+                  <span class="string">'type'</span>, <span class="string">'tsdata'</span>, ...
+                  <span class="string">'name'</span>, <span class="string">'Bob'</span>, ...
+                  <span class="string">'t0'</span>, <span class="string">'2008-09-01'</span>))
+</pre></div>
+<p>
+  There are other constructors which make constructing time-series AOs from
+  simulated data more convenient. Two of these are discussed below.
+</p>
+<br>
+<!-- Time-series f(t) -->
+<h2>Times-series AO as a function of <tt>t</tt></h2>
+<br>
+<p>
+  If you want to specify your time-series as a function of the variable <tt>t</tt>,
+  then you can use the following constructor:
+</p>
+<div class="fragment"><pre>
+  a = ao(plist(<span class="string">'tsfcn'</span>, <span class="string">'t.^2 + t'</span>, ...
+  <span class="string">'fs'</span>, 10, <span class="string">'nsecs'</span>, 1000))
+</pre></div>
+<p>
+  You specify the function of t with the key 'tsfcn', then give the sample
+  rate and the number of seconds. If you run this command you should see the output:
+</p>
+<div class="fragment"><pre>
+>> a = ao(plist('tsfcn', 't.^2 + t', 'fs', 10, 'nsecs', 1000))
+M:     constructing from plist
+----------- ao 01: a -----------
+
+       name: ''
+       data: (0,0) (0.1,0.11) (0.2,0.24) (0.3,0.39) (0.4,0.56) ...
+             -------- tsdata 01 ------------
+
+                 fs:  10
+                  x:  [10000 1], double
+                  y:  [10000 1], double
+                 dx:  [0 0], double
+                 dy:  [0 0], double
+             xunits:  [s]
+             yunits:  []
+              nsecs:  1000
+                 t0:  1970-01-01 00:00:00.000
+             -------------------------------
+
+       hist: ao / ao / SId: fromTSfcn.m,v 1.22 2010/07/28 16:31:01 ingo Exp S-->SId: ao.m,v 1.346 2011/05/07 06:56:17 mauro Exp S
+description:
+       UUID: d01615d6-82ad-4736-8a0e-4096dc023149
+--------------------------------
+</pre></div>
+<p>
+  You can write any valid MATLAB expression as a function of <tt>t</tt>.
+</p>
+<p>
+  Plists can be reused, of course. Suppose we define a recipe for an AO as
+</p>
+<div class="fragment"><pre>
+  pl = plist(<span class="string">'tsfcn'</span>, <span class="string">'randn(size(t))'</span>, <span class="string">'fs'</span>, 10, <span class="string">'nsecs'</span>, 1000)
+</pre></div>
+<p>
+  then we can make repeated AOs from this recipe:
+</p>
+<div class="fragment"><pre>
+a1 = ao(pl)
+a2 = ao(pl)
+<span class="comment">% Or use the random factory:</span>
+<span class="comment">% a = ao.randn(nsecs, fs)</span>
+a3 = ao.randn(1000, 10)
+</pre></div>
+<p>
+  Here we have made three AOs with different random white-noise data vectors.
+</p>
+<br>
+<h2>Digression: plotting the data</h2>
+<br>
+<p>
+  To plot the data in the AO, you can use the intelligent plotting method, <tt>iplot</tt>.
+  For example, type in the MATLAB terminal:
+</p>
+<div class="fragment"><pre>
+  a1.iplot
+</pre></div>
+<p>
+  and you should see a plot like the one below.
+</p>
+<img src="images/ltpda_training_1/topic1/iplot1.png" alt="iplot example 1" border="1">
+<p>
+  We can make a more interesting plot if we first specify some of the properties
+  of the AOs. For example, type the following commands to set the names and
+  Y units of the two AOs we made earlier:
+</p>
+<div class="fragment"><pre>
+a1.setName
+a2.setName
+setYunits(a1,a2,<span class="string">'N'</span>)
+</pre></div>
+<p>
+  Now plot both time-series together with:
+</p>
+<div class="fragment"><pre>
+iplot(a1,a2)
+</pre></div>
+<p>
+  and you shoud see a plot like the following:
+</p>
+<img src="images/ltpda_training_1/topic1/iplot2.png" alt="iplot example 2" border="1">
+<p>
+  <table cellspacing="0" class="note" summary="Note" cellpadding="5" border="1">
+    <tr width="90%">
+      <td>
+        Calling the <tt>setName</tt> method with no input argument causes the AO to be
+        named with the variable name.
+      </td>
+    </tr>
+  </table>
+</p>
+<p>
+  <tt>iplot</tt> has many configurable parameters which are (mostly) documented in the help.
+</p>
+<br>
+<!-- Time-series waveform -->
+<h2>Times-series AO from built in waveforms</h2>
+<br>
+<p>
+  MATLAB has various functions for creating standard waveforms, for example,
+  sine waves, square waves, and saw-tooth signals. These are available as
+  convenient AO constructors. For example suppose we want to create a
+  square-wave pulse train with a 30% duty cycle at 2Hz sampled at
+  100Hz lasting for 5s, then we can do
+</p>
+<div class="fragment"><pre>
+sw = ao(plist(<span class="string">'waveform'</span>, <span class="string">'square wave'</span>, <span class="string">'f'</span>, 2, <span class="string">'duty'</span>, 30, ...
+    <span class="string">'fs'</span>, 100, <span class="string">'nsecs'</span>, 5))
+</pre></div>
+<p>
+  If you run that command and plot the result, you should see the square wave you were expecting:
+</p>
+<img src="images/ltpda_training_1/topic1/iplot_squarewave.png" alt="iplot squarewave" border="1">
+<p>
+  You can construct various different waveforms, but each has different parameters
+  to set. The help of the AO method details the possibilities (<tt>help ao -> click on "Parameters Description" -> select "From Window"</tt>); here is the relevant extract:
+</p>
+<div class="fragment"><pre>
+    'waveform' - a waveform description (see options below).
+
+                 You can also specify additional parameters:
+                 'fs'      - sampling frequency [default: 10 Hz]
+                 'nsecs'   - length in seconds [default: 10 s]
+                 't0'      - time-stamp of the first data sample [default time(0)]
+
+                 and, for the following waveform types:
+                 'sine wave'      - 'A', 'f', 'phi', 'nsecs', 'toff'
+                                    (can be vectors for sum of sine waves)
+                        'A'       - Amplitude of the wave
+                        'f'       - Frequency of the wave
+                        'phi'     - Phase of the eave
+                        'nsecs'   - Number of seconds  (in seconds)
+                        'toff'    - Offset of the wave (in seconds)
+                        'gaps'    - Instead of defining an offset it is possible to
+                                    define a gap (in seconds) before the sine wave.
+                 'noise'          - 'type' (can be 'Normal' or 'Uniform')
+                                    'sigma' specify the standard deviation
+                 'chirp'          - 'f0', 'f1', 't1'      (help chirp)
+                 'gaussian pulse' - 'f0', 'bw'            (help gauspuls)
+                 'square wave'    - 'f', 'duty'           (help square)
+                 'sawtooth'       - 'f', 'width'          (help sawtooth)
+
+                 You can also specify the initial time (t0) associated with
+                 the time-series by passing a parameter 't0' with a value
+                 that is a time object.
+</pre></div>
+
+
+
+
+
+  </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="ltpda_training_topic_1_2.html"><img src=
+      "b_prev.gif" border="0" align="bottom" alt=
+      "Making AOs"></a>&nbsp;</td>
+
+      <td align="left">Making AOs</td>
+
+      <td>&nbsp;</td>
+
+      <td align="right">Basic math with AOs</td>
+
+      <td align="right" width="20"><a href=
+      "ltpda_training_topic_1_4.html"><img src="b_next.gif" border="0" align=
+      "bottom" alt="Basic math with AOs"></a></td>
+    </tr>
+  </table><br>
+
+  <p class="copy">&copy;LTP Team</p>
+</body>
+</html>