From 3d7b9edfd9b3a5066207ba87b03e3846c593f898 Mon Sep 17 00:00:00 2001 From: Claudio Perez <50180406+claudioperez@users.noreply.github.com> Date: Fri, 10 Jan 2025 15:43:55 -0800 Subject: [PATCH 1/5] cmp - docs --- docs/library/index.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/library/index.rst b/docs/library/index.rst index a0c4fdb6f..63fc5cf51 100644 --- a/docs/library/index.rst +++ b/docs/library/index.rst @@ -1,5 +1,5 @@ -veux -==== +Library +======= .. currentmodule:: veux From 98d55a8850e3d933fef3482b8252f5f227b4bc6c Mon Sep 17 00:00:00 2001 From: Claudio Perez <50180406+claudioperez@users.noreply.github.com> Date: Sat, 11 Jan 2025 11:11:54 -0800 Subject: [PATCH 2/5] cmp - clean up --- docs/classes/Kalman_LDS.md | 224 --------------------- docs/classes/era.rst | 141 ------------- docs/classes/fourier.md | 384 ------------------------------------ docs/classes/index.rst | 13 -- docs/classes/modes.md | 88 --------- docs/classes/modes.rst | 124 ------------ docs/classes/okid.rst | 111 ----------- docs/classes/psd.md | 100 ---------- docs/classes/srim.md | 299 ---------------------------- docs/classes/srim.rst | 354 --------------------------------- docs/classes/statespace.rst | 149 -------------- docs/design/index.rst | 8 + docs/index.rst | 2 +- 13 files changed, 9 insertions(+), 1988 deletions(-) delete mode 100644 docs/classes/Kalman_LDS.md delete mode 100644 docs/classes/era.rst delete mode 100644 docs/classes/fourier.md delete mode 100644 docs/classes/index.rst delete mode 100644 docs/classes/modes.md delete mode 100644 docs/classes/modes.rst delete mode 100644 docs/classes/okid.rst delete mode 100644 docs/classes/psd.md delete mode 100644 docs/classes/srim.md delete mode 100644 docs/classes/srim.rst delete mode 100644 docs/classes/statespace.rst create mode 100644 docs/design/index.rst diff --git a/docs/classes/Kalman_LDS.md b/docs/classes/Kalman_LDS.md deleted file mode 100644 index 6d0f2ea43..000000000 --- a/docs/classes/Kalman_LDS.md +++ /dev/null @@ -1,224 +0,0 @@ ---- -title: Kalman's Mathematical Description of Linear Dynamical Systems -author: Chrystal Chern -date: Friday, December 15, 2023 -... - - - -## 0. Question and Scope - -```{=tex} -\begin{centering} -``` -*How much of the physical world can be determined from a given amount of experimental data?* -```{=tex} -\end{centering} -``` - -- Real, finite dimensional, continuous-time, linear time-invariant (LTI) dynamical systems (LTV before Section 5). -- Impulse response. - -## 1. Intro and Summary - -- **1&2&3**: Intro; define a dynamical system -- **4**: Present the problem of system realization from impulse response -- **5**: Present the *canonical structure theorem*: if a system realization is controllable and observable, $\implies$ it is an irreducible realization of the impulse response. -- **6&7**: Define controllability and observability and compute the canonical structure of an LTI system. -- **8**: Define MIMO state variables for LTI systems from transfer functions. -- **9**: Present common errors made by equating transfer functions and state space system realizations. - - -## 2. Axioms of Dynamical Systems - -A dynamical system consists of the following (developed for linear time-varying (LTV) systems by Kalman, but only presented for LTI systems here): - -### *state*, $\begin{bmatrix} \bm{x}(t) \\ \dot{\bm{x}}(t) \end{bmatrix} \in \Sigma = \mathbb{R}^{n}$ - -- Physical interpretation: instantaneous position and momentum. -- Definition: minimal information needed about the system's history which suffices to predict the effect of the past upon the future. -- Properties of state: $\begin{bmatrix} \bm{x}(t>\tau) \\ \dot{\bm{x}}(t>\tau) \end{bmatrix}$ is fully defined by $\begin{bmatrix} \bm{x}(\tau) \\ \dot{\bm{x}}(\tau) \end{bmatrix}$ and $\bm{u}(t\geq\tau)$. - -### *time*, $t \in \Theta = \mathbb{R}$ - -### *input*, $u \in \Omega =$ piecewise continuous functions - -- Physical interpretation: forcing function. - -### *transition function*, $\varphi: \Omega \times \Theta \times \Theta \times \Sigma \to \Sigma$ - -$$ -\bm{x}(t) = \varphi(\bm{u}, t; t_{o}, \bm{x}_{o}) -$$ - -- Linear on $\Omega \times \Theta$. -- Continuous with respect to $\Sigma, \Theta, \Omega$ and their induced products. - -### *output function*, $\psi: \Theta \times \Sigma \to \mathbb{R}$ - -- Physical interpretation: variables that are directly observed. -- Linear on $\Sigma$. -- Continuous with respect to $\Sigma, \Theta, \Omega$ and their induced products. - -Every linear time-invariant ($\bm{A,B,C}$ linear in $\Sigma$ and independent of time) dynamical system is thus governed by the equations[^1] - -$$ -\boxed{ - \begin{aligned} - \frac{d}{dt}\bm{x}(t) &= \bm{Ax}(t) + \bm{Bu}(t) \\ - \bm{y}(t) &= \bm{Cx}(t) - \end{aligned} -} -$${@eq:goveqs} - -The general solution to the differential equation is - -$$ -\begin{aligned} -\bm{x}(t) &= \Phi_{\bm{A}}(t,t_{o})\bm{x}_{o} + \int_{t_{o}}^{t}{\Phi_{\bm{A}}(t,\tau)\bm{Bu}(\tau)d\tau} -\\ -\Phi_{\bm{A}}(t,\sigma) &= e^{\bm{A}(t-\sigma)} -\end{aligned} -$${#eq:gensol} - -and it can be verified that $\Phi_{\bm{A}}(t,\sigma) = \Phi_{\bm{A}}(t,\tau)\Phi_{\bm{A}}(\tau,\sigma) ~~\forall{t,\tau,\sigma} \in \mathbb{R}$. - -[^1]: Sometimes you'll see a system with a *feed-through* term, $\bm{D}$ in the output function, $\bm{y}(t) = \bm{Cx}(t) + \bm{Du}(t)$. This term can always be added or removed because inputs $\bm{u}(t)$ and outputs $\bm{y}(t)$ are deterministic quantities. - -## 3. Equivalent Dynamical Systems - -The state vector $\bm{x}(t)$ is an abstract quantity in $\mathbb{R}^{n}$. Therefore it can be expressed in any $\mathbb{R}^{n}$ coordinates. The system with the state vector $\bar{\bm{x}}(t)$ is equivalent to the system with the state vector $\bm{x}(t)$ if there exists a nonsingular matrix $\bm{T} \in \mathbb{R}^{n\times n}$ such that - -$$ -\bar{\bm{x}}(t) = \bm{Tx}(t)~. -$$ - -The equivalent governing equations for the system are as follows: - -$$ -\begin{aligned} -\frac{d}{dt}\bar{\bm{x}}(t) &= \bm{TAT^{-1}\bar{x}}(t) + \bm{TBu}(t) \\ -\bm{y}(t) &= \bm{CT^{-1}\bar{x}}(t) -\end{aligned} -$$ - -## 4. System Realization from Impulse Response - -The *impulse response matrix* of a system is a time-dependent array of the output at each $\bm{y}$ coordinate in response to an pulse input, $\delta(t-t_{o})$, at each $\bm{u}$ coordinate. - -That is, given the input $u_{ij}(t) = \delta_{ij}\delta(t-t_{o})$, the output is $y_{ij} = S_{ij}(t,t_{o})$, where (by plugging in (@eq:gensol),) - -$$ -\bm{S}(t,\tau) = \bm{C} \Phi_{\bm{A}}(t,\tau) \bm{B} ~. -$$ - -Given $\bm{S}(t,t_{o})$ for a dynamical system, the output can be found for any input by the convolution integral: - -$$ -\bm{y}(t) = \int_{t_{o}}^{t}{\bm{S}(t,\tau)\bm{u}(\tau)d\tau} ~. -$$ - ->The central question of this paper is, -> ->```{=tex} ->\begin{centering} ->``` ->*When and how does the impulse-response matrix determine the dynamical equations of the system?* ->```{=tex} ->\end{centering} ->``` - -$$ -\begin{aligned} -\\ -\\ -\end{aligned} -$$ - -## 5. Kalman Canonical Staircase State Space Realization (K-CSSSR) - -Kalman presents his canonical form for state space system realization of a dynamical system. He proves that any system realization can be transformed into one which isolates the state vector into four parts: - -- controllable and unobservable ($\bm{x}_{cuo}$) -- controllable and observable ($\bm{x}_{co}$) -- uncontrollable and unobservable ($\bm{x}_{ucuo}$) -- ucontrollable and observable ($\bm{x}_{uco}$) - -The governing equations are as follows: - -$$ -\boxed{ - \begin{aligned} - \frac{d}{dt}\begin{bmatrix} - \bm{x}_{cuo}(t) \\ - \bm{x}_{co}(t) \\ - \bm{x}_{ucuo}(t) \\ - \bm{x}_{uco}(t) \\ - \end{bmatrix} &= - \begin{bmatrix} - \bm{A}_{cuo} & \bm{A}_{12} & \bm{A}_{13} & \bm{A}_{14} \\ - 0 & \bm{A}_{co} & 0 & \bm{A}_{24}\\ - 0 & 0 & \bm{A}_{ucuo} & \bm{A}_{34} \\ - 0 & 0 & 0 & \bm{A}_{uco} \\ - \end{bmatrix} - \begin{bmatrix} - \bm{x}_{cuo}(t) \\ - \bm{x}_{co}(t) \\ - \bm{x}_{ucuo}(t) \\ - \bm{x}_{uco}(t) \\ - \end{bmatrix} + - \begin{bmatrix} - \bm{B}_{cuo}(t) \\ - \bm{B}_{co}(t) \\ - 0 \\ - 0 \\ - \end{bmatrix} - \bm{u}(t) \\ - \bm{y}(t) &= - \begin{bmatrix} - 0 & \bm{C}_{co} & 0 & \bm{C}_{uco} - \end{bmatrix} - \bm{x}(t) - \end{aligned} -} -$${#eq:canonical} - -The impulse response matrix of a linear dynamical system depends only on the dynamics of the controllable and observable modes $\bm{x}_{co}(t)$. - -$$ -\bm{S}(t,\tau) = \bm{C}_{co}\Phi_{\bm{A}_{co}}(t,\tau)\bm{B}_{co} -$$ - -Equivalently, any controllable and observable realization of an impulse response matrix is *irreducible* and equivalent to any other controllable and observable realization. - -If a dynamical system is controllable and observable, it has a unique impulse response matrix. - ->The answer to the central question of this paper is, ->```{=tex} ->\begin{centering} ->``` ->*The impulse-response matrix fully determines the dynamical equations of a controllable and observable system.* ->```{=tex} ->\end{centering} ->``` - - -## 6. Definition of Controllability and Observability - -The following statements are equivalent: - -- The system is controllable. -- The pair, $\{\bm{A},\bm{B}\}$, is controllable. -- The matrix $\bm{P} = \begin{bmatrix} \bm{B} & \bm{AB} & \cdots & \bm{A^{n-1}B} \end{bmatrix}$ has rank $n$. - -The following statements are equivalent: - -- The system is observable. -- The pair, $\{\bm{A},\bm{C}\}$, is observable. -- The matrix $\bm{Q} = \begin{bmatrix} \bm{C} \\ \bm{CA} \\ \cdots \\ \bm{CA^{n-1}} \end{bmatrix}$ has rank $n$. - -## 7. Computing the Canonical Form (@eq:canonical) - -The transformation matrix that separates us into controllable and uncontrollable modes is $\bm{M} = \begin{bmatrix} \bm{M}_{c} & \bm{M}_{uc} \end{bmatrix}$, where the columns of $\bm{M}_{c}$ are the linearly independent columns of $\bm{P}$ and the columns of $\bm{M}_{uc}$ are chosen such that $\bm{M}$ is full rank. - -The transformation matrix that separates us into observable and unobservable modes is $\bm{N} = \begin{bmatrix} \bm{N}_{o} \\ \bm{N}_{uo} \end{bmatrix}$, where the rows of $\bm{N}_{o}$ are the linearly independent rows of $\bm{Q}$ and the rows of $\bm{N}_{uo}$ are chosen such that $\bm{N}$ is full rank. \ No newline at end of file diff --git a/docs/classes/era.rst b/docs/classes/era.rst deleted file mode 100644 index 314a38e75..000000000 --- a/docs/classes/era.rst +++ /dev/null @@ -1,141 +0,0 @@ - -Eigensystem Realization Algorithm (ERA) ---------------------------------------- - - -As shown in the previous section, a structural system’s dynamic behavior -can be represented by the four coefficients -(:math:`\mathbf{A},\mathbf{B},\mathbf{C},\mathbf{D}`) of its discrete -LTI state-space representation. The `Ho-Kalman -Algorithm `__, or -`Eigensystem Realization Algorithm `__, -produces a *reduced order model* for these four coefficients, -(:math:`\mathbf{\tilde{A}},\mathbf{\tilde{B}},\mathbf{\tilde{C}},\mathbf{\tilde{D}}`), -based on an impulse input and its corresponding response output. Then, -modal properties can be extracted from :math:`\mathbf{\tilde{A}}` and -:math:`\mathbf{\tilde{C}}`. - -With the discrete LTI model, a unit impulse input with zero initial -conditions produces an output of constants -(:math:`\mathbf{D,CB,CAB,...,CA}^{k-1}\mathbf{B}`). These constants are -called *Markov parameters* because they must be unique for a given -system – there is only one possible output for a unit impulse input. - -.. math:: - - - \begin{aligned} - \mathbf{x}_{k+1} &= \mathbf{Ax}_{k} + \mathbf{Bu}_{k} \\ - \mathbf{y}_{k} &= \mathbf{Cx}_{k} + \mathbf{Du}_{k} \\ - \end{aligned} - -.. math:: - - - \begin{aligned} - \mathbf{u}_{0},\mathbf{u}_{1},\mathbf{u}_{2},...,\mathbf{u}_{k} &= \mathbf{I,0,0,...,0} \\ - \mathbf{x}_{0},\mathbf{x}_{1},\mathbf{x}_{2},...,\mathbf{x}_{k} &= \mathbf{0,B,AB,...,A}^{k-1}\mathbf{B} \\ - \mathbf{y}_{0},\mathbf{y}_{1},\mathbf{y}_{2},...,\mathbf{y}_{k} &= \mathbf{D,CB,CAB,...,CA}^{k-1}\mathbf{B} \\ - \end{aligned} - -Knowing that the impulse response output data directly give the Markov -parameters, the data can then be stacked into the generalized blockwise -Hankel matrix :math:`\mathbf{H}`: - -.. math:: - - - \mathbf{H} - = - \begin{bmatrix} - \mathbf{y}_{1} & \mathbf{y}_{2} & \cdots & \mathbf{y}_{m_{c}} \\ - \mathbf{y}_{2} & \mathbf{y}_{3} & \cdots & \mathbf{y}_{m_{c}+1} \\ - \vdots & \vdots & \ddots & \vdots \\ - \mathbf{y}_{m_{o}} & \mathbf{y}_{m_{o}+1} & \cdots & \mathbf{y}_{m_{o}+m_{c}-1} \\ - \end{bmatrix} - = - \begin{bmatrix} - \mathbf{CB} & \mathbf{CAB} & \cdots & \mathbf{CA}^{m_{c}-1}\mathbf{B} \\ - \mathbf{CAB} & \mathbf{CA}^{2}\mathbf{B} & \cdots & \mathbf{CA}^{m_{c}}\mathbf{B} \\ - \vdots & \vdots & \ddots & \vdots \\ - \mathbf{CA}^{m_{o}-1}\mathbf{B} & \mathbf{CA}^{m_{o}}\mathbf{B} & \cdots & \mathbf{CA}^{m_{c}+m_{o}-2}\mathbf{B} \\ - \end{bmatrix} - = - \mathbf{\mathcal{OC}} - -where :math:`\mathbf{\mathcal{O}}` and :math:`\mathbf{\mathcal{C}}` are -the observability and controllability matrices of the system: - -.. math:: - - - \mathbf{\mathcal{O}} = \begin{bmatrix} - \mathbf{C} \\ \mathbf{CA} \\ \mathbf{CA}^{2} \\ \vdots \\ \mathbf{CA}^{m_{o}-1} - \end{bmatrix}, \hspace{1cm} - \mathbf{\mathcal{C}} = \begin{bmatrix} \mathbf{B} & \mathbf{AB} & \mathbf{A}^{2}\mathbf{B} & \cdots & \mathbf{A}^{m_{c}-1}\mathbf{B} \end{bmatrix} - -The shifted Hankel matrix, :math:`\mathbf{H'}` (one time step ahead of -:math:`\mathbf{H}`), is shown below: - -.. math:: - - - \mathbf{H'} - = - \begin{bmatrix} - \mathbf{y}_{2} & \mathbf{y}_{3} & \cdots & \mathbf{y}_{m_{c}+1} \\ - \mathbf{y}_{3} & \mathbf{y}_{4} & \cdots & \mathbf{y}_{m_{c}+2} \\ - \vdots & \vdots & \ddots & \vdots \\ - \mathbf{y}_{m_{o}+1} & \mathbf{y}_{m_{o}+2} & \cdots & \mathbf{y}_{m_{o}+m_{c}} \\ - \end{bmatrix} - = - \begin{bmatrix} - \mathbf{CAB} & \mathbf{CA}^{2}\mathbf{B} & \cdots & \mathbf{CA}^{m_{c}}\mathbf{B} \\ - \mathbf{CA}^{2}\mathbf{B} & \mathbf{CA}^{3}\mathbf{B} & \cdots & \mathbf{CA}^{m_{c}+1}\mathbf{B} \\ - \vdots & \vdots & \ddots & \vdots \\ - \mathbf{CA}^{m_{o}}\mathbf{B} & \mathbf{CA}^{m_{o}+1}\mathbf{B} & \cdots & \mathbf{CA}^{m_{c}+m_{o}-1}\mathbf{B}\\ - \end{bmatrix} - = - \mathbf{\mathcal{O}A\mathcal{C}} - -By taking the dominant terms of the singular value decomposition -of :math:`\mathbf{H}`, and transforming the relationship between -:math:`\mathbf{H} = \mathbf{\mathcal{OC}}` and -:math:`\mathbf{H'} = \mathbf{\mathcal{O}A\mathcal{C}}`, a reduced-order -model is constructed as follows: - -.. math:: - - - \mathbf{H} = \mathbf{U}\Sigma\mathbf{V}^{H} = - \begin{bmatrix} \mathbf{\tilde{U}} & \mathbf{U}_{t} \end{bmatrix} - \begin{bmatrix} \tilde{\Sigma} & \mathbf{0} \\ \mathbf{0} & \Sigma_{t} \end{bmatrix} - \begin{bmatrix} \mathbf{\tilde{V}}^{H} \\ \mathbf{V}_{t}^{H} \end{bmatrix} - \approx \mathbf{\tilde{U}}\tilde{\Sigma}\mathbf{\tilde{V}}^{H} - -where the superscript :math:`H` denotes conjugate transpose and the -subscript :math:`t` indicates elements to be truncated such that only -the first :math:`r` dominant singular values in :math:`\tilde{\Sigma}` -are retained, - -.. math:: - - - \begin{aligned} - \mathbf{\tilde{A}} &= \tilde{\Sigma}^{-1/2}\mathbf{\tilde{U}}^{H}\mathbf{H'\tilde{V}}\tilde{\Sigma}^{-1/2} \\ - \mathbf{\tilde{B}} &= \tilde{\Sigma}^{1/2}\mathbf{\tilde{V}}^{H} - \begin{bmatrix} \mathbf{I}_{q} \\ \mathbf{0} \end{bmatrix} \\ - \mathbf{\tilde{C}} &= \begin{bmatrix} \mathbf{I}_{p} & \mathbf{0} \end{bmatrix} \mathbf{\tilde{U}}\tilde{\Sigma}^{1/2} \\ - \mathbf{\tilde{D}} &= \mathbf{y}_{0} - \end{aligned} - -where :math:`p` indicates the number of outputs and :math:`q` the number -of inputs, and - -.. math:: - - - \begin{aligned} - \mathbf{\tilde{x}}_{k+1} &= \mathbf{\tilde{A}\tilde{x}}_{k} + \mathbf{\tilde{B}u}_{k} \\ - \mathbf{y}_{k} &= \mathbf{\tilde{C}\tilde{x}}_{k} + \mathbf{\tilde{D}u}_{k}. \\ - \end{aligned} diff --git a/docs/classes/fourier.md b/docs/classes/fourier.md deleted file mode 100644 index 6abd53031..000000000 --- a/docs/classes/fourier.md +++ /dev/null @@ -1,384 +0,0 @@ - - - -## Fourier series expansion - -Certain **periodic** functions can be expressed as a Fourier series expansion. With $P$ as the period of the function, - -The sine-cosine form represents $f(x)$ in the orthogonal basis $\left\{\cos{\frac{2\pi n x}{P}}, \sin{\frac{2\pi n x}{P}} ~|~ n \in \mathbb{Z}_{+} \right\}$. -$$\begin{aligned} - f(x) &= \frac{a_{0}}{2} - + \sum_{n=1}^{\infty}\left({ - a_{n}\cos{\frac{2{\pi}nx}{P}} - + b_{n}\sin{\frac{2{\pi}nx}{P}} - }\right) \\ - a_{0} &= \frac{2}{P} \int_{-\frac{P}{2}}^{\frac{P}{2}} {f(t)dt}~, \\ - a_{n} &= \frac{2}{P} \int_{-\frac{P}{2}}^{\frac{P}{2}} - {f(t) \cos{\frac{2{\pi}nt}{P}} dt}~, \text{ and} \\ - b_{n} &= \frac{2}{P} \int_{-\frac{P}{2}}^{\frac{P}{2}} - {f(t) \sin{\frac{2{\pi}nt}{P}} dt}~. -\end{aligned}$$ - -The exponential form represents $f(x)$ in the orthogonal basis $\left\{\exp{i \frac{2\pi n x}{P}} ~|~ n \in \mathbb{Z} \right\}$. -$$\begin{aligned} -f(x) &= \sum_{n=-\infty}^{n=\infty} {c_{n}e^{i\frac{2{\pi}n}{P}x}} \\ -c_{n} &= \frac{1}{P} \int_{-\frac{P}{2}}^{\frac{P}{2}} {f(t) e^{-i\frac{2{\pi}n}{P}t} dt} -\end{aligned}$$ - - -## Fourier transform - -Plug $c_{n}$ into the exponential form: -$$\begin{aligned} - f(x) &= \sum_{n=-\infty}^{n=\infty} {\frac{1}{P}} - \int_{-\frac{P}{2}}^{\frac{P}{2}} - f(t) e^{-i\frac{2{\pi}n}{P}t} dt~ - e^{i\frac{2{\pi}n}{P}x} \\ - &= \sum_{n=-\infty}^{n=\infty} {\frac{1}{P}} - \int_{-\frac{P}{2}}^{\frac{P}{2}} - f(t) e^{i\frac{2{\pi}n}{P}(x-t)} dt \\ -\end{aligned}$$ - -To generalize to certain **non-periodic** functions, take the limit as $P \rightarrow \infty$, and change from the variable of summation $n$ to the variable of integration $\omega = \frac{2\pi{}n}{P}$ . - -$$\begin{aligned} - f(x) &= \underset{P \rightarrow \infty}\lim{} - \sum_{n=-\infty}^{n=\infty} \left( {\frac{1}{P}} - \int_{-\frac{P}{2}}^{\frac{P}{2}} - f(t) e^{i\frac{2{\pi}n}{P}(x-t)} dt \right) \\ - &= \underset{P \rightarrow \infty}\lim{} - \int_{n=-\infty}^{n=\infty} \left( - \int_{-\frac{P}{2}}^{\frac{P}{2}} - f(t) e^{i\frac{2{\pi}n}{P}(x-t)} dt \right) {\frac{dn}{P}} \\ - &= \int_{\omega=-\infty}^{\omega=\infty} \left( - \int_{-\infty}^{\infty} - f(t) e^{i\omega(x-t)} dt \right) \frac{d\omega}{2\pi} \\ - &= \frac{1}{2\pi}\int_{-\infty}^{\infty} e^{i\omega x} \left( - \int_{-\infty}^{\infty} - f(t) e^{-i\omega t} dt \right) d\omega \\ -\end{aligned}$$ - -The Fourier transform $\mathcal{F}(f)$ is expressed as - -$$\begin{aligned} -\mathcal{F}(f) &= \phi(\omega) \\ -\phi(\omega) &= \int_{-\infty}^{\infty}{f(t)e^{-i\omega t} dt} -\end{aligned}$$ - -and exists for all $f$ that are piecewise continuous and absolutely integrable. - -The inverse Fourier transform $\mathcal{F}^{-1}(\phi)$ is expressed as - -$$\begin{aligned} -\mathcal{F}^{-1}(\phi) &= f(t) \\ -f(t) &= \frac{1}{2\pi}\int_{-\infty}^{\infty}{\phi(\omega)e^{i\omega x} d\omega} -\end{aligned}$$ - - -## Discrete Fourier Transform (DFT) - -The Discrete Fourier Transform fits a summation approximation over $t \in \{0,1,2,\dots,n-1\}$ of the integral $\phi(\omega) = \int_{-\infty}^{\infty}{f(t)e^{-i\omega t} dt}$ over the discrete domain $\omega_{n} = e^{i\frac{2\pi}{n}}, n \in \{0,1,2,\dots,n-1\}$. - -$$ -\phi(n) = -\sum_{t=0}^{t=n-1}f(t)e^{i\frac{2\pi}{n}t}~, -$$ - -This corresponds to frequencies $\omega \in {0, \frac{2\pi}{n}, \frac{4\pi}{n}}$ - -$$ -\phi(\omega_{n}) = -\sum_{t=0}^{t=n-1}f(t)\omega_{n}^{t}~, -$$ - -This transformation can be expressed as a Hermitian matrix multplication. - - -$$ - \begin{bmatrix} - c_{0} \\ - c_{1} \\ - c_{2} \\ - \vdots \\ - c_{n-1} \\ - \end{bmatrix} - = - \begin{bmatrix} - 1 & 1 & 1 & \cdots & 1 \\ - 1 & \omega_{n} & \omega_{n}^{2} & \cdots & \omega_{n}^{n-1} \\ - 1 & \omega_{n}^{2} & \omega_{n}^{4} & \cdots & \omega_{n}^{2(n-1)} \\ - \vdots & \vdots & \vdots & \ddots & \vdots \\ - 1 & \omega_{n}^{n-1} & \omega_{n}^{2(n-1)} & \cdots & \omega_{n}^{(n-1)^{2}} \\ - \end{bmatrix} - \begin{bmatrix} - y_{0} \\ - y_{1} \\ - y_{2} \\ - \vdots \\ - y_{n-1} \\ - \end{bmatrix} -$$ - - - -## Fast Fourier Transform (FFT) - -The bare-bones (radix-2) Cooley-Tukey algorithm requires the series length to be a power of 2. - -Base case: $n=1$ - -$$ - c_{0} - = F_{1}y_{0} - = \begin{bmatrix} - 1 - \end{bmatrix} - y_{0} -$$ - -The next case: $n=2$ -$$ -\begin{aligned} - \begin{bmatrix} - c_{0} \\ - c_{1} - \end{bmatrix} - &= F_{2} - \begin{bmatrix} - y_{0} \\ - y_{1} - \end{bmatrix} - = \begin{bmatrix} - 1 & 1 \\ - 1 & \omega_{2} - \end{bmatrix} - \begin{bmatrix} - y_{0} \\ - y_{1} - \end{bmatrix} - = \begin{bmatrix} - 1 & 1 \\ - 1 & -1 - \end{bmatrix} - \begin{bmatrix} - y_{0} \\ - y_{1} - \end{bmatrix} \\ - &= \begin{bmatrix} - I_{1} & D_{1} \\ - I_{1} & -D_{1} - \end{bmatrix} - \begin{bmatrix} - F_{1} & 0 \\ - 0 & F_{1} - \end{bmatrix} - \begin{bmatrix} - y_{0} \\ - y_{1} - \end{bmatrix} - = \begin{bmatrix} - 1 & 1 \\ - 1 & -1 - \end{bmatrix} - \begin{bmatrix} - 1 & 0 \\ - 0 & 1 - \end{bmatrix} - \begin{bmatrix} - y_{0} \\ - y_{1} - \end{bmatrix} -\end{aligned} -$$ - -For $n = 4, 8, 16, 32, ...$ - -$$ - \begin{bmatrix} - c_{0} \\ - c_{1} \\ - \vdots \\ - c_{n-1} - \end{bmatrix} - = F_{n} - \begin{bmatrix} - y_{0} \\ - y_{1} \\ - \vdots \\ - y_{n-1} - \end{bmatrix} - = \begin{bmatrix} - I_{n/2} & D_{n/2} \\ - I_{n/2} & -D_{n/2} - \end{bmatrix} - \begin{bmatrix} - F_{n/2} & 0 \\ - 0 & F_{n/2} - \end{bmatrix} - \begin{bmatrix} - y_{even} \\ - y_{odd} - \end{bmatrix} -$$ - - - - - - - diff --git a/docs/classes/index.rst b/docs/classes/index.rst deleted file mode 100644 index d32bb7479..000000000 --- a/docs/classes/index.rst +++ /dev/null @@ -1,13 +0,0 @@ -Classes -======= - -.. toctree:: - :maxdepth: 2 - - statespace.rst - modes.rst - era.rst - okid.rst - srim.rst - - diff --git a/docs/classes/modes.md b/docs/classes/modes.md deleted file mode 100644 index 1e1d94aa6..000000000 --- a/docs/classes/modes.md +++ /dev/null @@ -1,88 +0,0 @@ -# Modal Properties from State Space Realization - -Structural system dynamics are in continuous time. With the time-domain system identification methods in the `mdof` package such as OKID-ERA and SRIM, a structural system's discrete-time state space realization is obtained from measured data. The following process recovers the structure's modal properties (i.e., natural frequencies, modal damping ratios, and mode shapes) from the discrete state space realization coefficients, $\mathbf{A}$ and $\mathbf{C}$. - -## Eigendecompositions of $\mathbf{A}_{c}$ and $\mathbf{A}$ - -The relationship between the eigendecompositions of $\mathbf{A}_{c}$, the continuous-time state transition matrix, and $\mathbf{A}$, the discrete-time state transition matrix, is shown below. - -$$\begin{aligned} -\mathbf{A}_{c} &= \Phi\Lambda\Phi^{-1} \\ -\mathbf{A} &= \Psi\Gamma\Psi^{-1} \\ -\end{aligned}$$ - -$$\begin{aligned} -\mathbf{A} = e^{\mathbf{A}_{c}\Delta t} = e^{\Phi\Lambda\Phi^{-1}\Delta t} = \Phi e^{\Lambda\Delta t}\Phi^{-1} -\end{aligned}$$ - -$$\begin{aligned} -\Psi = \Phi, \quad \Gamma = e^{\Lambda\Delta t} \\ -\end{aligned}$$ - -where - -$$\Psi = -\begin{bmatrix} -\psi_{1} & \psi_{2} & \cdots & \psi_{r} -\end{bmatrix}, \quad{} -\Phi = -\begin{bmatrix} -\phi_{1} & \phi_{2} & \cdots & \phi_{r} -\end{bmatrix} -$$ - -$$ -\Gamma = -\begin{bmatrix} -\gamma_{1} & 0 & \cdots & 0 \\ -0 & \gamma_{2} & \cdots & 0 \\ -\vdots & \vdots & \ddots & \vdots \\ -0 & 0 & \cdots & \gamma_{r} -\end{bmatrix}, \quad -\Lambda = \begin{bmatrix} -\lambda_{1} & 0 & \cdots & 0 \\ -0 & \lambda_{2} & \cdots & 0 \\ -\vdots & \vdots & \ddots & \vdots \\ -0 & 0 & \cdots & \lambda_{r} -\end{bmatrix}$$ - -- $\gamma_{j}$ and $\psi_{j}$ are the eigenvalues and eigenvectors of $\mathbf{A}$, - -- $\lambda_{j}$ and $\phi_{j}$ are the eigenvalues and eigenvectors of $\mathbf{A}_{c}$, - -- $j \in [1,2,\dots,r]$, and $r$ is the model order. - - -## Natural Frequencies and Modal Damping Ratios - -From the eigendecompositions of $\mathbf{A}_{c}$ and $\mathbf{A}$, we have - -$$\begin{aligned} -\Gamma = e^{\Lambda\Delta t} -\implies -\lambda_{j} = (\ln{\gamma_{j}})/\Delta t~. -\end{aligned}$$ - -Assuming modal damping, these eigenvalues $\lambda_{j}$ contain the damped natural frequencies and modal damping factors: - -$$\begin{aligned} -\lambda_{j} &= -\zeta_{j}\omega_{j} \pm i\left(\omega_{j}\sqrt{1-\zeta_{j}^{2}}\right), \hspace{0.5cm} i=\sqrt{-1} \\ \\ -\lambda_{j}\bar{\lambda}_{j} &= \zeta_{j}^{2}\omega_{j}^{2} + \omega_{j}^{2}\left(1-\zeta_{j}^{2}\right) \\ - &= \omega_{j}^{2}\left(\zeta_{j}^{2} + 1 - \zeta_{j}^{2}\right) \\ - &= \omega_{j}^{2} \\ \\ -\omega_{j} &= \sqrt{\lambda_{j}\bar{\lambda}_{j}} = | \lambda_{j} |, \\ -\zeta_{j} &= -\frac{\text{Re}(\lambda_{j})}{\omega_{j}},\\ -\end{aligned}$$ - -where the overline symbol $~\overline{\cdot}~$ indicates the complex conjugate, $\text{Re}(\cdot)$ indicates the real part of the complex number, $\omega_{j}$ are the modal frequencies, and $\zeta_{j}$ are the modal damping ratios. - -## Mode Shapes - -The eigenvectors of the continuous state transition matrix $\mathbf{A}_{c}$ transform the modal coordinates into the state coordinates. We define the mode shapes as the transformation from modal coordinates to the output coordinates. - -$$\begin{aligned} -\mathbf{x}(t) &= \mathbf{\Phi q}(t) \\ -\mathbf{y}(t) &= \mathbf{Cx}(t) + \mathbf{Du}(t) \\ -\mathbf{\Phi}_{\text{modal}} &= \mathbf{C\Phi} -\end{aligned}$$ - diff --git a/docs/classes/modes.rst b/docs/classes/modes.rst deleted file mode 100644 index 01891b35b..000000000 --- a/docs/classes/modes.rst +++ /dev/null @@ -1,124 +0,0 @@ -Modal Properties from State Space Realization -============================================= - -Structural system dynamics are in continuous time. With the time-domain -system identification methods in the ``mdof`` package such as OKID-ERA -and SRIM, a structural system’s discrete-time state space realization is -obtained from measured data. The following process recovers the -structure’s modal properties (i.e., natural frequencies, modal damping -ratios, and mode shapes) from the discrete state space realization -coefficients, :math:`\mathbf{A}` and :math:`\mathbf{C}`. - -Eigendecompositions of :math:`\mathbf{A}_{c}` and :math:`\mathbf{A}` --------------------------------------------------------------------- - -The relationship between the eigendecompositions of -:math:`\mathbf{A}_{c}`, the continuous-time state transition matrix, and -:math:`\mathbf{A}`, the discrete-time state transition matrix, is shown -below. - -.. math:: - - \begin{aligned} - \mathbf{A}_{c} &= \Phi\Lambda\Phi^{-1} \\ - \mathbf{A} &= \Psi\Gamma\Psi^{-1} \\ - \end{aligned} - -.. math:: - - \begin{aligned} - \mathbf{A} = e^{\mathbf{A}_{c}\Delta t} = e^{\Phi\Lambda\Phi^{-1}\Delta t} = \Phi e^{\Lambda\Delta t}\Phi^{-1} - \end{aligned} - -.. math:: - - \begin{aligned} - \Psi = \Phi, \quad \Gamma = e^{\Lambda\Delta t} \\ - \end{aligned} - -where - -.. math:: - - \Psi = - \begin{bmatrix} - \psi_{1} & \psi_{2} & \cdots & \psi_{r} - \end{bmatrix}, \quad{} - \Phi = - \begin{bmatrix} - \phi_{1} & \phi_{2} & \cdots & \phi_{r} - \end{bmatrix} - -.. math:: - - - \Gamma = - \begin{bmatrix} - \gamma_{1} & 0 & \cdots & 0 \\ - 0 & \gamma_{2} & \cdots & 0 \\ - \vdots & \vdots & \ddots & \vdots \\ - 0 & 0 & \cdots & \gamma_{r} - \end{bmatrix}, \quad - \Lambda = \begin{bmatrix} - \lambda_{1} & 0 & \cdots & 0 \\ - 0 & \lambda_{2} & \cdots & 0 \\ - \vdots & \vdots & \ddots & \vdots \\ - 0 & 0 & \cdots & \lambda_{r} - \end{bmatrix} - -- :math:`\gamma_{j}` and :math:`\psi_{j}` are the eigenvalues and - eigenvectors of :math:`\mathbf{A}`, - -- :math:`\lambda_{j}` and :math:`\phi_{j}` are the eigenvalues and - eigenvectors of :math:`\mathbf{A}_{c}`, - -- :math:`j \in [1,2,\dots,r]`, and :math:`r` is the model order. - -Natural Frequencies and Modal Damping Ratios --------------------------------------------- - -From the eigendecompositions of :math:`\mathbf{A}_{c}` and -:math:`\mathbf{A}`, we have - -.. math:: - - \begin{aligned} - \Gamma = e^{\Lambda\Delta t} - \implies - \lambda_{j} = (\ln{\gamma_{j}})/\Delta t~. - \end{aligned} - -Assuming modal damping, these eigenvalues :math:`\lambda_{j}` contain -the damped natural frequencies and modal damping factors: - -.. math:: - - \begin{aligned} - \lambda_{j} &= -\zeta_{j}\omega_{j} \pm i\left(\omega_{j}\sqrt{1-\zeta_{j}^{2}}\right), \hspace{0.5cm} i=\sqrt{-1} \\ \\ - \lambda_{j}\bar{\lambda}_{j} &= \zeta_{j}^{2}\omega_{j}^{2} + \omega_{j}^{2}\left(1-\zeta_{j}^{2}\right) \\ - &= \omega_{j}^{2}\left(\zeta_{j}^{2} + 1 - \zeta_{j}^{2}\right) \\ - &= \omega_{j}^{2} \\ \\ - \omega_{j} &= \sqrt{\lambda_{j}\bar{\lambda}_{j}} = | \lambda_{j} |, \\ - \zeta_{j} &= -\frac{\text{Re}(\lambda_{j})}{\omega_{j}},\\ - \end{aligned} - -where the overline symbol :math:`~\overline{\cdot}~` indicates the -complex conjugate, :math:`\text{Re}(\cdot)` indicates the real part of -the complex number, :math:`\omega_{j}` are the modal frequencies, and -:math:`\zeta_{j}` are the modal damping ratios. - -Mode Shapes ------------ - -The eigenvectors of the continuous state transition matrix -:math:`\mathbf{A}_{c}` transform the modal coordinates into the state -coordinates. We define the mode shapes as the transformation from modal -coordinates to the output coordinates. - -.. math:: - - \begin{aligned} - \mathbf{x}(t) &= \mathbf{\Phi q}(t) \\ - \mathbf{y}(t) &= \mathbf{Cx}(t) + \mathbf{Du}(t) \\ - \mathbf{\Phi}_{\text{modal}} &= \mathbf{C\Phi} - \end{aligned} diff --git a/docs/classes/okid.rst b/docs/classes/okid.rst deleted file mode 100644 index 00d35ffc8..000000000 --- a/docs/classes/okid.rst +++ /dev/null @@ -1,111 +0,0 @@ - -Observer Kalman Filter Identification (OKID) ---------------------------------------------- - -Structural dynamics are noisy, hard to measure, and lightly damped, and -ERA is intended only to characterize impulse responses rather than time -histories. However, available data from ambient or small excitations -during structure service can be de-noised and used to estimate impulse -response data. Then, ERA can be used to obtain a reduced order model -even if the available data are not a clean impulse response. This -process is called `Observer Kalman -Identification `__, or OKID-ERA when -combined with ERA. - -When noise is incorporated into the discrete LTI state-space -representation of a structural system, it becomes a *linear Gaussian -model* of a *hidden Markov process*. - -Because the data are assumed to follow a linear Gaussian model, Kalman -filtering can estimate an impulse response that is most consistent with -the input-output data. The estimated model after filtering is the same -as that of ERA: - -.. math:: - - - \begin{aligned} - \mathbf{x}_{k+1} &= \mathbf{Ax}_{k} + \mathbf{Bu}_{k} \\ - \mathbf{y}_{k} &= \mathbf{Cx}_{k} + \mathbf{Du}_{k} \\ - \end{aligned} - -Since the input is no longer an impulse, the state-space evolution -includes more terms than ERA. - -.. math:: - - - \begin{aligned} - \mathbf{u}_{0},\mathbf{u}_{1},\mathbf{u}_{2},...,\mathbf{u}_{k} :=& \text{given input} \\ - \mathbf{x}_{0},\mathbf{x}_{1},\mathbf{x}_{2},...,\mathbf{x}_{k} =& \mathbf{0},(\mathbf{Bu}_{0}),(\mathbf{ABu}_{0}+\mathbf{Bu}_{1}),...,(\mathbf{A}^{k-1}\mathbf{Bu}_{0}+\mathbf{A}^{k-2}\mathbf{Bu}_{1}+...+\mathbf{Bu}_{k-1}) \\ - \mathbf{y}_{0},\mathbf{y}_{1},\mathbf{y}_{2},...,\mathbf{y}_{k} =& \mathbf{Du}_0,(\mathbf{CBu}_{0}+\mathbf{Du}_{1}),(\mathbf{CABu}_{0}+\mathbf{CBu}_{1}+\mathbf{Du}_{2}),..., \\ - & (\mathbf{CA}^{k-1}\mathbf{Bu}_{0}+\mathbf{CA}^{k-2}\mathbf{Bu}_{1}+...+\mathbf{Du}_{k}). - \end{aligned} - -The output data can be expressed in terms of the Markov parameters and -an upper triangular *data matrix* :math:`\mathscr{B}` built from the -input data; however, inverting :math:`\mathscr{B}` is often -computationally expensive or ill-conditioned. - -.. math:: - - - \underbrace{\begin{bmatrix} \mathbf{y}_{0} & \mathbf{y}_{1} & \mathbf{y}_{2} & \cdots & \mathbf{y}_{m} \end{bmatrix}}_{\mathbf{S}} - = - \underbrace{\begin{bmatrix} \mathbf{y}_{0} & \mathbf{y}_{1} & \mathbf{y}_{2} & \cdots & \mathbf{y}_{m} \end{bmatrix}_{\delta}}_{\mathbf{S}_{\delta}} - \underbrace{\begin{bmatrix} - \mathbf{u}_{0} & \mathbf{u}_{1} & \cdots & \mathbf{u}_{m} \\ - \mathbf{0} & \mathbf{u}_{0} & \cdots & \mathbf{u}_{m-1} \\ - \vdots & \vdots & \ddots & \vdots \\ - \mathbf{0} & \mathbf{0} & \cdots & \mathbf{u}_{0} \\ - \end{bmatrix}}_{\mathscr{B}} - -where the subscript :math:`\delta` indicates that the response comes -from an impulse input. - -The Kalman filter is applied by augmenting the system with the outputs -:math:`\mathbf{y}_{i}` to form the *augmented data matrix* -:math:`\mathscr{V}`: - -.. math:: - - - \mathscr{V} - = - \begin{bmatrix} - \mathbf{u}_{0} & \mathbf{u}_{1} & \cdots & \mathbf{u}_{l} & \cdots & \mathbf{u}_{m} \\ - \mathbf{0} & \mathbf{v}_{0} & \cdots & \mathbf{v}_{l-1} & \cdots & \mathbf{v}_{m-1} \\ - \vdots & \vdots & \ddots & \vdots & \ddots & \vdots \\ - \mathbf{0} & \mathbf{0} & \cdots & \mathbf{v}_{0} & \cdots & \mathbf{v}_{m-l} \\ - \end{bmatrix}, \hspace{1cm} - \mathbf{v}_{i} = \begin{bmatrix} \mathbf{u}_{i} \\ \mathbf{y}_{i} \end{bmatrix}. - -Then, the Markov parameters (i.e., the impulse response) can be -estimated as a function of the input and output data as follows: - -.. math:: \hat{\mathbf{S}}_\delta = \mathbf{S}\mathscr{V}^{\dagger} - -where the superscript :math:`\dagger` indicates pseudo-inverse, - -Extract the estimated, or *observer*, Markov parameters from the block -columns of :math:`\hat{\mathbf{S}}_\delta`: - -.. math:: - - - \begin{aligned} - \hat{\mathbf{S}}_{\delta 0} &\in \mathbb{R}^{p\times q} \\ - \hat{\mathbf{S}}_{\delta k} &= - \begin{bmatrix} \hat{\mathbf{S}}_{\delta k}^{(1)} & \hat{\mathbf{S}}_{\delta k}^{(2)} \end{bmatrix} , \hspace{0.5cm} k\in[1,2,...] \\ - \hat{\mathbf{S}}_{\delta k}^{(1)} &\in\mathbb{R}^{p\times q}, \hspace{0.5cm} - \hat{\mathbf{S}}_{\delta k}^{(2)} \in\mathbb{R}^{p\times p} - \end{aligned} - -Reconstruct the system Markov parameters: - -.. math:: - - - \mathbf{y}_{\delta 0} = \hat{\mathbf{S}}_{\delta 0} = \mathbf{D}, \hspace{0.5cm} - \mathbf{y}_{\delta k} = \hat{\mathbf{S}}_{\delta k}^{(1)} - + \sum_{i=1}^{k}{\hat{\mathbf{S}}_{\delta k}^{(2)}}\mathbf{y}_{\delta (k-i)}. diff --git a/docs/classes/psd.md b/docs/classes/psd.md deleted file mode 100644 index 663473938..000000000 --- a/docs/classes/psd.md +++ /dev/null @@ -1,100 +0,0 @@ - - -# Power Spectral Density - -The power spectral density is the norm of the Fourier transform. In a way, it measures energy content at each frequency of response. - -It is also the averaged(?) Fourier transform of the autocorrelation. - -## Norm of Fourier Transform - -The power spectral density, $P(f)$, of a signal $y(t)$, is - -$$\begin{aligned} -P(f) &= \frac{1}{T} -\int_{-T}^{T}{ - \left| Y_{T}(f) \right|^{2}df -} -\end{aligned}$$ - -Where the Fourier transform $Y_{T}(f)$ of $y_{T}(t)$ is defined as: -$$\begin{aligned} -Y_{T}(f) &= \mathcal{F}\left\{y_{T}(t)\right\} = \int_{-T}^{T}{ - e^{-i2\pi ft}y_{T}(t)dt -} -\end{aligned}$$ - -where $f \in \mathbb{R}_{+}$ is frequency in Hertz, and $t \in \mathbb{R}_{+}$ is time in seconds. - -**question.** -$$\begin{aligned} -y_{T}(t) = \begin{bmatrix} -y(t) \\ -y(t+\Delta t) \\ -y(t+2\Delta t) \\ -\vdots \\ -y(t+(T-1)\Delta t) \\ -\end{bmatrix} -\in \mathbb{R}^{T} ~~\textbf{??} -\end{aligned}$$ - -## Fourier Transform of Autocorrelation - -Autocorrelation, discrete: - -$$\begin{aligned} -R_{yy} &\approx \frac{1}{N}\mathbf{Y}_{p}(k)\mathbf{Y}_{p}^{*}(k), ~~N \gg 0 -\end{aligned}$$ - -$$ -\begin{aligned} -\mathbf{Y}_{p}(k) &= \begin{bmatrix} \mathbf{y}_{p}(k) & \mathbf{y}_{p}(k+1) & \cdots & \mathbf{y}_{p}(k+N-1) \end{bmatrix} \\ -&= \begin{bmatrix} -\mathbf{y}(k) & \mathbf{y}(k+1) & \cdots & \mathbf{y}(k+N-1)\\ -\mathbf{y}(k+1) & \mathbf{y}(k+2) & \cdots & \mathbf{y}(k+N) \\ -\vdots & \vdots & \ddots & \vdots \\ -\mathbf{y}(k+p-1) & \mathbf{y}(k+p) & \cdots & \mathbf{y}(k+N+p-2) -\end{bmatrix} -\end{aligned} -$$ - -```{=tex} -\pagebreak -``` - -Autocorrelation, continuous: - -$$\begin{aligned} -R_{yy}(\tau) -&= \mathbb{E}\left\{\mathbf{y}(t+\tau)\mathbf{y}^{*}(t)\right\} \\ -&= \int_{-\infty}^{\infty}{\mathbf{y}(t+\tau)\mathbf{y}^{*}(t)f_{y}(t)dt} -\\ -&= \int_{-\infty}^{\infty}{\mathbf{y}(t+\tau)\mathbf{y}^{*}(t)dt} ~~\textbf{??} -\\ -&= \underset{T \rightarrow \infty}{\lim}\frac{1}{T}\int_{-\infty}^{\infty}{\mathbf{y}_{T}^{*}(t-\tau)\mathbf{y}_{T}(t)dt} ~~\textbf{??} -\end{aligned}$$ - -Fourier transform of this autocorrelation: -$$\begin{aligned} -\mathcal{F}\left\{R_{yy}(\tau)\right\} &= \mathbf{R}_{yy}(f) \\ -&= \int_{-\infty}^{\infty}e^{-i2\pi ft}R_{yy}(\tau)d\tau \\ -&= \int_{-\infty}^{\infty}e^{-i2\pi ft}\left[ - \underset{T \rightarrow \infty}{\lim}\frac{1}{T}\int_{-\infty}^{\infty}{\mathbf{y}_{T}^{*}(t-\tau)\mathbf{y}_{T}(t)dt} -\right](\tau)d\tau \\ -&= \underset{N \rightarrow \infty}{\lim}\frac{\left( \Delta t \right)^{2}}{T}\left| \sum_{n=-N}^{N} y_{n} e^{-i2\pi fn\Delta t} \right|^{2} \\ -&\approx \underset{T \rightarrow \infty}{\lim}{\frac{1}{T}\left| Y_{T}(f) \right|^{2}} -\end{aligned}$$ - -Averaged...**??** Fourier transform of this autocorrelation: -$$\begin{aligned} -P &= \int_{-\infty}^{\infty}{\mathbf{R}_{yy}(f) df} -&= \int_{-\infty}^{\infty}{ - \underset{T \rightarrow \infty}{\lim} - \frac{1}{T} - \left| Y_{T}(f) \right|^{2}df - } -\end{aligned}$$ \ No newline at end of file diff --git a/docs/classes/srim.md b/docs/classes/srim.md deleted file mode 100644 index bc553e058..000000000 --- a/docs/classes/srim.md +++ /dev/null @@ -1,299 +0,0 @@ -# System Realization by Information Matrix (SRIM) - -For discrete-time systems, the correlation between inputs, outputs, and state yield information about the system's state evolution and response. In fact, the state equations can be estimated by manipulating correlation matrices through the method, [System Realization by Information Matrix](https://doi.org/10.2514/2.4068) (SRIM). - -## Discrete-Time System Matrix Equation -We begin with discrete-time state equations that correspond to the structure's dynamics (see [Discrete LTI State-Space Representation](https://chrysatlchern.github.io/mdof/theory/statespace.html#discrete-lti-state-space-representation)). - -$$ -\begin{aligned} -\mathbf{x}(k+1) &= \mathbf{A}\mathbf{x}(k) + \mathbf{B}\mathbf{u}(k) \\ -\mathbf{y}(k) &= \mathbf{C}\mathbf{x}(k) + \mathbf{D}\mathbf{u}(k) -\end{aligned} -$$ - -By noting the state evolution - -$$ -\begin{aligned} -\mathbf{x}(k+1) &= \mathbf{Ax}(k)+\mathbf{B}\mathbf{u}(k)\\ -\mathbf{x}(k+2) &= \mathbf{A}^2\mathbf{x}(k) + \mathbf{AB}\mathbf{u}(k) + \mathbf{B}\mathbf{u}(k+1)\\ -\mathbf{x}(k+3) &= \mathbf{A}^{3}\mathbf{x}(k) + \mathbf{A}^{2}\mathbf{Bu}(k) + \mathbf{A}\mathbf{B}\mathbf{u}(k+1) + \mathbf{B}\mathbf{u}(k+2), -\end{aligned} -$$ - -we can generalize the response for the timepoint $k+p-1$: - -$$ -\begin{aligned} -\mathbf{x}(k+p) &= \mathbf{A}^{p}\mathbf{x}(k) + \sum_{i=1}^{p}\mathbf{A}^{p-i}\mathbf{Bu}(k+i-1) -\\ -\mathbf{x}(k+p-1) &= \mathbf{A}^{p-1}\mathbf{x}(k) + \sum_{i=1}^{p-1}\mathbf{A}^{p-i-1}\mathbf{Bu}(k+i-1) -\\ -\mathbf{y}(k+p-1) &= \mathbf{CA}^{p-1}\mathbf{x}(k) + \sum_{i=1}^{p-1}\mathbf{CA}^{p-i-1}\mathbf{Bu}(k+i-1)+\mathbf{Du}(k+p-1)~. -\end{aligned} -$$ - -Then, we can vertically stack $p$ successive time-points into a column vector and express this vector as $\mathbf{y}_{p}(k)$: - -$$ -\begin{aligned} -\mathbf{y}_{p}(k) &= \mathcal{O}_{p}\mathbf{x}(k) + \mathcal{T}_{p}\mathbf{u}_{p}(k) \\ -\begin{bmatrix} -\mathbf{y}(k) \\ -\mathbf{y}(k+1) \\ -\vdots \\ -\mathbf{y}(k+p-1) -\end{bmatrix} -=& -\begin{bmatrix} -\mathbf{C} \\ -\mathbf{CA} \\ -\mathbf{CA}^{2} \\ -\vdots \\ -\mathbf{CA}^{p-1} -\end{bmatrix} -\mathbf{x}(k) -~+ \\ -& -\begin{bmatrix} -\mathbf{D} \\ -\mathbf{CB} & \mathbf{D} \\ -\mathbf{CAB} & \mathbf{CB} & \mathbf{D} \\ -\vdots & \vdots & \vdots & \ddots \\ -\mathbf{CA}^{p-2}\mathbf{B} & \mathbf{CA}^{p-3}\mathbf{B} & \mathbf{CA}^{p-4}\mathbf{B} & \cdots & \mathbf{D} -\end{bmatrix} -\begin{bmatrix} -\mathbf{u}(k) \\ -\mathbf{u}(k+1) \\ -\vdots \\ -\mathbf{u}(k+p-1) -\end{bmatrix}~. -\end{aligned} -$$ - - - -Finally, we horizontally stack $N$ successive timepoints of these column vectors in a matrix, to get the matrix equation - -$$ -\boxed{\mathbf{Y}_{p}(k) = \mathcal{O}_{p}\mathbf{X}(k) + \mathcal{T}_{p}\mathbf{U}_{p}(k)} ~, -$$ - -where -$$ -\begin{aligned} -\mathbf{Y}_{p}(k) &= \begin{bmatrix} \mathbf{y}_{p}(k) & \mathbf{y}_{p}(k+1) & \cdots & \mathbf{y}_{p}(k+N-1) \end{bmatrix} \\ -&= \begin{bmatrix} -\mathbf{y}(k) & \mathbf{y}(k+1) & \cdots & \mathbf{y}(k+N-1)\\ -\mathbf{y}(k+1) & \mathbf{y}(k+2) & \cdots & \mathbf{y}(k+N) \\ -\vdots & \vdots & \ddots & \vdots \\ -\mathbf{y}(k+p-1) & \mathbf{y}(k+p) & \cdots & \mathbf{y}(k+N+p-2) -\end{bmatrix} -\end{aligned} -$$ - -$$ -\mathbf{X}(k) = \begin{bmatrix} \mathbf{x}(k) & \mathbf{x}(k+1) & \cdots & \mathbf{x}(k+N-1) \end{bmatrix} -$$ - -$$ -\begin{aligned} -\mathbf{U}_{p}(k) &= \begin{bmatrix} \mathbf{u}_{p}(k) & \mathbf{u}_{p}(k+1) & \cdots & \mathbf{u}_{p}(k+N-1) \end{bmatrix} \\ -&= \begin{bmatrix} -\mathbf{u}(k) & \mathbf{u}(k+1) & \cdots & \mathbf{u}(k+N-1)\\ -\mathbf{u}(k+1) & \mathbf{u}(k+2) & \cdots & \mathbf{u}(k+N) \\ -\vdots & \vdots & \ddots & \vdots \\ -\mathbf{u}(k+p-1) & \mathbf{u}(k+p) & \cdots & \mathbf{u}(k+N+p-2) -\end{bmatrix}~. -\end{aligned} -$$ - - -## Observability Matrix from Information Matrix -By post-multiplying the matrix equation by $\frac{1}{N}\mathbf{U}_{p}^{T}(k)$, $\frac{1}{N}\mathbf{Y}_{p}^{T}(k)$ or $\frac{1}{N}\mathbf{X}_{p}^{T}(k)$, we obtain relationships between correlation matrices $\mathbf{R}_{yy}$, $\mathbf{R}_{yu}$, $\mathbf{R}_{uu}$, and $\mathbf{R}_{xx}$ (See [Appendix](#appendix-manipulation-of-discrete-time-system-matrix-equation-into-correlation-matrix-relationships)). - -$$ -\mathbf{R}_{yy} - \mathbf{R}_{yu}\mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} = \mathcal{O}_{p}\mathbf{R}_{xx}\mathcal{O}_{p}^{T} ~, -$$ - -where - -$$\begin{aligned} -\mathbf{R}_{yy} &= \frac{1}{N}\mathbf{Y}_{p}(k)\mathbf{Y}_{p}^{T}(k), \quad{} -\mathbf{R}_{yu} = \frac{1}{N}\mathbf{Y}_{p}(k)\mathbf{U}_{p}^{T}(k) \\ -\mathbf{R}_{uu} &= \frac{1}{N}\mathbf{U}_{p}(k)\mathbf{U}_{p}^{T}(k) , \quad{} -\mathbf{R}_{xx} = \frac{1}{N}\mathbf{X}(k)\mathbf{X}^{T}(k) ~. -\end{aligned}$$ - -The left side of the equation is found from input and output measurements, and is called the *information matrix* of the data. Its singular value decomposition is computed to yield the *observability matrix* $\mathcal{O}_{p}$. - -$$ -\mathbf{R}_{yy} - \mathbf{R}_{yu}\mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} = \mathbf{U} \Sigma \mathbf{U}^{T} = \mathcal{O}_{p}\mathbf{R}_{xx}\mathcal{O}_{p}^{T} ~. -$$ - -## State Equation Matrices from Observability Matrix - -Now, the state equation matrices $\mathbf{A}$ and $\mathbf{C}$ can be obtained from the observability matrix $\mathcal{O}_p$. - -$$ -\begin{aligned} -\mathcal{O}_{p} -= -\begin{bmatrix} -\mathbf{C} \\ -\mathbf{CA} \\ -\mathbf{CA}^{2} \\ -\vdots \\ -\mathbf{CA}^{p-1} -\end{bmatrix} -, \quad{} -\mathcal{O}_{p}(:-1) -= -\begin{bmatrix} -\mathbf{C} \\ -\mathbf{CA} \\ -\mathbf{CA}^{2} \\ -\vdots \\ -\mathbf{CA}^{p-2} -\end{bmatrix} -, \quad{} -\mathcal{O}_{p}(1:) -= -\begin{bmatrix} -\mathbf{CA} \\ -\mathbf{CA}^{2} \\ -\mathbf{CA}^{3} \\ -\vdots \\ -\mathbf{CA}^{p-1} -\end{bmatrix} -\end{aligned} -$$ - -$$ -\mathbf{A} = \mathcal{O}_{p}(:-1)^{+}\mathcal{O}_{p}(1:) -$$ - -$$ -\mathbf{C} = \mathcal{O}_{p}(0) -$$ - -## Output Error Minimization - -$$ -\Phi = \begin{bmatrix} -\mathbf{C} & \mathcal{U}_{p}(0) & \mathbf{0}_{p\times r} \\ -\mathbf{CA} & \mathcal{U}_{p}(1) & \mathbf{C}\mathcal{U}_{r}(0) \\ -\mathbf{CA^{2}} & \mathcal{U}_{p}(2) & \mathbf{CA}\mathcal{U}_{r}(0) + \mathbf{C}\mathcal{U}_{r}(1) \\ -\vdots & \vdots & \vdots \\ -\mathbf{CA}^{ns-1} & \mathcal{U}_{p}(ns-1) & \sum_{k=0}^{ns-2}\mathbf{CA}^{ns-k-2}\mathcal{U}_{r}(k) -\end{bmatrix} \in \mathbb{R}^{(ns*p) \times (pr+pq+rq)} -$$ - - - -## Appendix: Manipulation of discrete-time system matrix equation into correlation matrix relationships - -In ([Juang 1997](https://doi.org/10.2514/2.4068)), the discrete-time system matrix equation is manipulated into a form describing the relationship between correlation matrices $\mathbf{R}_{yy}$, $\mathbf{R}_{yu}$, $\mathbf{R}_{uu}$, and $\mathbf{R}_{xx}$. - -Post-multiplying the [discrete-time system matrix equation](#discrete-time-system-matrix-equation) by $\frac{1}{N}\mathbf{U}_{p}^{T}(k)$: - -$$\begin{aligned} -\frac{1}{N}\mathbf{Y}_{p}(k)\mathbf{U}_{p}^{T}(k) &= \mathcal{O}_{p}\frac{1}{N}\mathbf{X}(k)\mathbf{U}_{p}^{T}(k) + \mathcal{T}_{p}\frac{1}{N}\mathbf{U}_{p}(k)\mathbf{U}_{p}^{T}(k) -\\ -\mathbf{R}_{yu} &= \mathcal{O}_{p}\mathbf{R}_{xu} + \mathcal{T}_{p}\mathbf{R}_{uu} -\\ -\mathcal{T}_{p} &= \left( \mathbf{R}_{yu} - \mathcal{O}_{p}\mathbf{R}_{xu} \right)\mathbf{R}_{uu}^{-1} -\end{aligned}$$ - -Post-multiplying by $\frac{1}{N}\mathbf{Y}_{p}^{T}(k)$: - -$$\begin{aligned} -\frac{1}{N}\mathbf{Y}_{p}(k)\mathbf{Y}_{p}^{T}(k) &= \mathcal{O}_{p}\frac{1}{N}\mathbf{X}(k)\mathbf{Y}_{p}^{T}(k) + \mathcal{T}_{p}\frac{1}{N}\mathbf{U}_{p}(k)\mathbf{Y}_{p}^{T}(k) -\\ -\mathbf{R}_{yy} &= \mathcal{O}_{p}\mathbf{R}_{yx}^{T} + \mathcal{T}_{p}\mathbf{R}_{yu}^{T} -\\ -\mathbf{R}_{yy} &= \mathcal{O}_{p}\mathbf{R}_{yx}^{T} + \left( \mathbf{R}_{yu} - \mathcal{O}_{p}\mathbf{R}_{xu} \right)\mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} -\end{aligned}$$ - -Post-multiplying by $\frac{1}{N}\mathbf{X}_{p}^{T}(k)$: - -$$\begin{aligned} -\frac{1}{N}\mathbf{Y}_{p}(k)\mathbf{X}_{p}^{T}(k) &= \mathcal{O}_{p}\frac{1}{N}\mathbf{X}(k)\mathbf{X}_{p}^{T}(k) + \mathcal{T}_{p}\frac{1}{N}\mathbf{U}_{p}(k)\mathbf{X}_{p}^{T}(k) -\\ -\mathbf{R}_{yx} &= \mathcal{O}_{p}\mathbf{R}_{xx} + \mathcal{T}_{p}\mathbf{R}_{xu}^{T} -\\ -\mathbf{R}_{yx} &= \mathcal{O}_{p}\mathbf{R}_{xx} + \left( \mathbf{R}_{yu} - \mathcal{O}_{p}\mathbf{R}_{xu} \right)\mathbf{R}_{uu}^{-1}\mathbf{R}_{xu}^{T} -\end{aligned}$$ - -Substituting the equation for $\mathbf{R}_{yx}$ into the equation for $\mathbf{R}_{yy}$: - -$$\begin{aligned} -\mathbf{R}_{yy} =& ~\mathcal{O}_{p} -\left(\mathcal{O}_{p}\mathbf{R}_{xx} + \left( \mathbf{R}_{yu} - \mathcal{O}_{p}\mathbf{R}_{xu} \right)\mathbf{R}_{uu}^{-1}\mathbf{R}_{xu}^{T}\right)^{T} -\\ -&+ -\left( \mathbf{R}_{yu} - \mathcal{O}_{p}\mathbf{R}_{xu} \right)\mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} -\\ -=& ~\mathcal{O}_{p}\mathbf{R}_{xx}\mathcal{O}_{p}^{T} - + \mathcal{O}_{p}\mathbf{R}_{xu}\mathbf{R}_{uu}^{-1} \left( \mathbf{R}_{yu}^{T} - \mathbf{R}_{xu}^{T}\mathcal{O}_{p}^{T} \right) -\\ -&+ -\left( \mathbf{R}_{yu} - \mathcal{O}_{p}\mathbf{R}_{xu} \right)\mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} -\\ -=& ~\mathcal{O}_{p}\mathbf{R}_{xx}\mathcal{O}_{p}^{T} - + \mathcal{O}_{p}\mathbf{R}_{xu}\mathbf{R}_{uu}^{-1} \mathbf{R}_{yu}^{T} - \mathcal{O}_{p}\mathbf{R}_{xu}\mathbf{R}_{uu}^{-1} \mathbf{R}_{xu}^{T}\mathcal{O}_{p}^{T} -\\ -&+ - \mathbf{R}_{yu}\mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} - \mathcal{O}_{p}\mathbf{R}_{xu} \mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} -\\ -=& ~\mathcal{O}_{p}\mathbf{R}_{xx}\mathcal{O}_{p}^{T} - - \mathcal{O}_{p}\mathbf{R}_{xu}\mathbf{R}_{uu}^{-1} \mathbf{R}_{xu}^{T}\mathcal{O}_{p}^{T} + - \mathbf{R}_{yu}\mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} -\end{aligned}$$ - -Moving all of the terms that can be composed with measured data to the left side: - -$$\begin{aligned} -\mathbf{R}_{yy} - \mathbf{R}_{yu}\mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} -&= \mathcal{O}_{p}\mathbf{R}_{xx}\mathcal{O}_{p}^{T} - \mathcal{O}_{p}\mathbf{R}_{xu}\mathbf{R}_{uu}^{-1} \mathbf{R}_{xu}^{T}\mathcal{O}_{p}^{T} \\ -&= \mathcal{O}_{p}\left( \mathbf{R}_{xx} - \mathbf{R}_{xu}\mathbf{R}_{uu}^{-1} \mathbf{R}_{xu}^{T} \right) \mathcal{O}_{p}^{T} -\end{aligned}$$ - -We make the assumption that all current and future input data is uncorrelated with the current state, which means that the average of the products $\mathbf{x}(k)\mathbf{u}(k+i), ~~ i \in [0,1,2,\dots]$ is zero. This gives: - -$$\begin{aligned} -\mathbf{R}_{xu} &= -\frac{1}{N} -\begin{bmatrix} -\sum_{j=0}^{N-1}\mathbf{x}(k+j)\mathbf{u}(k+j) \\ -\sum_{j=0}^{N-1}\mathbf{x}(k+j)\mathbf{u}(k+j+1) \\ -\sum_{j=0}^{N-1}\mathbf{x}(k+j)\mathbf{u}(k+j+2) \\ -\vdots \\ -\sum_{j=0}^{N-1}\mathbf{x}(k+j)\mathbf{u}(k+j+p-1) -\end{bmatrix}^{T} \\ -&= -\mathbf{0} -\end{aligned}$$ - -in order to yield: - -$$ -\mathbf{R}_{yy} - \mathbf{R}_{yu}\mathbf{R}_{uu}^{-1}\mathbf{R}_{yu}^{T} = \mathcal{O}_{p}\mathbf{R}_{xx}\mathcal{O}_{p}^{T}~. -$$ \ No newline at end of file diff --git a/docs/classes/srim.rst b/docs/classes/srim.rst deleted file mode 100644 index c097777c9..000000000 --- a/docs/classes/srim.rst +++ /dev/null @@ -1,354 +0,0 @@ -System Realization by Information Matrix (SRIM) -=============================================== - -For discrete-time systems, the correlation between inputs, outputs, and -state yield information about the system's state evolution and response. -In fact, the state equations can be estimated by manipulating -correlation matrices through the method, `System Realization by -Information Matrix `__ (SRIM). - -Discrete-Time System Matrix Equation ------------------------------------- - -We begin with discrete-time state equations that correspond to the -structure's dynamics (see `Discrete LTI State-Space -Representation `__). - -.. math:: - - - \begin{aligned} - \bm{x}(k+1) &= \bm{Ax}(k) + \bm{Bu}(k) \\ - \bm{y}(k) &= \bm{Cx}(k) + \bm{Du}(k) - \end{aligned} - -By noting the state evolution - -.. math:: - - - \begin{aligned} - \bm{x}(k+1) &= \bm{Ax}(k)+\bm{B}\bm{U}_{p}(k)\\ - \bm{x}(k+2) &= \bm{A}^2\bm{X}(k) + \bm{AB}\bm{U}_{p}(k) + \bm{Bu}(k+1)\\ - \bm{x}(k+3) &= \bm{A}^{3}\bm{X}(k) + \bm{A}^{2}\bm{Bu}(k) + \bm{ABu}(k+1) + \bm{Bu}(k+2), - \end{aligned} - -we can generalize the response for the timepoint :math:`k+p-1`: - -.. math:: - - - \begin{aligned} - \bm{x}(k+p) &= \bm{A}^{p}\bm{x}(k) + \sum_{i=1}^{p}\bm{A}^{p-i}\bm{Bu}(k+i-1) - \\ - \bm{x}(k+p-1) &= \bm{A}^{p-1}\bm{x}(k) + \sum_{i=1}^{p-1}\bm{A}^{p-i-1}\bm{Bu}(k+i-1) - \\ - \bm{y}(k+p-1) &= \bm{CA}^{p-1}\bm{x}(k) + \sum_{i=1}^{p-1}\bm{CA}^{p-i-1}\bm{Bu}(k+i-1)+\bm{Du}(k+p-1)~. - \end{aligned} - -Then, we can vertically stack :math:`p` successive time-points into a -column vector and express this vector as :math:`\bm{y}_{p}(k)`: - -.. math:: - - - \begin{aligned} - \bm{y}_{p}(k) &= \mathcal{O}_{p}\bm{x}(k) + \mathcal{T}_{p}\bm{u}_{p}(k) \\ - \begin{bmatrix} - \bm{y}(k) \\ - \bm{y}(k+1) \\ - \vdots \\ - \bm{y}(k+p-1) - \end{bmatrix} - =& - \begin{bmatrix} - \bm{C} \\ - \bm{CA} \\ - \bm{CA}^{2} \\ - \vdots \\ - \bm{CA}^{p-1} - \end{bmatrix} - \bm{x}(k) - ~+ \\ - & - \begin{bmatrix} - \bm{D} \\ - \bm{CB} & \bm{D} \\ - \bm{CAB} & \bm{CB} & \bm{D} \\ - \vdots & \vdots & \vdots & \ddots \\ - \bm{CA}^{p-2}\bm{B} & \bm{CA}^{p-3}\bm{B} & \bm{CA}^{p-4}\bm{B} & \cdots & \bm{D} - \end{bmatrix} - \begin{bmatrix} - \bm{u}(k) \\ - \bm{u}(k+1) \\ - \vdots \\ - \bm{u}(k+p-1) - \end{bmatrix}~. - \end{aligned} - -.. raw:: html - - - -Finally, we horizontally stack :math:`N` successive timepoints of these -column vectors in a matrix, to get the matrix equation - -.. math:: - - - \boxed{\bm{Y}_{p}(k) = \mathcal{O}_{p}\bm{X}(k) + \mathcal{T}_{p}\bm{U}_{p}(k)} ~, - -where - -.. math:: - - - \begin{aligned} - \bm{Y}_{p}(k) &= \begin{bmatrix} \bm{y}_{p}(k) & \bm{y}_{p}(k+1) & \cdots & \bm{y}_{p}(k+N-1) \end{bmatrix} \\ - &= \begin{bmatrix} - \bm{y}(k) & \bm{y}(k+1) & \cdots & \bm{y}(k+N-1)\\ - \bm{y}(k+1) & \bm{y}(k+2) & \cdots & \bm{y}(k+N) \\ - \vdots & \vdots & \ddots & \vdots \\ - \bm{y}(k+p-1) & \bm{y}(k+p) & \cdots & \bm{y}(k+N+p-2) - \end{bmatrix} - \end{aligned} - -.. math:: - - - \bm{X}(k) = \begin{bmatrix} \bm{x}(k) & \bm{x}(k+1) & \cdots & \bm{x}(k+N-1) \end{bmatrix} - -.. math:: - - - \begin{aligned} - \bm{U}_{p}(k) &= \begin{bmatrix} \bm{u}_{p}(k) & \bm{u}_{p}(k+1) & \cdots & \bm{u}_{p}(k+N-1) \end{bmatrix} \\ - &= \begin{bmatrix} - \bm{u}(k) & \bm{u}(k+1) & \cdots & \bm{u}(k+N-1)\\ - \bm{u}(k+1) & \bm{u}(k+2) & \cdots & \bm{u}(k+N) \\ - \vdots & \vdots & \ddots & \vdots \\ - \bm{u}(k+p-1) & \bm{u}(k+p) & \cdots & \bm{u}(k+N+p-2) - \end{bmatrix}~. - \end{aligned} - -Observability Matrix from Information Matrix --------------------------------------------- - -By post-multiplying the matrix equation by -:math:`\frac{1}{N}\bm{U}_{p}^{T}(k)`, -:math:`\frac{1}{N}\bm{Y}_{p}^{T}(k)` or -:math:`\frac{1}{N}\bm{X}_{p}^{T}(k)`, we obtain relationships -between correlation matrices :math:`\bm{R}_{yy}`, -:math:`\bm{R}_{yu}`, :math:`\bm{R}_{uu}`, and -:math:`\bm{R}_{xx}` (See -`Appendix <#appendix-manipulation-of-discrete-time-system-matrix-equation-into-correlation-matrix-relationships>`__). - -.. math:: - - - \bm{R}_{yy} - \bm{R}_{yu}\bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} = \mathcal{O}_{p}\bm{R}_{xx}\mathcal{O}_{p}^{T} ~, - -where - -.. math:: - - \begin{aligned} - \bm{R}_{yy} &= \frac{1}{N}\bm{Y}_{p}(k)\bm{Y}_{p}^{T}(k), \quad{} - \bm{R}_{yu} = \frac{1}{N}\bm{Y}_{p}(k)\bm{U}_{p}^{T}(k) \\ - \bm{R}_{uu} &= \frac{1}{N}\bm{U}_{p}(k)\bm{U}_{p}^{T}(k) , \quad{} - \bm{R}_{xx} = \frac{1}{N}\bm{X}(k)\bm{X}^{T}(k) ~. - \end{aligned} - -The left side of the equation is found from input and output -measurements, and is called the *information matrix* of the data. Its -singular value decomposition is computed to yield the *observability -matrix* :math:`\mathcal{O}_{p}`. - -.. math:: - - - \bm{R}_{yy} - \bm{R}_{yu}\bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} = \bm{U} \Sigma \bm{U}^{T} = \mathcal{O}_{p}\bm{R}_{xx}\mathcal{O}_{p}^{T} ~. - -State Equation Matrices from Observability Matrix -------------------------------------------------- - -Now, the state equation matrices :math:`\bm{A}` and -:math:`\bm{C}` can be obtained from the observability matrix -:math:`\mathcal{O}_p`. - -.. math:: - - - \begin{aligned} - \mathcal{O}_{p} - = - \begin{bmatrix} - \bm{C} \\ - \bm{CA} \\ - \bm{CA}^{2} \\ - \vdots \\ - \bm{CA}^{p-1} - \end{bmatrix} - , \quad{} - \mathcal{O}_{p}(:-1) - = - \begin{bmatrix} - \bm{C} \\ - \bm{CA} \\ - \bm{CA}^{2} \\ - \vdots \\ - \bm{CA}^{p-2} - \end{bmatrix} - , \quad{} - \mathcal{O}_{p}(1:) - = - \begin{bmatrix} - \bm{CA} \\ - \bm{CA}^{2} \\ - \bm{CA}^{3} \\ - \vdots \\ - \bm{CA}^{p-1} - \end{bmatrix} - \end{aligned} - -.. math:: - - - \bm{A} = \mathcal{O}_{p}(:-1)^{+}\mathcal{O}_{p}(1:) - -.. math:: - - - \bm{C} = \mathcal{O}_{p}(0) - -Appendix: Manipulation of discrete-time system matrix equation into correlation matrix relationships ----------------------------------------------------------------------------------------------------- - -In (`Juang 1997 `__), the discrete-time -system matrix equation is manipulated into a form describing the -relationship between correlation matrices :math:`\bm{R}_{yy}`, -:math:`\bm{R}_{yu}`, :math:`\bm{R}_{uu}`, and -:math:`\bm{R}_{xx}`. - -Post-multiplying the `discrete-time system matrix -equation <#discrete-time-system-matrix-equation>`__ by -:math:`\frac{1}{N}\bm{U}_{p}^{T}(k)`: - -.. math:: - - \begin{aligned} - \frac{1}{N}\bm{Y}_{p}(k)\bm{U}_{p}^{T}(k) &= \mathcal{O}_{p}\frac{1}{N}\bm{X}(k)\bm{U}_{p}^{T}(k) + \mathcal{T}_{p}\frac{1}{N}\bm{U}_{p}(k)\bm{U}_{p}^{T}(k) - \\ - \bm{R}_{yu} &= \mathcal{O}_{p}\bm{R}_{xu} + \mathcal{T}_{p}\bm{R}_{uu} - \\ - \mathcal{T}_{p} &= \left( \bm{R}_{yu} - \mathcal{O}_{p}\bm{R}_{xu} \right)\bm{R}_{uu}^{-1} - \end{aligned} - -Post-multiplying by :math:`\frac{1}{N}\bm{Y}_{p}^{T}(k)`: - -.. math:: - - \begin{aligned} - \frac{1}{N}\bm{Y}_{p}(k)\bm{Y}_{p}^{T}(k) &= \mathcal{O}_{p}\frac{1}{N}\bm{X}(k)\bm{Y}_{p}^{T}(k) + \mathcal{T}_{p}\frac{1}{N}\bm{U}_{p}(k)\bm{Y}_{p}^{T}(k) - \\ - \bm{R}_{yy} &= \mathcal{O}_{p}\bm{R}_{yx}^{T} + \mathcal{T}_{p}\bm{R}_{yu}^{T} - \\ - \bm{R}_{yy} &= \mathcal{O}_{p}\bm{R}_{yx}^{T} + \left( \bm{R}_{yu} - \mathcal{O}_{p}\bm{R}_{xu} \right)\bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} - \end{aligned} - -Post-multiplying by :math:`\frac{1}{N}\bm{X}_{p}^{T}(k)`: - -.. math:: - - \begin{aligned} - \frac{1}{N}\bm{Y}_{p}(k)\bm{X}_{p}^{T}(k) &= \mathcal{O}_{p}\frac{1}{N}\bm{X}(k)\bm{X}_{p}^{T}(k) + \mathcal{T}_{p}\frac{1}{N}\bm{U}_{p}(k)\bm{X}_{p}^{T}(k) - \\ - \bm{R}_{yx} &= \mathcal{O}_{p}\bm{R}_{xx} + \mathcal{T}_{p}\bm{R}_{xu}^{T} - \\ - \bm{R}_{yx} &= \mathcal{O}_{p}\bm{R}_{xx} + \left( \bm{R}_{yu} - \mathcal{O}_{p}\bm{R}_{xu} \right)\bm{R}_{uu}^{-1}\bm{R}_{xu}^{T} - \end{aligned} - -Substituting the equation for :math:`\bm{R}_{yx}` into the equation -for :math:`\bm{R}_{yy}`: - -.. math:: - - \begin{aligned} - \bm{R}_{yy} =& ~\mathcal{O}_{p} - \left(\mathcal{O}_{p}\bm{R}_{xx} + \left( \bm{R}_{yu} - \mathcal{O}_{p}\bm{R}_{xu} \right)\bm{R}_{uu}^{-1}\bm{R}_{xu}^{T}\right)^{T} - \\ - &+ - \left( \bm{R}_{yu} - \mathcal{O}_{p}\bm{R}_{xu} \right)\bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} - \\ - =& ~\mathcal{O}_{p}\bm{R}_{xx}\mathcal{O}_{p}^{T} - + \mathcal{O}_{p}\bm{R}_{xu}\bm{R}_{uu}^{-1} \left( \bm{R}_{yu}^{T} - \bm{R}_{xu}^{T}\mathcal{O}_{p}^{T} \right) - \\ - &+ - \left( \bm{R}_{yu} - \mathcal{O}_{p}\bm{R}_{xu} \right)\bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} - \\ - =& ~\mathcal{O}_{p}\bm{R}_{xx}\mathcal{O}_{p}^{T} - + \mathcal{O}_{p}\bm{R}_{xu}\bm{R}_{uu}^{-1} \bm{R}_{yu}^{T} - \mathcal{O}_{p}\bm{R}_{xu}\bm{R}_{uu}^{-1} \bm{R}_{xu}^{T}\mathcal{O}_{p}^{T} - \\ - &+ - \bm{R}_{yu}\bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} - \mathcal{O}_{p}\bm{R}_{xu} \bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} - \\ - =& ~\mathcal{O}_{p}\bm{R}_{xx}\mathcal{O}_{p}^{T} - - \mathcal{O}_{p}\bm{R}_{xu}\bm{R}_{uu}^{-1} \bm{R}_{xu}^{T}\mathcal{O}_{p}^{T} + - \bm{R}_{yu}\bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} - \end{aligned} - -Moving all of the terms that can be composed with measured data to the -left side: - -.. math:: - - \begin{aligned} - \bm{R}_{yy} - \bm{R}_{yu}\bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} - &= \mathcal{O}_{p}\bm{R}_{xx}\mathcal{O}_{p}^{T} - \mathcal{O}_{p}\bm{R}_{xu}\bm{R}_{uu}^{-1} \bm{R}_{xu}^{T}\mathcal{O}_{p}^{T} \\ - &= \mathcal{O}_{p}\left( \bm{R}_{xx} - \bm{R}_{xu}\bm{R}_{uu}^{-1} \bm{R}_{xu}^{T} \right) \mathcal{O}_{p}^{T} - \end{aligned} - -We make the assumption that all current and future input data is -uncorrelated with the current state, which means that the average of the -products :math:`\bm{x}(k)\bm{u}(k+i), ~~ i \in [0,1,2,\dots]` is -zero. This gives: - -.. math:: - - \begin{aligned} - \bm{R}_{xu} &= - \frac{1}{N} - \begin{bmatrix} - \sum_{j=0}^{N-1}\bm{x}(k+j)\bm{u}(k+j) \\ - \sum_{j=0}^{N-1}\bm{x}(k+j)\bm{u}(k+j+1) \\ - \sum_{j=0}^{N-1}\bm{x}(k+j)\bm{u}(k+j+2) \\ - \vdots \\ - \sum_{j=0}^{N-1}\bm{x}(k+j)\bm{u}(k+j+p-1) - \end{bmatrix}^{T} \\ - &= - \bm{0} - \end{aligned} - -in order to yield: - -.. math:: - - - \bm{R}_{yy} - \bm{R}_{yu}\bm{R}_{uu}^{-1}\bm{R}_{yu}^{T} = \mathcal{O}_{p}\bm{R}_{xx}\mathcal{O}_{p}^{T}~. - diff --git a/docs/classes/statespace.rst b/docs/classes/statespace.rst deleted file mode 100644 index dea21d2a4..000000000 --- a/docs/classes/statespace.rst +++ /dev/null @@ -1,149 +0,0 @@ -State Space Model of Structural Dynamics ----------------------------------------- - -.. figure:: figures/si_msmdof.png - :alt: MDOF Structure - - MDOF Structure - -When an multiple degree-of-freedom (MDOF) system is subject to multiple -support excitation, such as in the figure above, the displacement vector -is extended to include the support DOF. An `equation of -motion <#equation-of-motion>`__ is derived as follows. - -Begin by forming a partitioned equation of dynamic equilibrium for all -the DOF: - -Partitioned Equation of Dynamic Equilibrium -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. math:: - - - \begin{bmatrix} \mathbf{m} & \mathbf{m}_{g} \\ \mathbf{m}^T_{g} & \mathbf{m}_{gg} \end{bmatrix} - \begin{bmatrix} \mathbf{\ddot{u}}^{t}_{f} \\ \mathbf{\ddot{u}}_{g} \end{bmatrix} - + - \begin{bmatrix} \mathbf{c} & \mathbf{c}_{g} \\ \mathbf{c}^T_{g} & \mathbf{c}_{gg} \end{bmatrix} - \begin{bmatrix} \mathbf{\dot{u}}^{t}_{f} \\ \mathbf{\dot{u}}_{g} \end{bmatrix} - + - \begin{bmatrix} \mathbf{k} & \mathbf{k}_{g} \\ \mathbf{k}^T_{g} & \mathbf{k}_{gg} \end{bmatrix} - \begin{bmatrix} \mathbf{u}^{t}_{f} \\ \mathbf{u}_{g} \end{bmatrix} - = - \begin{bmatrix} \mathbf{0} \\ \mathbf{p}_{g} \end{bmatrix} - -where the subscript :math:`g` indicates support DOF, the subscript -:math:`f` indicates structural DOF, and the superscript :math:`t` -indicates the total of quasi-static (:math:`\mathbf{u}^{s}_{f}`, due to -static application of support displacements) and dynamic -(:math:`\mathbf{u}_{f}`, evaluated by dynamic analysis) structural -displacements. - -Taking the first half of the partitioned equilibrium, separating the -structural displacements -(:math:`\mathbf{u}^{t}_{f}=\mathbf{u}^{s}_{f}+\mathbf{u}_{f}`), and -moving all :math:`\mathbf{u}_{g}` and :math:`\mathbf{u}^{s}_{f}` terms -to the right side, - -.. math:: - - - \mathbf{m}\mathbf{\ddot{u}}_{f} + \mathbf{c}\mathbf{\dot{u}}_{f} + \mathbf{k}\mathbf{u}_{f} - = -(\mathbf{m}\mathbf{\ddot{u}}^{s}_{f}+\mathbf{m}_{g}\mathbf{\ddot{u}}_{g}) - -(\mathbf{c}\mathbf{\dot{u}}^{s}_{f}+\mathbf{c}_{g}\mathbf{\dot{u}}_{g}) - -(\mathbf{k}\mathbf{u}^{s}_{f}+\mathbf{k}_{g}\mathbf{u}_{g}) - -The term -:math:`(\mathbf{k}\mathbf{u}^{s}_{f}+\mathbf{k}_{g}\mathbf{u}_{g})=\mathbf{0}` -due to static equilibrium, allowing the term to be dropped and giving -:math:`\mathbf{u}^{s}_{f} = \mathbf{-k}^{-1}\mathbf{k}_{g}\mathbf{u}_{g} = \mathbf{\iota u}_{g}`; -the term -:math:`(\mathbf{c}\mathbf{\dot{u}}^{s}_{f}+\mathbf{c}_{g}\mathbf{\dot{u}}_{g})` -is dropped because it is usually small relative to the inertia term; and -the term :math:`\mathbf{m}_{g}\mathbf{\ddot{u}}_{g}` is dropped because -mass is usually neglected at supports. - -The equilibrium equation thus simplifies. - -Equation of Motion -^^^^^^^^^^^^^^^^^^ - -.. math:: - - - \begin{aligned} - \mathbf{M\ddot{u}}_{f}(t) + \mathbf{Z\dot{u}}_{f}(t) + \mathbf{Ku}_{f}(t) &= -\mathbf{M\iota}\mathbf{\ddot{u}}_{g}(t) \\ - \mathbf{m}\mathbf{\ddot{u}}_{f} + \mathbf{c}\mathbf{\dot{u}}_{f} + \mathbf{k}\mathbf{u}_{f} - &= -\mathbf{m}\mathbf{\iota}\mathbf{\ddot{u}}_{g} - \end{aligned} - -Hence, the following equation presents the continuous linear -time-invariant (LTI) state-space representation of a structural system. - -Continuous LTI State-Space Representation -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. math:: - - - \begin{aligned} - \mathbf{\dot{x}} &= \mathbf{A}_{c}\mathbf{x} + \mathbf{B}_{c}\mathbf{u} \\ - \begin{bmatrix} \mathbf{\dot{u}}_{f}(t) \\ \mathbf{\ddot{u}}_{f}(t) \end{bmatrix} - &= - \begin{bmatrix} \mathbf{0} & \mathbf{I} \\ -\mathbf{M}^{-1}\mathbf{K} & -\mathbf{M}^{-1}\mathbf{Z} \end{bmatrix} - \begin{bmatrix} \mathbf{u}_{f}(t) \\ \mathbf{\dot{u}}_{f}(t) \end{bmatrix} - + - \begin{bmatrix} \mathbf{0} \\ -\mathbf{\iota} \end{bmatrix} - \mathbf{\ddot{u}}_{g}(t) \\ \\ - \mathbf{y} &= \mathbf{Cx} + \mathbf{Du} \\ - \mathbf{\ddot{u}}_{f}(t) &= - \begin{bmatrix} -\mathbf{M}^{-1}\mathbf{K} & -\mathbf{M}^{-1}\mathbf{Z} \end{bmatrix} - \begin{bmatrix} \mathbf{u}_{f}(t) \\ \mathbf{\dot{u}}_{f}(t) \end{bmatrix} - + - \begin{bmatrix} -\mathbf{\iota} \end{bmatrix} - \mathbf{\ddot{u}}_{g}(t) - \end{aligned} - -In order to move from the continuous to the discrete case, the -coefficients :math:`\mathbf{A}_{c}` and :math:`\mathbf{B}_{c}` are -transformed by solving the first-order differential equation with the -signal’s value held constant between time steps (“zero-order hold -method”). The coefficients :math:`\mathbf{C}` and :math:`\mathbf{D}` are -unchanged. The results are shown in the following equation. - -.. figure:: figures/si_discretize.png - :alt: Signal Discretization - - Signal Discretization - -Discrete LTI State-Space Representation -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. math:: - - - \begin{aligned} - \mathbf{x}_{k+1} &= \mathbf{Ax}_{k} + \mathbf{Bu}_{k} \\ - \mathbf{y}_{k} &= \mathbf{Cx}_{k} + \mathbf{Du}_{k} \\ - \end{aligned} - -.. math:: - - - \mathbf{x}_{k} = \mathbf{x}(k\Delta t), \hspace{1cm} \mathbf{u}_{k} = \mathbf{u}(k\Delta t), \hspace{1cm} \mathbf{y}_{k} = \mathbf{y}(k\Delta t) - -.. math:: - - - \mathbf{A} = e^{\mathbf{A}_{c}\Delta t}, \hspace{1cm} \mathbf{B} = \int_{0}^{\Delta t}{e^{\mathbf{A}_{c}\tau}}\mathbf{B}_{c}d\tau - -where: - -.. math:: - - - \begin{aligned} - \mathbf{A} & \text{: discrete state transition matrix} \\ - \mathbf{B} & \text{: discrete input influence matrix} \\ - \mathbf{C} & \text{: output influence matrix} \\ - \mathbf{D} & \text{: direct transmission or feed-through matrix} - \end{aligned} diff --git a/docs/design/index.rst b/docs/design/index.rst new file mode 100644 index 000000000..3596f5684 --- /dev/null +++ b/docs/design/index.rst @@ -0,0 +1,8 @@ +Design +====== + +``veux`` is designed around a set of core abstract classes: + +- A ``Canvas`` abstracts away details about the rendering backend. +- An ``Artist`` abstracts away the drawing process. It owns a canvas. + diff --git a/docs/index.rst b/docs/index.rst index 7bac2943c..3b874465e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -8,5 +8,5 @@ veux documentation :caption: Contents: library/index - classes/index + design/index From 282d04012007e2f8b8b9d02a3f0c654e922a2e1f Mon Sep 17 00:00:00 2001 From: Claudio Perez <50180406+claudioperez@users.noreply.github.com> Date: Sat, 11 Jan 2025 11:22:36 -0800 Subject: [PATCH 3/5] cmp --- docs/_static/images/gallery/safeway.png | Bin 0 -> 29833 bytes docs/conf.py | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100755 docs/_static/images/gallery/safeway.png diff --git a/docs/_static/images/gallery/safeway.png b/docs/_static/images/gallery/safeway.png new file mode 100755 index 0000000000000000000000000000000000000000..74c5c19dd3c2f6e9200c39bca9cc4dcabd8fdc4c GIT binary patch literal 29833 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 D*_v(R literal 0 HcmV?d00001 diff --git a/docs/conf.py b/docs/conf.py index a4127e3bb..4f104f909 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -47,10 +47,11 @@ 'css/theme-css/'+str(file.name) for file in (Path(__file__).parents[0]/"_static/css/theme-css/").glob("*.css") ] html_additional_pages = {'index': 'home.html'} +g = "https://gallery.stairlab.io" html_context = { 'description': description, 'examples': [ - {"title": "Basics", "link": "examples/00_Overview", "image": "../_static/images/gallery/overview.svg"}, + {"title": "Basics", "link": f"{g}/examples/example7", "image": "../_static/images/gallery/safeway.png"}, {"title": "Displacements", "link": "examples/01_SISO_Intro", "image": "../_static/images/gallery/sdof_full.svg"}, {"title": "Motions", "link": "examples/04_MIMO_Intro", "image": "../_static/images/gallery/2dof_full.svg"}, ], From d6541e695d14faa2b8f30e40893dac67dfc47bb9 Mon Sep 17 00:00:00 2001 From: Claudio Perez <50180406+claudioperez@users.noreply.github.com> Date: Sat, 11 Jan 2025 11:32:24 -0800 Subject: [PATCH 4/5] cmp --- docs/_templates/home.html | 2 +- docs/conf.py | 6 +++--- docs/library/index.rst | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/_templates/home.html b/docs/_templates/home.html index fcf429411..ca1e18068 100644 --- a/docs/_templates/home.html +++ b/docs/_templates/home.html @@ -281,7 +281,7 @@

