1357 lines
		
	
	
		
			98 KiB
		
	
	
	
		
			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"> </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"> </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>[->] (<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>[->] (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>[->] (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>[->] (Gc.east) -- (add.west);
 | 
						|
  <span class="org-font-latex-sedate">\draw</span>[->] (Gn.south) -- (add.north);
 | 
						|
  <span class="org-font-latex-sedate">\draw</span>[->] (GiGc)node[branch]{} -- (Amp.south);
 | 
						|
  <span class="org-font-latex-sedate">\draw</span>[->] (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>[->] (<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>[->] (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>[->] (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"> & 0 \\ 0 & 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"> & 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"> & 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"> & 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"> & 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"> & 0 \\ 0 & 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>[->] (<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>[->] (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>[->] (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>[->] (Gc.east) -- (add.west);
 | 
						|
  <span class="org-font-latex-sedate">\draw</span>[->] (Gn.south) -- (add.north);
 | 
						|
  <span class="org-font-latex-sedate">\draw</span>[->] (GiGc)node[branch]{} -- (Amp.south);
 | 
						|
  <span class="org-font-latex-sedate">\draw</span>[->] (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>[->] (<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>[->] (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>[->] (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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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"><</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">></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">&</span> f<span class="org-type"><</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">></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">&</span> f<span class="org-type"><</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">></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">&</span> f<span class="org-type"><</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">></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">&</span> f<span class="org-type"><</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">></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">></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">></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">></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>
 |