0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 <h2>Description</h2>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 2 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 3 Gaps in data can be filled with <i>interpolated</i> data if desired. LTPDA <a href="matlab:doc('ao/gapfilling')"><tt>gapfilling</tt></a> joins two AOs
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 4 by means of a segment of <i>synthetic</i> data. This segment is calculated from the two input AOs. Two different
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 methods are possible to fill the gap in the data: <tt>linear</tt> and <tt>spline</tt>. The former fills the data
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 by means of a linear interpolation whereas the latter uses a smoother curve ---see examples below.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 <h2>Syntax</h2>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 <div class="fragment"><pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 b = gapfilling(a1, a2, pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14 </pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 where <tt>a1</tt> and <tt>a2</tt> are the two segments to join.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 <h2>Parameters</h2>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 The following parameters apply for this method:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 <ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22 <li><tt>'method'</tt> - method used to interpolate missing data (see below for details)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 <ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24 <li> <tt>'linear'</tt> (default option) </li>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 <li> <tt>'spline'</tt> </li>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26 </ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 <li><tt>'addnoise'</tt> - with this option <i>noise</i> can be
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28 added to the interpolated data.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 This noise is defined as a <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 random variable with
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31 zero mean and variance equal to the high-frequency
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 noise of the input AO. </li>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 </ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 <h2>Algorithm</h2>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40 <b>Linear :</b> The gap is filled using a linear approximation.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 <IMG src="images/spike50x.png" width="205" height="27" border="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 the notation used in the previous expression is schematically explained in the figure below
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 <img src="images/interplinear1.png" border="1" width="400px">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59 <b>Spline :</b> a third order interpolation is used in this case
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64 <IMG src="images/spike51x.png" width="237" height="16" border="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 The parameters <tt>a</tt>, <tt>b</tt>, <tt>c</tt> and <tt>d</tt> are calculated
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70 by solving next system of equations:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 71 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 72 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74 <IMG src="images/spike52x.png" width="205" height="117" border="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 76 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 77 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 78 The result is schematically shown in the figure below
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 79 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 80 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 81 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 82 <img src="images/interpspline.png" border="0" width="400px">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 83 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 84 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 85 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 86 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 87 <h2>Examples</h2>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 88 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 89 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 90 1. Missing data between two vectors of random data interpolated with the <tt>linear</tt> method.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 91 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 92 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 93 <div class="fragment"><pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 94 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 95 x1 = ao(plist(<span class="string">'waveform'</span>,<span class="string">'noise'</span>,<span class="string">'nsecs'</span>,1e3,<span class="string">'fs'</span>,10,<span class="string">'name'</span>,<span class="string">'noise'</span>)); <span class="comment">% create an AO of random data</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 96 xs = split(x1,plist(<span class="string">'chunks'</span>,3)); <span class="comment">% split in three segments</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 97 pl = plist( <span class="string">'method'</span>, <span class="string"> 'linear'</span>, <span class="string">'addnoise'</span>, <span class="string">'no'</span>); <span class="comment">% linear gapfilling</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 98 y = gapfilling(xs(1),xs(3), pl); <span class="comment">% fill between 2nd and 3rd segment</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 99 iplot(x1,y)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 100 </pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 101 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 102 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 103 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 104 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 105 <img src="images/gapexample1.png" border="1" >
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 106 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 107 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 108 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 109 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 110 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 111 2. Missing data between two data vectors interpolated with the <tt>spline</tt> method.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 112 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 113 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 114 <div class="fragment"><pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 115 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 116 x1 = ao(plist(<span class="string">'tsfcn'</span>,<span class="string">'t.^1.8 + 1e6*rand(size(t))'</span>,<span class="string">'nsecs'</span>,5e3,<span class="string">'fs'</span>,10,<span class="string">'name'</span>,<span class="string">'noise'</span>)); <span class="comment">% create an AO</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 117 xs = split(x1,plist(<span class="string">'chunks'</span>,3)); <span class="comment">% split in three segments</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 118 pl = plist( <span class="string">'method'</span>, <span class="string"> 'spline'</span>, <span class="string">'addnoise'</span>, <span class="string">'no'</span>); <span class="comment">% cubic gapfilling</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 119 y = gapfilling(xs(1),xs(3), pl); <span class="comment">% fill between 2nd and 3rd segment</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 120 iplot(x1,y)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 121 </pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 122 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 123 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 124 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 125 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 126 <img src="images/gapexample2.png" border="1">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 127 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 128 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 129
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 130
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 131