﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?application progid="SMath Studio Desktop" version="0.98.6179.21440"?>
<regions>
  <settings>
    <identity>
      <id>3aaa38fd-5fad-455c-9e3b-92a3a2e1048e</id>
      <revision>63</revision>
    </identity>
    <metadata lang="eng">
      <author>themzlab</author>
    </metadata>
    <calculation>
      <precision>4</precision>
      <exponentialThreshold>5</exponentialThreshold>
      <fractions>decimal</fractions>
    </calculation>
    <pageModel active="false" printAreas="true" simpleEqualsOnly="false" printBackgroundImages="true">
      <paper id="1" orientation="Landscape" width="1100" height="850" />
      <margins left="39" right="39" top="39" bottom="39" />
      <header alignment="Center" color="#a9a9a9">&amp;[DATE] &amp;[TIME] - &amp;[FILENAME]</header>
      <footer alignment="Center" color="#a9a9a9">&amp;[PAGENUM] / &amp;[COUNT]</footer>
      <backgrounds />
    </pageModel>
    <dependencies>
      <assembly name="SMath Studio Desktop" version="0.98.6179.21440" guid="a37cba83-b69c-4c71-9992-55ff666763bd" />
      <assembly name="Math Region" version="0.98.6179.21440" guid="02f1ab51-215b-466e-a74d-5d8b1cf85e8d" />
      <assembly name="Special Functions" version="1.11.6179.21442" guid="2814e667-4e12-48b1-8d51-194e480eabc5" />
      <assembly name="Text Region" version="1.10.6179.21446" guid="485d28c5-349a-48b6-93be-12a35a1c1e39" />
      <assembly name="Plot Region" version="1.9.6179.21450" guid="c451c2b5-798b-4f08-b9ec-b90963d1ddaa" />
    </dependencies>
  </settings>
  <region id="0" left="0" top="18" width="194" height="45" color="#000000" bgColor="#ffffff" fontSize="10">
    <math optimize="2">
      <description active="true" position="Top" lang="eng">
        <p>The loop speed and desired settling time determine how fast to run the filter</p>
      </description>
      <input>
        <e type="operand">KI_settling_time</e>
        <e type="operand">7</e>
        <e type="operand" style="unit">s</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">:</e>
        <e type="operand">pid_loop_speed</e>
        <e type="operand">20</e>
        <e type="operand" style="unit">Hz</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">:</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">sys</e>
      </input>
    </math>
  </region>
  <region id="1" left="639" top="18" width="96" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
    <math>
      <input>
        <e type="operand">t0</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="1">time</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="2" left="558" top="63" width="202" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
    <math optimize="2">
      <input>
        <e type="operand">x</e>
        <e type="function" args="1">floor</e>
        <e type="operand">x</e>
        <e type="operand">.5</e>
        <e type="operator" args="2">-</e>
        <e type="operand">0</e>
        <e type="function" preserve="true" args="2">round</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="3" left="0" top="117" width="93" height="24" color="#000000" bgColor="#00ff00" fontSize="10">
    <math optimize="2">
      <input>
        <e type="operand">loops</e>
        <e type="operand">200</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="4" left="0" top="153" width="364" height="43" color="#000000" bgColor="#ffffff" fontSize="10">
    <math>
      <input>
        <e type="operand">KI_settling_time</e>
        <e type="operand">pid_loop_speed</e>
        <e type="operator" args="2">*</e>
        <e type="operand">3</e>
        <e type="operator" args="2">/</e>
        <e type="function" args="1">floor</e>
      </input>
      <result action="numeric">
        <e type="operand">46</e>
      </result>
    </math>
  </region>
  <region id="5" left="0" top="225" width="507" height="45" color="#000000" bgColor="#ffffff" fontSize="10">
    <math optimize="2">
      <description active="true" position="Top" lang="eng">
        <p>This should be declared using the 'floor' formula above but that caused a slowdown</p>
      </description>
      <input>
        <e type="operand">KI.FILTER_LENGTH</e>
        <e type="operand">KI_settling_time</e>
        <e type="operand">pid_loop_speed</e>
        <e type="operator" args="2">*</e>
        <e type="operand">3</e>
        <e type="operator" args="2">/</e>
        <e type="function" args="1">floor</e>
        <e type="function" preserve="true" args="1">eval</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="6" left="0" top="333" width="436" height="155" color="#000000" bgColor="#ffffff" fontSize="10">
    <math optimize="2">
      <input>
        <e type="operand">command</e>
        <e type="operand">k</e>
        <e type="operand">1</e>
        <e type="operand">20</e>
        <e type="function" preserve="true" args="2">range</e>
        <e type="operand">_command</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">100</e>
        <e type="operator" args="2">:</e>
        <e type="function" preserve="true" args="3">for</e>
        <e type="operand">k</e>
        <e type="operand">21</e>
        <e type="operand">loops</e>
        <e type="function" preserve="true" args="2">range</e>
        <e type="operand">_command</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">500</e>
        <e type="operator" args="2">:</e>
        <e type="function" preserve="true" args="3">for</e>
        <e type="operand">k</e>
        <e type="operand">21</e>
        <e type="operand">loops</e>
        <e type="function" preserve="true" args="2">range</e>
        <e type="operand">_command</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">_command</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">k</e>
        <e type="operand">.2</e>
        <e type="operator" args="2">*</e>
        <e type="function" preserve="true" args="1">sin</e>
        <e type="operand">10</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">+</e>
        <e type="function" preserve="true" args="1">eval</e>
        <e type="operator" args="2">:</e>
        <e type="function" preserve="true" args="3">for</e>
        <e type="operand">_command</e>
        <e type="operand">4</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="6">line</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="7" left="450" top="378" width="479" height="24" color="#000000" bgColor="#80ffff" fontSize="10">
    <text lang="eng">
      <p>&lt;--- 2nd loop not really needed, can be merged in the 3rd</p>
    </text>
  </region>
  <region id="8" left="0" top="504" width="143" height="24" color="#000000" bgColor="#80ffff" fontSize="10">
    <math>
      <input>
        <e type="operand">command</e>
        <e type="operand">command</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="9" left="450" top="504" width="316" height="24" color="#000000" bgColor="#80ffff" fontSize="10">
    <text lang="eng">
      <p>&lt;--- evaluate procedure defined above</p>
    </text>
  </region>
  <region id="10" left="0" top="549" width="476" height="289" color="#000000" bgColor="#ffffff" fontSize="10">
    <math optimize="2">
      <description active="true" position="Top" lang="eng">
        <p>This loop shows the initialization of the filterand then the operation of it.  I think it is the ROOTcause for slow calculations</p>
      </description>
      <input>
        <e type="operand">filter_results</e>
        <e type="operand">SUM</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">command</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">KI.FILTER_LENGTH</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">:</e>
        <e type="operand">temp</e>
        <e type="operand">command</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">KI.FILTER_LENGTH</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">:</e>
        <e type="operand">previous</e>
        <e type="operand">command</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operator" args="2">:</e>
        <e type="operand">k</e>
        <e type="operand">2</e>
        <e type="operand">loops</e>
        <e type="function" preserve="true" args="2">range</e>
        <e type="operand">SUM</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">command</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">temp</e>
        <e type="operator" args="2">+</e>
        <e type="operand">previous</e>
        <e type="operator" args="2">-</e>
        <e type="function" preserve="true" args="1">eval</e>
        <e type="operator" args="2">:</e>
        <e type="operand">filter_out</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">SUM</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">KI.FILTER_LENGTH</e>
        <e type="operator" args="2">/</e>
        <e type="function" preserve="true" args="1">eval</e>
        <e type="operator" args="2">:</e>
        <e type="operand">temp</e>
        <e type="operand">SUM</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="function" preserve="true" args="1">eval</e>
        <e type="operator" args="2">:</e>
        <e type="operand">previous</e>
        <e type="operand">filter_out</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="function" preserve="true" args="1">eval</e>
        <e type="operator" args="2">:</e>
        <e type="operand">4</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="6">line</e>
        <e type="function" preserve="true" args="3">for</e>
        <e type="operand">filter_out</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">command</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operator" args="2">:</e>
        <e type="operand">filter_out</e>
        <e type="operand">6</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="8">line</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="11" left="0" top="909" width="257" height="24" color="#000000" bgColor="#80ffff" fontSize="10">
    <math>
      <input>
        <e type="operand">filter_results</e>
        <e type="operand">filter_results</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="12" left="270" top="909" width="316" height="24" color="#000000" bgColor="#80ffff" fontSize="10">
    <text lang="eng">
      <p>&lt;--- evaluate procedure defined above</p>
    </text>
  </region>
  <region id="13" left="126" top="936" width="186" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
    <math>
      <input>
        <e type="operand">idx</e>
        <e type="operand">1</e>
        <e type="operand">command</e>
        <e type="function" preserve="true" args="1">rows</e>
        <e type="function" preserve="true" args="2">range</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="14" left="126" top="972" width="240" height="158" color="#000000" bgColor="#ffffff" fontSize="10">
    <plot type="2d" render="lines" scale_x="0.0188981465036773" scale_y="0.0903985356722628" scale_z="0.00310399989315985" rotate_x="0" rotate_y="0" rotate_z="0" transpose_x="-72" transpose_y="-53" transpose_z="0">
      <input>
        <e type="operand">idx</e>
        <e type="operand">command</e>
        <e type="function" preserve="true" args="2">augment</e>
        <e type="operand">idx</e>
        <e type="operand">filter_results</e>
        <e type="function" preserve="true" args="2">augment</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">sys</e>
      </input>
    </plot>
  </region>
  <region id="15" left="387" top="972" width="158" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
    <math decimalPlaces="1">
      <input>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="1">time</e>
        <e type="operand">t0</e>
        <e type="operator" args="2">-</e>
      </input>
      <result action="numeric">
        <e type="operand">0.9</e>
        <e type="operand" style="unit">s</e>
        <e type="operator" args="2">*</e>
      </result>
    </math>
  </region>
  <region id="16" left="0" top="1215" width="254" height="57" color="#000000" bgColor="#ffffff" fontSize="10">
    <math optimize="2" evaluate="false">
      <input>
        <e type="operand">k</e>
        <e type="operand">1</e>
        <e type="operand">loops</e>
        <e type="function" preserve="true" args="2">range</e>
        <e type="operand">x_axis</e>
        <e type="operand">k</e>
        <e type="function" preserve="true" args="2">el</e>
        <e type="operand">k</e>
        <e type="operand">pid_loop_speed</e>
        <e type="operand">1</e>
        <e type="operator" args="2">*</e>
        <e type="operand" style="unit">s</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">/</e>
        <e type="operator" args="2">:</e>
        <e type="function" preserve="true" args="3">for</e>
      </input>
    </math>
  </region>
  <region id="17" left="0" top="1305" width="172" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
    <math evaluate="false">
      <input>
        <e type="operand">x_axis</e>
        <e type="function" preserve="true" args="1">length</e>
      </input>
      <result action="numeric">
        <e type="operand">200</e>
      </result>
    </math>
  </region>
  <region id="18" left="0" top="1359" width="238" height="26" color="#000000" bgColor="#ff8080" fontSize="10">
    <math evaluate="false">
      <description active="true" position="Top" lang="eng">
        <p>Here is where the slow calculation starts</p>
      </description>
      <input>
        <e type="operand">filter_results</e>
        <e type="function" preserve="true" args="1">length</e>
      </input>
      <result action="numeric">
        <e type="operand">200</e>
      </result>
    </math>
  </region>
  <region id="19" left="0" top="1458" width="326" height="26" color="#000000" bgColor="#ff8080" fontSize="10">
    <math optimize="2" evaluate="false">
      <description active="true" position="Top" lang="eng">
        <p>I'd like to add this to the plot, except it becomes SLOW</p>
      </description>
      <input>
        <e type="operand">I_term</e>
        <e type="operand">x_axis</e>
        <e type="operand">filter_results</e>
        <e type="function" preserve="true" args="2">augment</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="20" left="9" top="1539" width="385" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
    <math optimize="2" evaluate="false">
      <input>
        <e type="operand">Simulated_PID_result</e>
        <e type="operand">x_axis</e>
        <e type="operand">command</e>
        <e type="function" preserve="true" args="2">augment</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="21" left="486" top="1611" width="544" height="353" color="#000000" bgColor="#ffffff" fontSize="10">
    <plot evaluate="false" type="2d" render="lines" scale_x="0.0706088002751551" scale_y="2.01475845602771" scale_z="1.96311681439438" rotate_x="0" rotate_y="0" rotate_z="0" transpose_x="-233" transpose_y="-125" transpose_z="0">
      <description active="true" position="Top" lang="eng">
        <p>This plot calculates QUICKLY</p>
      </description>
      <input>
        <e type="operand">Simulated_PID_result</e>
      </input>
    </plot>
  </region>
  <region id="22" left="0" top="1620" width="464" height="353" color="#000000" bgColor="#ff8080" fontSize="10">
    <plot evaluate="false" type="2d" render="lines" scale_x="0.0776696803026706" scale_y="1.98494622342356" scale_z="1.93406871936108" rotate_x="0" rotate_y="0" rotate_z="0" transpose_x="-198" transpose_y="-140" transpose_z="0">
      <description active="true" position="Top" lang="eng">
        <p>This is a STEP response, it calculates SLOWLY</p>
      </description>
      <input>
        <e type="operand">Simulated_PID_result</e>
        <e type="operand">I_term</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">sys</e>
      </input>
    </plot>
  </region>
</regions>