0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 2 "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 3
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 4 <html lang="en">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 <head>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 <meta name="generator" content=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 "HTML Tidy for Mac OS X (vers 1st December 2004), see www.w3.org">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8 <meta http-equiv="Content-Type" content=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 "text/html; charset=us-ascii">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 <title>System identification in z-domain (LTPDA Toolbox)</title>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 <link rel="stylesheet" href="docstyle.css" type="text/css">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 <meta name="generator" content="DocBook XSL Stylesheets V1.52.2">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14 <meta name="description" content=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 "Presents an overview of the features, system requirements, and starting the toolbox.">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 </head>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 <body>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 <a name="top_of_page" id="top_of_page"></a>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 <p style="font-size:1px;"> </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 <table class="nav" summary="Navigation aid" border="0" width=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24 "100%" cellpadding="0" cellspacing="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 <tr>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26 <td valign="baseline"><b>LTPDA Toolbox</b></td><td><a href="../helptoc.html">contents</a></td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28 <td valign="baseline" align="right"><a href=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 "ltpda_training_topic_5.html"><img src="b_prev.gif" border="0" align=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 "bottom" alt="Topic 5 - Model fitting"></a> <a href=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31 "ltpda_training_topic_5_2.html"><img src="b_next.gif" border="0" align=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 "bottom" alt="Generation of noise with given PSD"></a></td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33 </tr>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 </table>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36 <h1 class="title"><a name="f3-12899" id="f3-12899"></a>System identification in z-domain</h1>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 <hr>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 System identification in Z-domain is performed with the function <tt>ao/zDomainFit</tt>.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 It is based on a modified version of the vector fitting algorithm that was
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 adapted to fit in the Z-domain. Details of the agorithm can be found in the
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 <a href="zdomainfit.html">Z-domain fit documentation page</a></li>.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 <h2> System identification in Z-domain </h2>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 During this exercise we will:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 <ol>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 <li> Generate white noise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 <li> Filter white noise with a <tt>miir</tt> filter generated by a <tt> pzmodel</tt>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 <li> Extract the transfer function from data
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 <li> Fit the transfer function with <tt>ao/zDomainFit</tt>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56 <li> Check results
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 </ol>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 Let's start by generating some white noise.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64 <div class="fragment"><pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 a = ao(plist(<span class="string">'tsfcn'</span>, <span class="string">'randn(size(t))'</span>, <span class="string">'fs'</span>, 1, <span class="string">'nsecs'</span>, 10000,<span class="string">'yunits'</span>,<span class="string">'m'</span>));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 </pre></div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68 This command generates a time series of gaussian distributed random noise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 with a sampling frequency (<span class="string">'fs'</span>) of 1 Hz,
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70 10000 seconds long (<span class="string">'nsecs'</span>) and with
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 71 <span class="string">'yunits'</span> set to meters (<span class="string">'m'</span>).
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 72 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74 Now we are ready to move on the second step where we will:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75 <ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 76 <li> Build a pole-zero model (<tt>pzmodel</tt>)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 77 <li> Construct a <tt>miir</tt> filter from the <tt>pzmodel</tt>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 78 <li> filter white noise data with the <tt>miir</tt> filter in order to obtain a
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 79 colored noise time series.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 80 </ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 81
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 82 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 83 <div class="fragment"><pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 84 pzm = pzmodel(1, [0.005 2], [0.05 4]);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 85
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 86 filt = miir(pzm, plist(<span class="string">'fs'</span>, 1, <span class="string">'name'</span>, <span class="string">'None'</span>));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 87 filt.setIunits(<span class="string">'m'</span>);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 88 filt.setOunits(<span class="string">'V'</span>);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 89
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 90 <span class="comment">% Filter the data</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 91 ac = filter(a,filt);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 92 ac.simplifyYunits;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 93 </pre></div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 94 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 95 We can calculate the PSD of the data streams in order to check the difference between the coloured noise and the
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 96 white noise. Let's choose the log-scale estimation method.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 97 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 98 <div class="fragment"><pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 99 axx = lpsd(a);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 100 acxx = lpsd(ac);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 101 iplot(axx,acxx)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 102 </pre></div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 103 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 104 You should obtain a plot similar to this:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 105 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 106 <IMG src="images/ltpda_training_1/topic5/ltpda_training_5_1_1.png" align="center" border="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 107 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 108 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 109 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 110 Let us move to the third step. We will generate the transfer function from the data
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 111 and split it in order to remove the first 3 bins. The last operation is useful
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 112 for the fitting process.
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 tf = ltfe(a,ac);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 116 tfsp = split(tf,plist(<span class="string">'frequencies'</span>, [5e-4 5e-1]));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 117
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 118 iplot(tf,tfsp)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 119 </pre></div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 120 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 121 The plot should look like the following:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 122 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 123 <IMG src="images/ltpda_training_1/topic5/ltpda_training_5_1_2.png" align="center" border="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 124 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 125 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 126 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 127 It is now the moment to start fitting with <tt>zDomainFit</tt>. As reported in the
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 128 function help page we can run an automatic search loop to identify proper model order.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 129 In such a case we have to define a set of conditions to check fit accuracy and to exit the fitting loop.<br/>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 130 We can start checking Mean Squared Error and variation (CONDTYPE = 'MSE').
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 131 It checks if the normalized mean squared error is lower than the value specified in the parameter FITTOL
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 132 and if the relative variation of the mean squared error is lower than the value specified in the parameter MSEVARTOL.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 133 <p><!-- Table of the set: Default -->
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 134 <a name="1"/>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 135 <table cellspacing="0" class="body" cellpadding="4" summary="" width="100%" border="2">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 136 <colgroup>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 137 <col width="15%"/>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 138 <col width="20%"/>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 139 <col width="20%"/>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 140 <col width="45%"/>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 141 </colgroup>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 142 <thead>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 143 <tr valign="top">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 144 <th bgcolor="#B9C6DD" colspan="4"><h3>Default</h3></th>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 145 </tr>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 146 <tr valign="top">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 147 <th bgcolor="#D7D7D7">Key</th>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 148 <th bgcolor="#D7D7D7">Default Value</th>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 149 <th bgcolor="#D7D7D7">Options</th>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 150 <th bgcolor="#D7D7D7">Description</th>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 151 </tr>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 152 </thead>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 153 <tbody>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 154 <tr valign="top">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 155 <td bgcolor="#F2F2F2">CONDTYPE</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 156 <td bgcolor="#F2F2F2">'MSE'</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 157 <td bgcolor="#F2F2F2">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 158 <ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 159 <li><font color="#1111FF">'MSE'</font></li>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 160 <li><font color="#1111FF">'RLD'</font></li>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 161 <li><font color="#1111FF">'RSF'</font></li>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 162 </ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 163 </td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 164 <td bgcolor="#F2F2F2">Fit conditioning type. Admitted values are:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 165 <ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 166 <li>'MSE' Mean Squared Error and variation</li>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 167 <li>'RLD' Log residuals difference and mean squared error variation</li>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 168 <li>'RSF' Residuals spectral flatness and mean squared error variation</li>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 169 </ul>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 170 </td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 171 </tr>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 172 <tr valign="top">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 173 <td bgcolor="#F2F2F2">FITTOL</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 174 <td bgcolor="#F2F2F2">0.001</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 175 <td bgcolor="#F2F2F2"><i>none</i></td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 176 <td bgcolor="#F2F2F2">Fit tolerance.</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 177 </tr>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 178 <tr valign="top">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 179 <td bgcolor="#F2F2F2">MSEVARTOL</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 180 <td bgcolor="#F2F2F2">0.01</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 181 <td bgcolor="#F2F2F2"><i>none</i></td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 182 <td bgcolor="#F2F2F2">Mean Squared Error Variation - Check if the<br/>relative variation of the mean squared error is<br/>smaller than the value specified. This<br/>option is useful for finding the minimum of the Chi-squared.</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 183 </tr>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 184 </tbody>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 185 </table>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 186 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 187 <p>You will find a list of all Parameters of zDomainFit here: <a href="matlab:web(ao.getInfo('zDomainFit').tohtml, '-helpbrowser')">Parameter of zDomainFit</a></p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 188
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 189 Now let's run the fit:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 190 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 191 <div class="fragment"><pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 192 <span class="comment">% Set up the parameters</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 193 plfit = plist(<span class="string">'fs'</span>,1,... <span class="comment">% Sampling frequency for the model filters</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 194 <span class="string">'AutoSearch'</span>,<span class="string">'on'</span>,... <span class="comment">% Automatically search for a good model</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 195 <span class="string">'StartPolesOpt'</span>,<span class="string">'clog'</span>,... <span class="comment">% Define the properties of the starting poles - complex distributed in the unitary circle</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 196 <span class="string">'maxiter'</span>,50,... <span class="comment">% Maximum number of iteration per model order</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 197 <span class="string">'minorder'</span>,2,... <span class="comment">% Minimum model order</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 198 <span class="string">'maxorder'</span>,9,... <span class="comment">% Maximum model order</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 199 <span class="string">'weightparam'</span>,<span class="string">'abs'</span>,... <span class="comment">% Assign weights as 1./abs(data)</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 200 <span class="string">'condtype'</span>,<span class="string">'MSE'</span>,... <span class="comment">% Mean Squared Error and variation</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 201 <span class="string">'fittol'</span>,1e-2,... <span class="comment">% Fit tolerance</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 202 <span class="string">'msevartol'</span>,1e-1,... <span class="comment">% Mean Squared Error Variation tolerance</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 203 <span class="string">'Plot'</span>,<span class="string">'on'</span>,... <span class="comment">% Set the plot on or off</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 204 <span class="string">'ForceStability'</span>,<span class="string">'on'</span>,... <span class="comment">% Force to output a stable poles model</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 205 <span class="string">'CheckProgress'</span>,<span class="string">'off'</span>); <span class="comment">% Display fitting progress on the command window</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 206
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 207 <span class="comment">% Do the fit</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 208 fobj = zDomainFit(tfsp,plfit);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 209
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 210 <span class="comment">% Set the input and output units for fitted model</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 211 fobj.setIunits(<span class="string">'m'</span>);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 212 fobj.setOunits(<span class="string">'V'</span>);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 213 </pre></div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 214 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 215 When <span class="string">'Plot'</span> parameter is set to <span class="string">'on'</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 216 the function plots the fit progress.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 217 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 218 <IMG src="images/ltpda_training_1/topic5/ltpda_training_5_1_3.png" align="center" border="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 219 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 220 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 221
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 222 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 223 We can now check the result of our fitting procedures.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 224 We calculate the frequency response of the fitted models (filters) and compare them
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 225 with the starting IIR filter response, then we will plot the percentage error on the filters magnitudes.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 226 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 227 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 228 Note that the result of the fitting procedure is a <tt>matrix</tt> object containing a <tt>filterbank</tt> object,
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 229 which itself contains a parallel bank of 3 IIR filters.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 230 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 231 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 232 Note that at the moment we need to access the individual filter objects inside the <tt>matrix</tt> object that was the result of the fitting procedure.</p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 233 <div class="fragment"><pre>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 234 <span class="comment">% set plist for filter response</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 235 plrsp = plist(<span class="string">'bank'</span>,<span class="string">'parallel'</span>,<span class="string">'f1'</span>,1e-5,<span class="string">'f2'</span>,0.5,<span class="string">'nf'</span>,100,<span class="string">'scale'</span>,<span class="string">'log'</span>);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 236
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 237 <span class="comment">% compute the response of the original noise-shape filter</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 238 rfilt = resp(filt,plrsp);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 239 rfilt.setName;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 240
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 241 <span class="comment">% compute the response of our fitted filter bank</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 242 rfobj = resp(fobj.filters,plrsp);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 243 rfobj.setName;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 244
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 245 <span class="comment">% compare the responses</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 246 iplot(rfilt,rfobj)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 247
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 248 <span class="comment">% and the percentage error on the magnitude</span>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 249 pdiff = 100.*abs((rfobj-rfilt)./rfilt);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 250 pdiff.simplifyYunits;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 251 iplot(pdiff,plist(<span class="string">'YRanges'</span>,[1e-2 100]))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 252 </pre></div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 253 <p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 254 The first plot shows the response of the original filter and the fitted filter bank,
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 255 whereas the second plot reports the percentage difference between fitted model and target filter magnitude. <br/>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 256 As can be seen, the difference between filters magnitude is at most 10%.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 257 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 258 <IMG src="images/ltpda_training_1/topic5/ltpda_training_5_1_4.png" align="center" border="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 259 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 260 <div align="center">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 261 <IMG src="images/ltpda_training_1/topic5/ltpda_training_5_1_5.png" align="center" border="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 262 </div>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 263 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 264
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 265
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 266
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 267
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 268
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 269
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 270
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 271
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 272
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 273
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 274
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 275
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 276
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 277
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 278
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 279
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 280
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 281
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 282 </p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 283
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 284 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 285 <br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 286 <table class="nav" summary="Navigation aid" border="0" width=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 287 "100%" cellpadding="0" cellspacing="0">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 288 <tr valign="top">
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 289 <td align="left" width="20"><a href="ltpda_training_topic_5.html"><img src=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 290 "b_prev.gif" border="0" align="bottom" alt=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 291 "Topic 5 - Model fitting"></a> </td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 292
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 293 <td align="left">Topic 5 - Model fitting</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 294
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 295 <td> </td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 296
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 297 <td align="right">Generation of noise with given PSD</td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 298
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 299 <td align="right" width="20"><a href=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 300 "ltpda_training_topic_5_2.html"><img src="b_next.gif" border="0" align=
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 301 "bottom" alt="Generation of noise with given PSD"></a></td>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 302 </tr>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 303 </table><br>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 304
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 305 <p class="copy">©LTP Team</p>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 306 </body>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 307 </html>