nass-metrology-test-bench/index.html

1357 lines
98 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2019-09-16 lun. 11:59 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cercalo Test Bench</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { width: 90%; }
/*]]>*/-->
</style>
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
<link rel="stylesheet" type="text/css" href="./css/zenburn.css"/>
<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/bootstrap.min.js"></script>
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2019 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
displayAlign: "center",
displayIndent: "0em",
"HTML-CSS": { scale: 100,
linebreaks: { automatic: "false" },
webFont: "TeX"
},
SVG: {scale: 100,
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em"
}
});
</script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
</head>
<body>
<div id="content">
<h1 class="title">Cercalo Test Bench</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org754474f">1. Introduction</a>
<ul>
<li><a href="#org5c645da">1.1. Signals</a></li>
<li><a href="#org0aa0ee3">1.2. Cercalo</a></li>
<li><a href="#org002d4fa">1.3. Optical Setup</a></li>
<li><a href="#org39881ce">1.4. 4 quadrant Diode</a></li>
<li><a href="#orgd6654c5">1.5. ADC/DAC</a></li>
<li><a href="#org6c0b30a">1.6. Amplifier for the Cercalo</a></li>
<li><a href="#org4f39adb">1.7. Block Diagram</a></li>
</ul>
</li>
<li><a href="#org84958b2">2. Identification</a>
<ul>
<li><a href="#orgd0268b2">2.1. Excitation Data</a></li>
<li><a href="#orgeac50db">2.2. Signals</a></li>
<li><a href="#org5dc4e7d">2.3. Huddle Test</a></li>
<li><a href="#org2028261">2.4. Input / Output data</a></li>
<li><a href="#org15893d8">2.5. Estimation of the Frequency Response Function Matrix</a></li>
<li><a href="#org48cc1e6">2.6. Coherence</a></li>
<li><a href="#org3c28674">2.7. Extraction of a transfer function matrix</a></li>
</ul>
</li>
<li><a href="#org14b4ee4">3. Sensor Noise</a></li>
<li><a href="#org7fd124d">4. Plant Analysis</a>
<ul>
<li><a href="#org0fae2b8">4.1. Load Plant</a></li>
<li><a href="#orgfeb824b">4.2. RGA-Number</a></li>
<li><a href="#org1704d2b">4.3. Rotation Matrix</a></li>
</ul>
</li>
<li><a href="#org6ec2576">5. Control Objective</a></li>
<li><a href="#org41cbf8b">6. Plant Scaling</a></li>
<li><a href="#org0103d04">7. Control Design</a></li>
</ul>
</div>
</div>
<div id="outline-container-org754474f" class="outline-2">
<h2 id="org754474f"><span class="section-number-2">1</span> Introduction</h2>
<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-org5c645da" class="outline-3">
<h3 id="org5c645da"><span class="section-number-3">1.1</span> Signals</h3>
<div class="outline-text-3" id="text-1-1">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Signal</th>
<th scope="col" class="org-left">Name</th>
<th scope="col" class="org-left">Unit</th>
<th scope="col" class="org-right">Number</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Voltage Sent to Cercalo - Horizontal</td>
<td class="org-left"><code>Uch</code></td>
<td class="org-left">[V]</td>
<td class="org-right">1</td>
</tr>
<tr>
<td class="org-left">Voltage Sent to Cercalo - Vertical</td>
<td class="org-left"><code>Ucv</code></td>
<td class="org-left">[V]</td>
<td class="org-right">2</td>
</tr>
<tr>
<td class="org-left">Voltage Sent to Newport - Horizontal</td>
<td class="org-left"><code>Unh</code></td>
<td class="org-left">[V]</td>
<td class="org-right">3</td>
</tr>
<tr>
<td class="org-left">Voltage Sent to Newport - Vertical</td>
<td class="org-left"><code>Unv</code></td>
<td class="org-left">[V]</td>
<td class="org-right">4</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left">4Q Photodiode Measurement - Horizontal</td>
<td class="org-left"><code>Vph</code></td>
<td class="org-left">[V]</td>
<td class="org-right">5</td>
</tr>
<tr>
<td class="org-left">4Q Photodiode Measurement - Vertical</td>
<td class="org-left"><code>Vpv</code></td>
<td class="org-left">[V]</td>
<td class="org-right">6</td>
</tr>
<tr>
<td class="org-left">Measured Voltage across the Inductance - Horizontal</td>
<td class="org-left"><code>Vch</code></td>
<td class="org-left">[V]</td>
<td class="org-right">7</td>
</tr>
<tr>
<td class="org-left">Measured Voltage across the Inductance - Vertical</td>
<td class="org-left"><code>Vcv</code></td>
<td class="org-left">[V]</td>
<td class="org-right">8</td>
</tr>
<tr>
<td class="org-left">Newport Metrology - Horizontal</td>
<td class="org-left"><code>Vnh</code></td>
<td class="org-left">[V]</td>
<td class="org-right">9</td>
</tr>
<tr>
<td class="org-left">Newport Metrology - Vertical</td>
<td class="org-left"><code>Vnv</code></td>
<td class="org-left">[V]</td>
<td class="org-right">10</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left">Attocube Measurement</td>
<td class="org-left"><code>Va</code></td>
<td class="org-left">[m]</td>
<td class="org-right">11</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org0aa0ee3" class="outline-3">
<h3 id="org0aa0ee3"><span class="section-number-3">1.2</span> Cercalo</h3>
<div class="outline-text-3" id="text-1-2">
<table id="orga3759f1" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Cercalo Parameters</caption>
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right">Maximum Stroke [deg]</th>
<th scope="col" class="org-right">Resonance Frequency [Hz]</th>
<th scope="col" class="org-right">DC Gain [mA/deg]</th>
<th scope="col" class="org-right">Gain at resonance [deg/V]</th>
<th scope="col" class="org-right">RC Resistance [Ohm]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">AX1</td>
<td class="org-right">5</td>
<td class="org-right">411.13</td>
<td class="org-right">28.4</td>
<td class="org-right">382.9</td>
<td class="org-right">9.41</td>
</tr>
<tr>
<td class="org-left">AX2</td>
<td class="org-right">5</td>
<td class="org-right">252.5</td>
<td class="org-right">35.2</td>
<td class="org-right">350.4</td>
<td class="org-right">&#xa0;</td>
</tr>
</tbody>
</table>
<p>
L = 0.1mH on both directions
</p>
<p>
Resistance= 41 Ohm
</p>
<p>
Ax2 = 8.3
Ax1 = 9.3
</p>
</div>
</div>
<div id="outline-container-org002d4fa" class="outline-3">
<h3 id="org002d4fa"><span class="section-number-3">1.3</span> Optical Setup</h3>
</div>
<div id="outline-container-org39881ce" class="outline-3">
<h3 id="org39881ce"><span class="section-number-3">1.4</span> 4 quadrant Diode</h3>
<div class="outline-text-3" id="text-1-4">
<p>
Front view of the photodiode.
</p>
<div class="figure">
<p><img src="figs/4qd_naming.png" alt="4qd_naming.png" />
</p>
</div>
<p>
Signals going to the amplifier on the board. The amplifier is located on the bottom right of the board.
</p>
<div class="figure">
<p><img src="figs/4qd_amplifier.png" alt="4qd_amplifier.png" />
</p>
</div>
</div>
</div>
<div id="outline-container-orgd6654c5" class="outline-3">
<h3 id="orgd6654c5"><span class="section-number-3">1.5</span> ADC/DAC</h3>
<div class="outline-text-3" id="text-1-5">
<p>
Let's compute the theoretical noise of the ADC/DAC.
</p>
\begin{align*}
\Delta V &= 20 V \\
n &= 16bits \\
q &= \Delta V/2^n = 305 \mu V \\
f_N &= 10kHz \\
\Gamma_n &= \frac{q^2}{12 f_N} = 7.76 \cdot 10^{-13} \frac{V^2}{Hz}
\end{align*}
<p>
with \(\Delta V\) the total range of the ADC, \(n\) its number of bits, \(q\) the quantization, \(f_N\) the sampling frequency and \(\Gamma_n\) its theoretical Power Spectral Density.
</p>
</div>
</div>
<div id="outline-container-org6c0b30a" class="outline-3">
<h3 id="org6c0b30a"><span class="section-number-3">1.6</span> Amplifier for the Cercalo</h3>
<div class="outline-text-3" id="text-1-6">
<div class="figure">
<p><img src="figs/cercalo_amplifier.png" alt="cercalo_amplifier.png" />
</p>
</div>
<p>
The values of the parameters are:
</p>
<ul class="org-ul">
<li>\(R_h = 41 \Omega\)</li>
<li>\(L_{c,h} = 0.1 mH\)</li>
<li>\(R_{c,h} = 9.3 \Omega\)</li>
<li>\(R_v = 41 \Omega\)</li>
<li>\(L_{c,v} = 0.1 mH\)</li>
<li>\(R_{c,v} = 8.3 \Omega\)</li>
</ul>
<p>
We want to find the transfer function from \(U_c\) to \(V_L\) and from \(U_c\) to \(i_c\).
</p>
<p>
We have that:
</p>
\begin{align*}
V_C &= R_c i + L_c s i \\
U_c &= (R + R_c) i + L_c s i
\end{align*}
<p>
Thus:
</p>
\begin{align}
\frac{i_c}{U_c} &= \frac{1}{(R + R_c) + L_c s} \\
&= \frac{G_0}{1 + s/\omega_0}
\end{align}
<p>
with
</p>
<ul class="org-ul">
<li>\(G_{0,i} = \frac{1}{R + R_c}\)</li>
<li>\(\omega_0 = \frac{R + R_c}{L_c}\)</li>
</ul>
<p>
And
</p>
\begin{align}
\frac{V_c}{U_c} &= \frac{R_c + L_c s}{(R + R_c) + L_c s} \\
&= \frac{\frac{R_c}{R + R_c} + \frac{L_c}{R + R_c} s}{1 + \frac{L_c}{R + R_c} s} \\
&= \frac{G_0 + s/\omega_0}{1 + s/\omega_0} \\
\end{align}
<p>
with
</p>
<ul class="org-ul">
<li>\(G_0 = \frac{R_c}{R + R_c}\)</li>
<li>\(\omega_0 = \frac{R + R_c}{L_c}\)</li>
</ul>
<div class="org-src-container">
<pre class="src src-matlab">Rh = <span class="org-highlight-numbers-number">41</span>; <span class="org-comment">% [Ohm]</span>
Lch = <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">1e</span><span class="org-type">-</span><span class="org-highlight-numbers-number">3</span>; <span class="org-comment">% [H]</span>
Rch = <span class="org-highlight-numbers-number">9</span>.<span class="org-highlight-numbers-number">3</span>; <span class="org-comment">% [Ohm]</span>
Rv = <span class="org-highlight-numbers-number">41</span>; <span class="org-comment">% [Ohm]</span>
Lcv = <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">1e</span><span class="org-type">-</span><span class="org-highlight-numbers-number">3</span>; <span class="org-comment">% [H]</span>
Rcv = <span class="org-highlight-numbers-number">8</span>.<span class="org-highlight-numbers-number">3</span>; <span class="org-comment">% [Ohm]</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Gih = <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1">(</span>Rh <span class="org-type">+</span> Rch <span class="org-type">+</span> Lch <span class="org-type">*</span> s<span class="org-rainbow-delimiters-depth-1">)</span>;
Gvh = <span class="org-rainbow-delimiters-depth-1">(</span>Rch <span class="org-type">+</span> Lch <span class="org-type">*</span> s<span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1">(</span>Rh <span class="org-type">+</span> Rch <span class="org-type">+</span> Lch <span class="org-type">*</span> s<span class="org-rainbow-delimiters-depth-1">)</span>;
Giv = <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1">(</span>Rv <span class="org-type">+</span> Rcv <span class="org-type">+</span> Lcv <span class="org-type">*</span> s<span class="org-rainbow-delimiters-depth-1">)</span>;
Gvv = <span class="org-rainbow-delimiters-depth-1">(</span>Rcv <span class="org-type">+</span> Lcv <span class="org-type">*</span> s<span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1">(</span>Rv <span class="org-type">+</span> Rcv <span class="org-type">+</span> Lcv <span class="org-type">*</span> s<span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div class="important">
<p>
The current amplifier has a constant gain over all the frequency band of interest.
</p>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Gih0 = freqresp<span class="org-rainbow-delimiters-depth-1">(</span>Gih, <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">)</span>;
Gvh0 = freqresp<span class="org-rainbow-delimiters-depth-1">(</span>Gvh, <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">)</span>;
Giv0 = freqresp<span class="org-rainbow-delimiters-depth-1">(</span>Giv, <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">)</span>;
Gvv0 = freqresp<span class="org-rainbow-delimiters-depth-1">(</span>Gvv, <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
<div id="outline-container-org4f39adb" class="outline-3">
<h3 id="org4f39adb"><span class="section-number-3">1.7</span> Block Diagram</h3>
<div class="outline-text-3" id="text-1-7">
<div class="org-src-container">
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
<span class="org-font-latex-sedate">\node</span>[DAC] (dac) at (0, 0) {};
<span class="org-font-latex-sedate">\node</span>[block, right=1.2 of dac] (Gi) {<span class="org-font-latex-math">$G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_i</span></span><span class="org-font-latex-math">$</span>};
<span class="org-font-latex-sedate">\node</span>[block, right=1.5 of Gi] (Gc) {<span class="org-font-latex-math">$G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_c</span></span><span class="org-font-latex-math">$</span>};
<span class="org-font-latex-sedate">\node</span>[addb, right=0.5 of Gc] (add) {};
<span class="org-font-latex-sedate">\node</span>[block, above= of add] (Gn) {<span class="org-font-latex-math">$G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_n</span></span><span class="org-font-latex-math">$</span>};
<span class="org-font-latex-sedate">\node</span>[ADC, right=1.2 of add] (adc) {};
<span class="org-font-latex-sedate">\coordinate</span> (GiGc) at (<span class="org-font-latex-math">$0.8*(Gi.east) + 0.2*(Gc.west)$</span>);
<span class="org-font-latex-sedate">\node</span>[block] (Amp) at (GiGc|-Gn) {<span class="org-font-latex-math">$G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_a</span></span><span class="org-font-latex-math">$</span>};
<span class="org-font-latex-sedate">\node</span>[above, align=center] at (Gi.north) {Current<span class="org-font-latex-warning">\\</span>Amplifier};
<span class="org-font-latex-sedate">\node</span>[above, align=center] at (Gc.north) {Cercalo};
<span class="org-font-latex-sedate">\node</span>[left, align=right] at (Gn.west) {Newport};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (<span class="org-font-latex-math">$(dac.west) + (-1, 0)$</span>) --node[midway, sloped]{<span class="org-font-latex-math">$/$</span>} (dac.west);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (dac.east) -- (Gi.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}U</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,h}</span></span><span class="org-font-latex-math"> \\ U</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (Gi.east) -- (Gc.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{U}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,h}</span></span><span class="org-font-latex-math"> \\ </span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{U}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (Gc.east) -- (add.west);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (Gn.south) -- (add.north);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (GiGc)node[branch]{} -- (Amp.south);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (Amp.north) -- ++(0, 1.5) node[below right]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}V</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,h}</span></span><span class="org-font-latex-math"> \\ V</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (<span class="org-font-latex-math">$(Gn.north) + (0, 1.5)$</span>) -- (Gn.north) node[above right]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}U</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{n,h}</span></span><span class="org-font-latex-math"> \\ U</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{n,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (add.east) -- (adc.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}V</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{p,h}</span></span><span class="org-font-latex-math"> \\ V</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{p,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (adc.east) --node[midway, sloped]{<span class="org-font-latex-math">$/$</span>} ++(1, 0);
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
</pre>
</div>
<div class="figure">
<p><img src="figs/cercalo_diagram_simplify.png" alt="cercalo_diagram_simplify.png" />
</p>
</div>
<ul class="org-ul">
<li>Transfer function for the <b>Current Amplifier</b>:
\[ G_i = \begin{bmatrix} G_{i,h} & 0 \\ 0 & G_{i,v} \end{bmatrix} \]</li>
<li>Transfer function for the <b>Voltage Amplifier</b>:
\[ G_a = \begin{bmatrix} G_{a,h} & 0 \\ 0 & G_{a,v} \end{bmatrix} \]</li>
<li>Transfer function from the Voltage across the <b>Cercalo</b> inductors to the 4 quadrant measurement
\[ G_c = \begin{bmatrix} G_{\frac{V_{p,h}}{\tilde{U}_{c,h}}} & G_{\frac{V_{p,h}}{\tilde{U}_{c,v}}} \\ G_{\frac{V_{p,v}}{\tilde{U}_{c,h}}} & G_{\frac{V_{p,v}}{\tilde{U}_{c,v}}} \end{bmatrix} \]</li>
<li>Transfer function from the <b>Newport</b> command signal to the 4 quadrant measurement
\[ G_n = \begin{bmatrix} G_{\frac{V_{p,h}}{U_{n,h}}} & G_{\frac{V_{p,h}}{U_{n,v}}} \\ G_{\frac{V_{p,v}}{U_{n,h}}} & G_{\frac{V_{n,v}}{U_{n,v}}} \end{bmatrix} \]</li>
</ul>
<div class="org-src-container">
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
<span class="org-font-latex-sedate">\node</span>[DAC] (dac) at (0, 0) {};
<span class="org-font-latex-sedate">\node</span>[block, right=1.5 of dac] (Gi) {<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">} G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{i,h}</span></span><span class="org-font-latex-math"> &amp; 0 \\ 0 &amp; G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{i,v}</span></span><span class="org-font-latex-math"> </span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\node</span>[block, right=1.8 of Gi] (Gc) {<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">} G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{\frac{V_{p,h}}{\tilde{U}_{c,h}}}</span></span><span class="org-font-latex-math"> &amp; G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{\frac{V_{p,h}}{\tilde{U}_{c,v}}}</span></span><span class="org-font-latex-math"> \\ G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{\frac{V_{p,v}}{\tilde{U}_{c,h}}}</span></span><span class="org-font-latex-math"> &amp; G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{\frac{V_{p,v}}{\tilde{U}_{c,v}}}</span></span><span class="org-font-latex-math"> </span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\node</span>[addb, right= of Gc] (add) {};
<span class="org-font-latex-sedate">\node</span>[block, above= of add] (Gn) {<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">} G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{\frac{V_{p,h}}{U_{n,h}}}</span></span><span class="org-font-latex-math"> &amp; G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{\frac{V_{p,h}}{U_{n,v}}}</span></span><span class="org-font-latex-math"> \\ G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{\frac{V_{p,v}}{U_{n,h}}}</span></span><span class="org-font-latex-math"> &amp; G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{\frac{V_{n,v}}{U_{n,v}}}</span></span><span class="org-font-latex-math"> </span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\node</span>[ADC, right = 1.5 of add] (adc) {};
<span class="org-font-latex-sedate">\coordinate</span> (GiGc) at (<span class="org-font-latex-math">$0.7*(Gi.east) + 0.3*(Gc.west)$</span>);
<span class="org-font-latex-sedate">\node</span>[block] (Amp) at (GiGc|-Gn) {<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">} G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{a,h}</span></span><span class="org-font-latex-math"> &amp; 0 \\ 0 &amp; G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{a,v}</span></span><span class="org-font-latex-math"> </span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\node</span>[above, align=center] at (Gi.north) {Current<span class="org-font-latex-warning">\\</span>Amplifier};
<span class="org-font-latex-sedate">\node</span>[above, align=center] at (Gc.north) {Cercalo};
<span class="org-font-latex-sedate">\node</span>[left, align=right] at (Gn.west) {Newport};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (<span class="org-font-latex-math">$(dac.west) + (-1, 0)$</span>) --node[midway, sloped]{<span class="org-font-latex-math">$/$</span>} (dac.west);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (dac.east) -- (Gi.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}U</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,h}</span></span><span class="org-font-latex-math"> \\ U</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (Gi.east) -- (Gc.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{U}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,h}</span></span><span class="org-font-latex-math"> \\ </span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{U}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (Gc.east) -- (add.west);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (Gn.south) -- (add.north);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (GiGc)node[branch]{} -- (Amp.south);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (Amp.north) -- ++(0, 1.5) node[below right]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}V</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,h}</span></span><span class="org-font-latex-math"> \\ V</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{c,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (<span class="org-font-latex-math">$(Gn.north) + (0, 1.5)$</span>) -- (Gn.north) node[above right]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}U</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{n,h}</span></span><span class="org-font-latex-math"> \\ U</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{n,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (add.east) -- (adc.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\begin</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}V</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{p,h}</span></span><span class="org-font-latex-math"> \\ V</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{p,v}</span></span><span class="org-font-latex-sedate"><span class="org-keyword"><span class="org-font-latex-math">\end</span></span></span><span class="org-font-latex-math">{</span><span class="org-function-name"><span class="org-font-latex-math">bmatrix</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (adc.east) --node[midway, sloped]{<span class="org-font-latex-math">$/$</span>} ++(1, 0);
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
</pre>
</div>
<div class="figure">
<p><img src="figs/cercalo_diagram.png" alt="cercalo_diagram.png" />
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org84958b2" class="outline-2">
<h2 id="org84958b2"><span class="section-number-2">2</span> Identification</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="orgf9e9ac3"></a>
</p>
<div class="note">
<p>
All the files (data and Matlab scripts) are accessible <a href="data/plant_identification.zip">here</a>.
</p>
</div>
</div>
<div id="outline-container-orgd0268b2" class="outline-3">
<h3 id="orgd0268b2"><span class="section-number-3">2.1</span> Excitation Data</h3>
<div class="outline-text-3" id="text-2-1">
<div class="org-src-container">
<pre class="src src-matlab">fs = <span class="org-highlight-numbers-number">1e4</span>;
Ts = <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>fs;
</pre>
</div>
<p>
We generate white noise with the "random number" simulink block, and we filter that noise.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Gi = <span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">+</span>s<span class="org-type">/</span><span class="org-highlight-numbers-number">2</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span><span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">c2d<span class="org-rainbow-delimiters-depth-1">(</span>Gi, Ts, <span class="org-string">'tustin'</span><span class="org-rainbow-delimiters-depth-1">)</span>
</pre>
</div>
<pre class="example">
c2d(Gi, Ts, 'tustin')
ans =
0.030459 (z+1)
--------------
(z-0.9391)
Sample time: 0.0001 seconds
Discrete-time zero/pole/gain model.
</pre>
</div>
</div>
<div id="outline-container-orgeac50db" class="outline-3">
<h3 id="orgeac50db"><span class="section-number-3">2.2</span> Signals</h3>
<div class="outline-text-3" id="text-2-2">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Signal</th>
<th scope="col" class="org-left">Name</th>
<th scope="col" class="org-left">Unit</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Voltage Sent to Cercalo - Horizontal</td>
<td class="org-left"><code>Uch</code></td>
<td class="org-left">[V]</td>
</tr>
<tr>
<td class="org-left">Voltage Sent to Cercalo - Vertical</td>
<td class="org-left"><code>Ucv</code></td>
<td class="org-left">[V]</td>
</tr>
<tr>
<td class="org-left">Voltage Sent to Newport - Horizontal</td>
<td class="org-left"><code>Unh</code></td>
<td class="org-left">[V]</td>
</tr>
<tr>
<td class="org-left">Voltage Sent to Newport - Vertical</td>
<td class="org-left"><code>Unv</code></td>
<td class="org-left">[V]</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left">4Q Photodiode Measurement - Horizontal</td>
<td class="org-left"><code>Vph</code></td>
<td class="org-left">[V]</td>
</tr>
<tr>
<td class="org-left">4Q Photodiode Measurement - Vertical</td>
<td class="org-left"><code>Vpv</code></td>
<td class="org-left">[V]</td>
</tr>
<tr>
<td class="org-left">Measured Voltage across the Inductance - Horizontal</td>
<td class="org-left"><code>Vch</code></td>
<td class="org-left">[V]</td>
</tr>
<tr>
<td class="org-left">Measured Voltage across the Inductance - Vertical</td>
<td class="org-left"><code>Vcv</code></td>
<td class="org-left">[V]</td>
</tr>
<tr>
<td class="org-left">Newport Metrology - Horizontal</td>
<td class="org-left"><code>Vnh</code></td>
<td class="org-left">[V]</td>
</tr>
<tr>
<td class="org-left">Newport Metrology - Vertical</td>
<td class="org-left"><code>Vnv</code></td>
<td class="org-left">[V]</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left">Attocube Measurement</td>
<td class="org-left"><code>Va</code></td>
<td class="org-left">[m]</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org5dc4e7d" class="outline-3">
<h3 id="org5dc4e7d"><span class="section-number-3">2.3</span> Huddle Test</h3>
<div class="outline-text-3" id="text-2-3">
<p>
We load the data taken during the Huddle Test.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_test.mat'</span>, <span class="org-underline">...</span>
<span class="org-string">'t', 'Uch', 'Ucv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Unh', 'Unv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Vph', 'Vpv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Vch', 'Vcv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Vnh', 'Vnv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Va'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<p>
We remove the first second of data where everything is settling down.
</p>
<div class="org-src-container">
<pre class="src src-matlab">t0 = <span class="org-highlight-numbers-number">1</span>;
Uch<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Ucv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Unh<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Unv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Vph<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Vpv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Vch<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Vcv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Vnh<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Vnv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
Va<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
t<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
t = t <span class="org-type">-</span> t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>; % We start at t=<span class="org-highlight-numbers-number">0</span>
</pre>
</div>
<p>
We compute the Power Spectral Density of the horizontal and vertical positions of the beam as measured by the 4 quadrant diode.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>psd_Vph, f<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>Vph, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">*</span>fs<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>psd_Vpv, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>Vpv, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">*</span>fs<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>psd_Vph<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', '</span>$<span class="org-type">\</span>Gamma_<span class="org-rainbow-delimiters-depth-2">{</span>Vp_h<span class="org-rainbow-delimiters-depth-2">}</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>psd_Vpv<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', '</span>$<span class="org-type">\</span>Gamma_<span class="org-rainbow-delimiters-depth-2">{</span>Vp_v<span class="org-rainbow-delimiters-depth-2">}</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>;
hold off;
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'</span>ASD $<span class="org-type">\</span>left<span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">\</span>frac<span class="org-rainbow-delimiters-depth-3">{</span>V<span class="org-rainbow-delimiters-depth-3">}{</span><span class="org-type">\</span>sqrt<span class="org-rainbow-delimiters-depth-4">{</span>Hz<span class="org-rainbow-delimiters-depth-4">}</span><span class="org-rainbow-delimiters-depth-3">}</span><span class="org-type">\</span>right<span class="org-rainbow-delimiters-depth-2">]</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>
legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Location', 'southwest'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1000</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<p>
We compute the Power Spectral Density of the voltage across the inductance used for horizontal and vertical positioning of the Cercalo.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>psd_Vch, f<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>Vch, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">*</span>fs<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>psd_Vcv, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>Vcv, hanning<span class="org-rainbow-delimiters-depth-2">(</span>ceil<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">*</span>fs<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>psd_Vch<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', '</span>$<span class="org-type">\</span>Gamma_<span class="org-rainbow-delimiters-depth-2">{</span>Vc_h<span class="org-rainbow-delimiters-depth-2">}</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>psd_Vcv<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'DisplayName', '</span>$<span class="org-type">\</span>Gamma_<span class="org-rainbow-delimiters-depth-2">{</span>Vc_v<span class="org-rainbow-delimiters-depth-2">}</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>;
hold off;
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'yscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'</span>ASD $<span class="org-type">\</span>left<span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">\</span>frac<span class="org-rainbow-delimiters-depth-3">{</span>V<span class="org-rainbow-delimiters-depth-3">}{</span><span class="org-type">\</span>sqrt<span class="org-rainbow-delimiters-depth-4">{</span>Hz<span class="org-rainbow-delimiters-depth-4">}</span><span class="org-rainbow-delimiters-depth-3">}</span><span class="org-type">\</span>right<span class="org-rainbow-delimiters-depth-2">]</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>
legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Location', 'southwest'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1000</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
<div id="outline-container-org2028261" class="outline-3">
<h3 id="org2028261"><span class="section-number-3">2.4</span> Input / Output data</h3>
<div class="outline-text-3" id="text-2-4">
<p>
The identification data is loaded
</p>
<div class="org-src-container">
<pre class="src src-matlab">uh = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_uh.mat'</span>, <span class="org-underline">...</span>
<span class="org-string">'t', 'Uch', 'Ucv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Unh', 'Unv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Vph', 'Vpv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Vch', 'Vcv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Vnh', 'Vnv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Va'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
uv = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/data_uh.mat'</span>, <span class="org-underline">...</span>
<span class="org-string">'t', 'Uch', 'Ucv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Unh', 'Unv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Vph', 'Vpv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Vch', 'Vcv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Vnh', 'Vnv'</span>, <span class="org-underline">...</span>
<span class="org-string">'Va'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<p>
We remove the first seconds where the Cercalo is turned on.
</p>
<div class="org-src-container">
<pre class="src src-matlab">t0 = <span class="org-highlight-numbers-number">1</span>;
uh.Uch<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Ucv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Unh<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Unv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Vph<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Vpv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Vch<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Vcv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Vnh<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Vnv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.Va<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.t<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uh.t = uh.t <span class="org-type">-</span> uh.t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>; % We start at t=<span class="org-highlight-numbers-number">0</span>
t0 = <span class="org-highlight-numbers-number">1</span>;
uv.Uch<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Ucv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Unh<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Unv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Vph<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Vpv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Vch<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Vcv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Vnh<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Vnv<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.Va<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.t<span class="org-rainbow-delimiters-depth-1">(</span>t<span class="org-type">&lt;</span>t0<span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[]</span>;
uv.t = uv.t <span class="org-type">-</span> uv.t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>; % We start at t=<span class="org-highlight-numbers-number">0</span>
</pre>
</div>
<div id="orgeb45e59" class="figure">
<p><img src="figs/identification_uh.png" alt="identification_uh.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Identification signals when exciting the horizontal direction (<a href="./figs/identification_uh.png">png</a>, <a href="./figs/identification_uh.pdf">pdf</a>)</p>
</div>
<div id="org37217b5" class="figure">
<p><img src="figs/identification_uv.png" alt="identification_uv.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Identification signals when exciting in the vertical direction (<a href="./figs/identification_uv.png">png</a>, <a href="./figs/identification_uv.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org15893d8" class="outline-3">
<h3 id="org15893d8"><span class="section-number-3">2.5</span> Estimation of the Frequency Response Function Matrix</h3>
<div class="outline-text-3" id="text-2-5">
<div class="org-src-container">
<pre class="src src-matlab">win = hanning<span class="org-rainbow-delimiters-depth-1">(</span>ceil<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">*</span>fs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<p>
We compute an estimate of the transfer functions.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>tf_Uch_Vph, f<span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>uh.Uch, uh.Vph, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>tf_Uch_Vpv, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>uh.Uch, uh.Vpv, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>tf_Ucv_Vph, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>uv.Ucv, uv.Vph, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>tf_Ucv_Vpv, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = tfestimate<span class="org-rainbow-delimiters-depth-1">(</span>uv.Ucv, uv.Vpv, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div id="org6ee4e7c" class="figure">
<p><img src="figs/frequency_response_matrix.png" alt="frequency_response_matrix.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Frequency Response Matrix (<a href="./figs/frequency_response_matrix.png">png</a>, <a href="./figs/frequency_response_matrix.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org48cc1e6" class="outline-3">
<h3 id="org48cc1e6"><span class="section-number-3">2.6</span> Coherence</h3>
<div class="outline-text-3" id="text-2-6">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>coh_Uch_Vph, f<span class="org-rainbow-delimiters-depth-1">]</span> = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>uh.Uch, uh.Vph, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>coh_Uch_Vpv, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>uh.Uch, uh.Vpv, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>coh_Ucv_Vph, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>uv.Ucv, uv.Vph, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-rainbow-delimiters-depth-1">[</span>coh_Ucv_Vpv, <span class="org-type">~</span><span class="org-rainbow-delimiters-depth-1">]</span> = mscohere<span class="org-rainbow-delimiters-depth-1">(</span>uv.Ucv, uv.Vpv, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, fs<span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div id="org3ec05cb" class="figure">
<p><img src="figs/identification_coherence.png" alt="identification_coherence.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Coherence (<a href="./figs/identification_coherence.png">png</a>, <a href="./figs/identification_coherence.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org3c28674" class="outline-3">
<h3 id="org3c28674"><span class="section-number-3">2.7</span> Extraction of a transfer function matrix</h3>
<div class="outline-text-3" id="text-2-7">
<p>
First we define the initial guess for the resonance frequencies and the weights associated.
</p>
<div class="org-src-container">
<pre class="src src-matlab">freqs_res_uh = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">410</span><span class="org-rainbow-delimiters-depth-1">]</span>; <span class="org-comment">% [Hz]</span>
freqs_res_uv = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">250</span><span class="org-rainbow-delimiters-depth-1">]</span>; <span class="org-comment">% [Hz]</span>
</pre>
</div>
<p>
From the number of resonance frequency we want to fit, we define the order <code>N</code> of the system we want to obtain.
</p>
<div class="org-src-container">
<pre class="src src-matlab">N = <span class="org-highlight-numbers-number">2</span>;
</pre>
</div>
<p>
We then make an initial guess on the complex values of the poles.
</p>
<div class="org-src-container">
<pre class="src src-matlab">xi = <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">001</span>; <span class="org-comment">% Approximate modal damping</span>
poles_uh = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>freqs_res_uh<span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>xi <span class="org-type">+</span> <span class="org-highlight-numbers-number">1i</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>freqs_res_uh<span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>xi <span class="org-type">-</span> <span class="org-highlight-numbers-number">1i</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">]</span>;
poles_uv = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>freqs_res_uv<span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>xi <span class="org-type">+</span> <span class="org-highlight-numbers-number">1i</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>freqs_res_uv<span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>xi <span class="org-type">-</span> <span class="org-highlight-numbers-number">1i</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">]</span>;
</pre>
</div>
<p>
We then define the weight that will be used for the fitting.
Basically, we want more weight around the resonance and at low frequency (below the first resonance).
Also, we want more importance where we have a better coherence.
</p>
<div class="org-src-container">
<pre class="src src-matlab">weight_Uch_Vph = coh_Uch_Vph';
weight_Uch_Vpv = coh_Uch_Vpv';
weight_Ucv_Vph = coh_Ucv_Vph';
weight_Ucv_Vpv = coh_Ucv_Vpv';
alpha = <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">1</span>;
<span class="org-keyword">for</span> <span class="org-variable-name">freq_i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">freqs_res</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
weight_Uch_Vph<span class="org-rainbow-delimiters-depth-1">(</span>f<span class="org-type">&gt;</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">-</span>alpha<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>freqs_res_uh<span class="org-rainbow-delimiters-depth-2">(</span>freq_i<span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">&amp;</span> f<span class="org-type">&lt;</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span> <span class="org-type">+</span> alpha<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>freqs_res_uh<span class="org-rainbow-delimiters-depth-2">(</span>freq_i<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-highlight-numbers-number">10</span>;
weight_Uch_Vpv<span class="org-rainbow-delimiters-depth-1">(</span>f<span class="org-type">&gt;</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">-</span>alpha<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>freqs_res_uh<span class="org-rainbow-delimiters-depth-2">(</span>freq_i<span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">&amp;</span> f<span class="org-type">&lt;</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span> <span class="org-type">+</span> alpha<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>freqs_res_uh<span class="org-rainbow-delimiters-depth-2">(</span>freq_i<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-highlight-numbers-number">10</span>;
weight_Ucv_Vph<span class="org-rainbow-delimiters-depth-1">(</span>f<span class="org-type">&gt;</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">-</span>alpha<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>freqs_res_uv<span class="org-rainbow-delimiters-depth-2">(</span>freq_i<span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">&amp;</span> f<span class="org-type">&lt;</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span> <span class="org-type">+</span> alpha<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>freqs_res_uv<span class="org-rainbow-delimiters-depth-2">(</span>freq_i<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-highlight-numbers-number">10</span>;
weight_Ucv_Vpv<span class="org-rainbow-delimiters-depth-1">(</span>f<span class="org-type">&gt;</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">-</span>alpha<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>freqs_res_uv<span class="org-rainbow-delimiters-depth-2">(</span>freq_i<span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">&amp;</span> f<span class="org-type">&lt;</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span> <span class="org-type">+</span> alpha<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span>freqs_res_uv<span class="org-rainbow-delimiters-depth-2">(</span>freq_i<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-highlight-numbers-number">10</span>;
<span class="org-keyword">end</span>
</pre>
</div>
<p>
Ignore data above some frequency.
</p>
<div class="org-src-container">
<pre class="src src-matlab">weight_Uch_Vph<span class="org-rainbow-delimiters-depth-1">(</span>f<span class="org-type">&gt;</span><span class="org-highlight-numbers-number">1000</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-highlight-numbers-number">0</span>;
weight_Uch_Vpv<span class="org-rainbow-delimiters-depth-1">(</span>f<span class="org-type">&gt;</span><span class="org-highlight-numbers-number">1000</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-highlight-numbers-number">0</span>;
weight_Ucv_Vph<span class="org-rainbow-delimiters-depth-1">(</span>f<span class="org-type">&gt;</span><span class="org-highlight-numbers-number">1000</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-highlight-numbers-number">0</span>;
weight_Ucv_Vpv<span class="org-rainbow-delimiters-depth-1">(</span>f<span class="org-type">&gt;</span><span class="org-highlight-numbers-number">1000</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-highlight-numbers-number">0</span>;
</pre>
</div>
<div id="org60f2a97" class="figure">
<p><img src="figs/weights.png" alt="weights.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Weights amplitude (<a href="./figs/weights.png">png</a>, <a href="./figs/weights.pdf">pdf</a>)</p>
</div>
<p>
When we set some options for <code>vfit3</code>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">opts = struct<span class="org-rainbow-delimiters-depth-1">()</span>;
opts.stable = <span class="org-highlight-numbers-number">1</span>; <span class="org-comment">% Enforce stable poles</span>
opts.asymp = <span class="org-highlight-numbers-number">1</span>; <span class="org-comment">% Force D matrix to be null</span>
opts.relax = <span class="org-highlight-numbers-number">1</span>; <span class="org-comment">% Use vector fitting with relaxed non-triviality constraint</span>
opts.skip_pole = <span class="org-highlight-numbers-number">0</span>; <span class="org-comment">% Do NOT skip pole identification</span>
opts.skip_res = <span class="org-highlight-numbers-number">0</span>; <span class="org-comment">% Do NOT skip identification of residues (C,D,E)</span>
opts.cmplx_ss = <span class="org-highlight-numbers-number">0</span>; <span class="org-comment">% Create real state space model with block diagonal A</span>
opts.spy1 = <span class="org-highlight-numbers-number">0</span>; <span class="org-comment">% No plotting for first stage of vector fitting</span>
opts.spy2 = <span class="org-highlight-numbers-number">0</span>; <span class="org-comment">% Create magnitude plot for fitting of f(s)</span>
</pre>
</div>
<p>
We define the number of iteration.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Niter = <span class="org-highlight-numbers-number">5</span>;
</pre>
</div>
<p>
An we run the <code>vectfit3</code> algorithm.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">for</span> <span class="org-variable-name">iter</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:Niter</span>
<span class="org-rainbow-delimiters-depth-1">[</span>SER_Uch_Vph, poles, <span class="org-type">~</span>, fit_Uch_Vph<span class="org-rainbow-delimiters-depth-1">]</span> = vectfit3<span class="org-rainbow-delimiters-depth-1">(</span>tf_Uch_Vph<span class="org-type">.'</span>, <span class="org-highlight-numbers-number">1i</span><span class="org-type">*</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>f, poles_uh, weight_Uch_Vph, opts<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-keyword">end</span>
<span class="org-keyword">for</span> <span class="org-variable-name">iter</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:Niter</span>
<span class="org-rainbow-delimiters-depth-1">[</span>SER_Uch_Vpv, poles, <span class="org-type">~</span>, fit_Uch_Vpv<span class="org-rainbow-delimiters-depth-1">]</span> = vectfit3<span class="org-rainbow-delimiters-depth-1">(</span>tf_Uch_Vpv<span class="org-type">.'</span>, <span class="org-highlight-numbers-number">1i</span><span class="org-type">*</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>f, poles_uh, weight_Uch_Vpv, opts<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-keyword">end</span>
<span class="org-keyword">for</span> <span class="org-variable-name">iter</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:Niter</span>
<span class="org-rainbow-delimiters-depth-1">[</span>SER_Ucv_Vph, poles, <span class="org-type">~</span>, fit_Ucv_Vph<span class="org-rainbow-delimiters-depth-1">]</span> = vectfit3<span class="org-rainbow-delimiters-depth-1">(</span>tf_Ucv_Vph<span class="org-type">.'</span>, <span class="org-highlight-numbers-number">1i</span><span class="org-type">*</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>f, poles_uv, weight_Ucv_Vph, opts<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-keyword">end</span>
<span class="org-keyword">for</span> <span class="org-variable-name">iter</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:Niter</span>
<span class="org-rainbow-delimiters-depth-1">[</span>SER_Ucv_Vpv, poles, <span class="org-type">~</span>, fit_Ucv_Vpv<span class="org-rainbow-delimiters-depth-1">]</span> = vectfit3<span class="org-rainbow-delimiters-depth-1">(</span>tf_Ucv_Vpv<span class="org-type">.'</span>, <span class="org-highlight-numbers-number">1i</span><span class="org-type">*</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>f, poles_uv, weight_Ucv_Vpv, opts<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-keyword">end</span>
</pre>
</div>
<div id="org74c7619" class="figure">
<p><img src="figs/identification_matrix_fit.png" alt="identification_matrix_fit.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Transfer Function Extraction of the FRF matrix (<a href="./figs/identification_matrix_fit.png">png</a>, <a href="./figs/identification_matrix_fit.pdf">pdf</a>)</p>
</div>
<div id="org82ac5fe" class="figure">
<p><img src="figs/identification_matrix_fit_phase.png" alt="identification_matrix_fit_phase.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Transfer Function Extraction of the FRF matrix (<a href="./figs/identification_matrix_fit_phase.png">png</a>, <a href="./figs/identification_matrix_fit_phase.pdf">pdf</a>)</p>
</div>
<p>
And finally, we create the identified state space model:
</p>
<div class="org-src-container">
<pre class="src src-matlab">G_uh_xh = minreal<span class="org-rainbow-delimiters-depth-1">(</span>ss<span class="org-rainbow-delimiters-depth-2">(</span>full<span class="org-rainbow-delimiters-depth-3">(</span>SER_uh_xh.A<span class="org-rainbow-delimiters-depth-3">)</span>,SER_uh_xh.B,SER_uh_xh.C,SER_uh_xh.D<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
G_uv_xh = minreal<span class="org-rainbow-delimiters-depth-1">(</span>ss<span class="org-rainbow-delimiters-depth-2">(</span>full<span class="org-rainbow-delimiters-depth-3">(</span>SER_uv_xh.A<span class="org-rainbow-delimiters-depth-3">)</span>,SER_uv_xh.B,SER_uv_xh.C,SER_uv_xh.D<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
G_uh_xv = minreal<span class="org-rainbow-delimiters-depth-1">(</span>ss<span class="org-rainbow-delimiters-depth-2">(</span>full<span class="org-rainbow-delimiters-depth-3">(</span>SER_uh_xv.A<span class="org-rainbow-delimiters-depth-3">)</span>,SER_uh_xv.B,SER_uh_xv.C,SER_uh_xv.D<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
G_uv_xv = minreal<span class="org-rainbow-delimiters-depth-1">(</span>ss<span class="org-rainbow-delimiters-depth-2">(</span>full<span class="org-rainbow-delimiters-depth-3">(</span>SER_uv_xv.A<span class="org-rainbow-delimiters-depth-3">)</span>,SER_uv_xv.B,SER_uv_xv.C,SER_uv_xv.D<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
G = <span class="org-rainbow-delimiters-depth-1">[</span>G_uh_xh, G_uv_xh;
G_uh_xv, G_uv_xv<span class="org-rainbow-delimiters-depth-1">]</span>;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">save<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/plant.mat', 'G'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org14b4ee4" class="outline-2">
<h2 id="org14b4ee4"><span class="section-number-2">3</span> Sensor Noise</h2>
</div>
<div id="outline-container-org7fd124d" class="outline-2">
<h2 id="org7fd124d"><span class="section-number-2">4</span> Plant Analysis</h2>
<div class="outline-text-2" id="text-4">
</div>
<div id="outline-container-org0fae2b8" class="outline-3">
<h3 id="org0fae2b8"><span class="section-number-3">4.1</span> Load Plant</h3>
<div class="outline-text-3" id="text-4-1">
<div class="org-src-container">
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/plant.mat', 'G'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
<div id="outline-container-orgfeb824b" class="outline-3">
<h3 id="orgfeb824b"><span class="section-number-3">4.2</span> RGA-Number</h3>
<div class="outline-text-3" id="text-4-2">
<div class="org-src-container">
<pre class="src src-matlab">freqs = logspace<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-highlight-numbers-number">1000</span><span class="org-rainbow-delimiters-depth-1">)</span>;
G_resp = freqresp<span class="org-rainbow-delimiters-depth-1">(</span>G, freqs, <span class="org-string">'Hz'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
A = zeros<span class="org-rainbow-delimiters-depth-1">(</span>size<span class="org-rainbow-delimiters-depth-2">(</span>G_resp<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
RGAnum = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span>, length<span class="org-rainbow-delimiters-depth-2">(</span>freqs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">freqs</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
A<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span> = G_resp<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">.*</span>inv<span class="org-rainbow-delimiters-depth-1">(</span>G_resp<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>';
RGAnum<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span> = sum<span class="org-rainbow-delimiters-depth-1">(</span>sum<span class="org-rainbow-delimiters-depth-2">(</span>abs<span class="org-rainbow-delimiters-depth-3">(</span>A<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">-</span>eye<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-keyword">end</span>
<span class="org-comment">% </span><span class="org-comment"><span class="org-constant">RGA </span></span><span class="org-comment">= G0.*inv(G0)';</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, RGAnum<span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">U = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">2</span>, length<span class="org-rainbow-delimiters-depth-2">(</span>freqs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
S = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">2</span>, length<span class="org-rainbow-delimiters-depth-2">(</span>freqs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>
V = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">2</span>, length<span class="org-rainbow-delimiters-depth-2">(</span>freqs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">freqs</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
<span class="org-rainbow-delimiters-depth-1">[</span>Ui, Si, Vi<span class="org-rainbow-delimiters-depth-1">]</span> = svd<span class="org-rainbow-delimiters-depth-1">(</span>G_resp<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
U<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span> = Ui;
S<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span> = Si;
V<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span> = Vi;
<span class="org-keyword">end</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org1704d2b" class="outline-3">
<h3 id="org1704d2b"><span class="section-number-3">4.3</span> Rotation Matrix</h3>
<div class="outline-text-3" id="text-4-3">
<div class="org-src-container">
<pre class="src src-matlab">G0 = freqresp<span class="org-rainbow-delimiters-depth-1">(</span>G, <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org6ec2576" class="outline-2">
<h2 id="org6ec2576"><span class="section-number-2">5</span> Control Objective</h2>
<div class="outline-text-2" id="text-5">
<p>
The maximum expected stroke is \(y_\text{max} = 3mm \approx 5e^{-2} rad\) at \(1Hz\).
The maximum wanted error is \(e_\text{max} = 10 \mu rad\).
</p>
<p>
Thus, we require the sensitivity function at \(\omega_0 = 1\text{ Hz}\):
</p>
\begin{align*}
|S(j\omega_0)| &< \left| \frac{e_\text{max}}{y_\text{max}} \right| \\
&< 2 \cdot 10^{-4}
\end{align*}
<p>
In terms of loop gain, this is equivalent to:
\[ |L(j\omega_0)| > 5 \cdot 10^{3} \]
</p>
</div>
</div>
<div id="outline-container-org41cbf8b" class="outline-2">
<h2 id="org41cbf8b"><span class="section-number-2">6</span> Plant Scaling</h2>
<div class="outline-text-2" id="text-6">
<ul class="org-ul">
<li>measured noise</li>
<li>expected perturbations</li>
<li>maximum input usage</li>
<li>maximum wanted error</li>
</ul>
</div>
</div>
<div id="outline-container-org0103d04" class="outline-2">
<h2 id="org0103d04"><span class="section-number-2">7</span> Control Design</h2>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2019-09-16 lun. 11:59</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>