Gallery

{% for example in examples %} + href="{{example.link}}">
{{ example.title }}
{{ example.description }}
diff --git a/docs/conf.py b/docs/conf.py index 4f104f909..7ecf6ee65 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -51,9 +51,9 @@ html_context = { 'description': description, 'examples': [ - {"title": "Basics", "link": f"{g}/examples/example7", "image": "../_static/images/gallery/safeway.png"}, - {"title": "Displacements", "link": "examples/01_SISO_Intro", "image": "../_static/images/gallery/sdof_full.svg"}, - {"title": "Motions", "link": "examples/04_MIMO_Intro", "image": "../_static/images/gallery/2dof_full.svg"}, + {"title": "Basics", "link": f"{g}/examples/example7/", "image": "../_static/images/gallery/safeway.png"}, + {"title": "Displacements", "link": f"{g}/examples/example5/", "image": "../_static/images/gallery/Example5.png"}, + {"title": "Motions", "link": f"{g}/examples/example6/", "image": "../_static/images/gallery/Example6.png"}, ], **globals() } diff --git a/docs/library/index.rst b/docs/library/index.rst index 63fc5cf51..a5e0f3661 100644 --- a/docs/library/index.rst +++ b/docs/library/index.rst @@ -26,8 +26,8 @@ frequency domain and time domain analysis of vibration signals: .. toctree:: :maxdepth: 1 - veux.server veux.canvas + veux.server .. top-level functions .. ------------------- From 80d25f67f1fbe7dc3d6cf1f254fbcd9d0732ab8b Mon Sep 17 00:00:00 2001 From: Claudio Perez <50180406+claudioperez@users.noreply.github.com> Date: Sat, 11 Jan 2025 11:36:44 -0800 Subject: [PATCH 5/5] cmp --- docs/_static/images/gallery/Example5.png | Bin 0 -> 61904 bytes docs/_static/images/gallery/Example6.png | Bin 0 -> 71644 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 docs/_static/images/gallery/Example5.png create mode 100755 docs/_static/images/gallery/Example6.png diff --git a/docs/_static/images/gallery/Example5.png b/docs/_static/images/gallery/Example5.png new file mode 100755 index 0000000000000000000000000000000000000000..42e861209b8bc43199a035e8a825f03a3545b8b3 GIT binary patch literal 61904 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�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 B0ImQ4 literal 0 HcmV?d00001 diff --git a/docs/_static/images/gallery/Example6.png b/docs/_static/images/gallery/Example6.png new file mode 100755 index 0000000000000000000000000000000000000000..700c96125b8459d7cea1b0b4788113475a2bed63 GIT binary patch literal 71644 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
gJLvM;fYqUag~(4k0O)$s(!wm~zMB-(dB zyqT))@VLwa5#H%%JnrSqDexMjl1xBA75KySn0&8asKhKcMAp! z(XCXUNY&NVV=EXdJWg%gul{syUSICzgeM6wpPG@N4xTJ<-+`hb+qs#UPu-Ym7Zb05 zNbwAPz3=mM8zR7osI<-b^a*pO%u>Z(X|D;^+<5W3F+0*{$M_^rLew{oObop_xN};0 zXqrlSxVhNu?}%J{;=!==Lt5uR3&&FqOY#8%fq*Kx=G#>X3ybW?$8QVT3{{t!TNk=2 zC|JLjQ+~9z7Jg##ya$Y1FPHQd+cIy1d5H)efKLj=ejxdE(WJb*93eO#@9Gn2C%|=Q z^Q5Q^^D>(z{I_-oCZg6BWIbQkF3>^3AZip8r(10wSW{C2jl2(MHdG{8PnmKv5`|!4 z*s~}mm$jyG>3|UFlf*=wdwVvQ>uGU>g940(pH2sgkb^!*@oJlme18+QL;Jo@rIlQmQ@=rKW5BRMQ+ub{3P=Ozet*ldPf<7< z%t^ML!^WTV^7c4aOx~s#(Y)8BA_`~Xd+et9l)OD&)GN`tDZ>um+yDrU>-$0zdVE_C zYYK+CqjD^6uDwtu_L|FoNLir%1ohJKmyVmu'CDkN9AEEyo!!PrDXV4vwb5Da8} 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

6=M{T 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 UPEJ+SOW=x&PKathbmH@W05e5Z{Qv*} literal 0 HcmV?d00001