Skip to content

Commit

Permalink
build based on a5be5b4
Browse files Browse the repository at this point in the history
  • Loading branch information
Documenter.jl committed Oct 28, 2024
1 parent 6d31ae3 commit 2e88099
Show file tree
Hide file tree
Showing 124 changed files with 9,046 additions and 9,050 deletions.
2 changes: 1 addition & 1 deletion dev/.documenter-siteinfo.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-10-28T08:41:38","documenter_version":"1.7.0"}}
{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-10-28T08:42:11","documenter_version":"1.7.0"}}
50 changes: 25 additions & 25 deletions dev/api/index.html

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions dev/examples/ballandbeam/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
d = iddata(y, u, 0.1)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">InputOutput data of length 1000, 1 outputs, 1 inputs, Ts = 0.1</code></pre><p>The input consists of the beam angle and the output is the position of the ball on the beam. This process is unstable (indeed, any student who has ever tried to control this process is familiar with the very recognizable sound of a nickel ball hitting the floor).</p><p>Before we estimate any model, we inspect the data and the coherence function</p><pre><code class="language-julia hljs">plot(
plot(d),
coherenceplot(d),
)</code></pre><img src="b9b0afa9.svg" alt="Example block output"/><p>The coherence is low for very low and high frequencies. Since the process is unstable, the data is collected in closed loop, and the input does not contain much DC energy. We thus expect to have difficulties recovering the DC properties of the model.</p><p>Since the data is collected in closed loop, we use an identification method that is unbiased in the presence of feedback. We&#39;ll go with the prediction-error method (PEM). Since the process is unstable, we tell the identification routine that we accept an unstable model by saying <code>stable=false</code>. If we do not do this, <a href="../../ss/#ControlSystemIdentification.newpem"><code>newpem</code></a> will try to stabilize an estimated unstable model. </p><p>We also split the data in half, and use the first half for estimation and the second for validation.</p><pre><code class="language-julia hljs">dtrain = d[1:end÷2]
)</code></pre><img src="fd711b7d.svg" alt="Example block output"/><p>The coherence is low for very low and high frequencies. Since the process is unstable, the data is collected in closed loop, and the input does not contain much DC energy. We thus expect to have difficulties recovering the DC properties of the model.</p><p>Since the data is collected in closed loop, we use an identification method that is unbiased in the presence of feedback. We&#39;ll go with the prediction-error method (PEM). Since the process is unstable, we tell the identification routine that we accept an unstable model by saying <code>stable=false</code>. If we do not do this, <a href="../../ss/#ControlSystemIdentification.newpem"><code>newpem</code></a> will try to stabilize an estimated unstable model. </p><p>We also split the data in half, and use the first half for estimation and the second for validation.</p><pre><code class="language-julia hljs">dtrain = d[1:end÷2]
dval = d[end÷2:end]

# A model of order 2-3 is reasonable,
model,_ = newpem(dtrain, 3, stable=false)

predplot(model, dval, h=1)
predplot!(model, dval, h=10, ploty=false)
predplot!(model, dval, h=20, ploty=false)</code></pre><img src="61d4cb61.svg" alt="Example block output"/><p>The figures above show the result of predicting <span>$h={1, 10, 20}$</span> steps into the future. Since the process is unstable, simulation is unstable and not feasible,<sup class="footnote-reference"><a id="citeref-1" href="#footnote-1">[1]</a></sup> and already 20 steps prediction shows tendencies towards being unstable.</p><p>We can visualize the estimated models in the frequency domain as well. We show both the model estimated using PEM and a nonparametric estimate using a Fourier-based method (<a href="../../freq/#ControlSystemIdentification.tfest"><code>tfest</code></a>), this method estimates a noise model as well.</p><pre><code class="language-julia hljs">w = exp10.(LinRange(-1.5, log10(pi/d.Ts), 200))
predplot!(model, dval, h=20, ploty=false)</code></pre><img src="e48caabb.svg" alt="Example block output"/><p>The figures above show the result of predicting <span>$h={1, 10, 20}$</span> steps into the future. Since the process is unstable, simulation is unstable and not feasible,<sup class="footnote-reference"><a id="citeref-1" href="#footnote-1">[1]</a></sup> and already 20 steps prediction shows tendencies towards being unstable.</p><p>We can visualize the estimated models in the frequency domain as well. We show both the model estimated using PEM and a nonparametric estimate using a Fourier-based method (<a href="../../freq/#ControlSystemIdentification.tfest"><code>tfest</code></a>), this method estimates a noise model as well.</p><pre><code class="language-julia hljs">w = exp10.(LinRange(-1.5, log10(pi/d.Ts), 200))
bodeplot(model.sys, w, lab=&quot;PEM&quot;, plotphase=false)
plot!(tfest(d))</code></pre><img src="69f0c5ee.svg" alt="Example block output"/><p>It looks like the two models disagree for low frequencies, which is expected after the discussion above.</p><section class="footnotes is-size-7"><ul><li class="footnote" id="footnote-1"><a class="tag is-link" href="#citeref-1">1</a>To learn more, see <a href="../unstable_systems/#Identification-of-unstable-systems">Identification of unstable systems</a></li></ul></section></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../delayest/">« Delay estimation</a><a class="docs-footer-nextpage" href="../flexible_robot/">Flexible robot arm »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Monday 28 October 2024 08:41">Monday 28 October 2024</span>. Using Julia version 1.11.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
plot!(tfest(d))</code></pre><img src="fe694e85.svg" alt="Example block output"/><p>It looks like the two models disagree for low frequencies, which is expected after the discussion above.</p><section class="footnotes is-size-7"><ul><li class="footnote" id="footnote-1"><a class="tag is-link" href="#citeref-1">1</a>To learn more, see <a href="../unstable_systems/#Identification-of-unstable-systems">Identification of unstable systems</a></li></ul></section></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../delayest/">« Delay estimation</a><a class="docs-footer-nextpage" href="../flexible_robot/">Flexible robot arm »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Monday 28 October 2024 08:42">Monday 28 October 2024</span>. Using Julia version 1.11.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
102 changes: 102 additions & 0 deletions dev/examples/closed_loop_id/1a76dd64.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 2e88099

Please sign in to comment.