Skip to content

Commit

Permalink
Merge pull request #142 from wilsonrljr/doc/assets
Browse files Browse the repository at this point in the history
remove book assets from main repository.
  • Loading branch information
wilsonrljr authored Sep 7, 2024
2 parents f9544c7 + 8ee55a4 commit 804b33b
Show file tree
Hide file tree
Showing 163 changed files with 153 additions and 154 deletions.
2 changes: 1 addition & 1 deletion docs/book/0 - Preface.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
![](./assets/Nonlinear_System_identification.png)
![](https://raw.githubusercontent.com/wilsonrljr/sysidentpy-data/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/Nonlinear_System_identification.png)

All the world is a nonlinear system

Expand Down
8 changes: 4 additions & 4 deletions docs/book/1 - Introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ Mathematical modeling is a great way to understand and analyze different parts o

Typing efficiently on a conventional QWERTY keyboard layout is the result of a well-learned model of the QWERTY keyboard embedded in the individual cognitive processes. However, if you are faced with a different keyboard layout, such as the Dvorak or AZERTY, you will probably struggle to adapt to the new model. The system changed, so you will have to update you *model*.

![](./assets/QWERTY.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/QWERTY.png?raw=true)
> [QWERTY - Wikipedia](https://en.wikipedia.org/wiki/QWERTY) - [ANSI](https://en.wikipedia.org/wiki/ANSI "ANSI") QWERTY keyboard layout (US)
![](./assets/AZERTY.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/AZERTY.png?raw=true)
> [AZERTY](https://en.wikipedia.org/wiki/AZERTY) layout used on a keyboard
Mathematical modeling touches on many parts of our lives. Whether we're looking at economic trends, tracking how diseases spread, or figuring out consumer behavior, models are essential tools for gaining knowledge, making informed decisions, and take control over complex systems.
Expand Down Expand Up @@ -108,7 +108,7 @@ plt.grid(True)
plt.show()
```

![](./assets/static_example.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/static_example.png?raw=true)
> Static response representation. The input signal representing the state of the switch (switch off (low level), switch on (high level)), and the static response: original sound (low level), processed sound (high level).
Now, let’s consider a dynamic system: using an air conditioner to lower the room temperature. This example effectively illustrates the concepts of dynamic systems and how their output responds over time.
Expand All @@ -117,7 +117,7 @@ Let’s imagine this from the perspective of signals. The input signal represent

Conversely, when the air conditioner is turned off, the room temperature does not immediately return to its original ambient temperature. Instead, it gradually warms up as the cooling effect diminishes.

![](./assets/dynamic_example.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/dynamic_example.png?raw=true)
> Using an air conditioner to lower the room temperature as dynamic system representation.
In this dynamic system, the output (room temperature) does not instantly follow the input (state of the air conditioner) because there is a time lag involved in both cooling and warming processes. The system has memory, meaning the current room temperature depends not only on the current state of the air conditioner but also on how long it has been running or off, and how much it has already cooled or allowed the room to warm up.
Expand Down
158 changes: 79 additions & 79 deletions docs/book/10 - Case Studies.md

Large diffs are not rendered by default.

22 changes: 11 additions & 11 deletions docs/book/2 - NARMAX Model Representation.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ plt.gca().yaxis.set_ticks([])
plt.show()
```

![](./assets/vandermode_example.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/vandermode_example.png?raw=true)
> Figure 1. Approximation using Vandermode Matrix. The yellow dots show the system data, the bold blue line represents the predicted values, and the other lines depict the basis functions.
### Example: Rectangular Basis Functions
Expand Down Expand Up @@ -136,7 +136,7 @@ plt.gca().yaxis.set_ticks([])
plt.show()
```

![](./assets/rectangular.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/rectangular.png?raw=true)
> Figure 2. Approximation using Rectangular Basis Function. The yellow dots show the system data, the bold blue line represents the predicted values, and the other lines depict the basis functions.
### Example: Triangular Basis Functions
Expand Down Expand Up @@ -189,7 +189,7 @@ plt.gca().yaxis.set_ticks([])
plt.show()
```

![](./assets/triangular.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/triangular.png?raw=true)
> Figure 3. Approximation using a Triangular Basis Function. The yellow dots show the system data, the bold blue line represents the predicted values, and the other lines depict the basis functions.
### Example: Radial Basis Function (RBF) - Gaussian
Expand Down Expand Up @@ -251,7 +251,7 @@ plt.gca().yaxis.set_ticks([])
plt.show()
```

![](./assets/rbf_example.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/rbf_example.png?raw=true)
> Figure 4. Approximation using the Radial Basis Function. The yellow dots show the system data, the bold blue line represents the predicted values, and the other lines depict the basis functions.
## Linear Models
Expand Down Expand Up @@ -347,7 +347,7 @@ ax.set_title("Simulation of an ARMAX model")
plt.show()
```

![](./assets/armax_example.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/armax_example.png?raw=true)
> Figure 4. Simulations to show the effects of different noise process generation on the ARMAX model's behavior.
### ARX
Expand Down Expand Up @@ -423,7 +423,7 @@ ax.set_title("Simulation of an ARX model")
plt.show()
```

![](./assets/arx_example.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/arx_example.png?raw=true)
> Figure 5. Simulations to show the effects of different noise process generation on the ARX model's behavior.
### ARMA
Expand Down Expand Up @@ -499,7 +499,7 @@ ax.set_title("Simulation of an ARMA model")
plt.show()
```

![](./assets/arma_example.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/arma_example.png?raw=true)
> Figure 6. Simulations to show the effects of different noise process generation on the ARMA model's behavior.
### AR
Expand Down Expand Up @@ -575,7 +575,7 @@ ax.set_title("Simulation of an AR model")
plt.show()
```

![](./assets/ar_example.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/ar_example.png?raw=true)
> Figure 7. Simulations to show the effects of different noise process generation on the AR model's behavior.
### FIR
Expand Down Expand Up @@ -652,7 +652,7 @@ ax.set_title("Simulation of an FIR model")
plt.show()
```

![](./assets/fir_example.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/fir_example.png?raw=true)
> Figure 8. Simulations to show the effects of different noise process generation on the **FIR** model's behavior.
> We didn't set the model_type for ARMAX and ARX because the default is `NARMAX`. SysIdentPy allows three different model types: `NARMAX`, `NAR`, and `NFIR`. Because ARMAX, ARX and others linear variants are subsets of NARMAX models, there is no need for specific `ARMAX` model type. The idea is to have model types for model with input and output regressors; models with only output regressors; and models with only input regressors.
Expand Down Expand Up @@ -1098,7 +1098,7 @@ Series-Parallel allows us to use `pytorch` directly for training, so **SysIdentP

A simple neural NARX model can be represented as a Multi-Layer Perceptron neural network with autoregressive component along with delayed inputs.

![](./assets/Pasted image 20240710121246.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/Pasted%20image%2020240710121246.png?raw=true)
> Figure 9. Parallel and series-parallel neural network architectures for modeling the dynamic system $\mathbf{y}[k]=\mathbf{F}(\mathbf{y}[k-1], \mathbf{y}[k-2], \mathbf{u}[k-1], \mathbf{u}[k-2])$. The delay operator $q^{-1}$ is such that $\mathbf{y}[k-1]=q^{-1} \mathbf{y}[k]$. Reference: [Antonio H. Ribeiro and Luis A. Aguirre](https://arxiv.org/pdf/1706.07119)
> Neural NARX is not the same model as Recurrent Neural Networks (RNN). The user is referred to the following paper for more details [A Note on the Equivalence of NARX and RNN](https://link.springer.com/article/10.1007/s005210050005)
Expand Down Expand Up @@ -1364,7 +1364,7 @@ $$

If $s=1$, we have a MISO model that can be represented by a single polynomial function. Additionally, a MIMO model can be decomposed into MISO models, as presented in the following figure:

![](./assets/mimo_split.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/mimo_split.png?raw=true)
> Figure 10. A MIMO model split into individual MISO models.
> SysIdentPy do not support MIMO models yet, only MISO models. You can, however, decompose a MIMO system as presented in Figure 9 and use SysIdentPy to create models for each subsystem.
6 changes: 3 additions & 3 deletions docs/book/3 - Parameter Estimation.md
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ plt.plot(estimator.theta_evolution.T[:50, :])
plt.xlabel("iterations")
plt.ylabel("theta")
```
![](./assets/theta_evolution.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/theta_evolution.png?raw=true)
> Figure 1. Evolution of the estimated parameters over time using the RLS algorithm.
## Least Mean Squares
Expand Down Expand Up @@ -748,7 +748,7 @@ plt.legend()
plt.show()
```

![](./assets/biased_parameter.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/biased_parameter.png?raw=true)
> Figure 2.: Kernel Density Estimates (KDEs) of the estimated parameters obtained from 50 NARX models realizations, each fitted to data with colored noise. The vertical dashed lines indicate the true parameter values used to generate the data. While the model structure is correctly identified, the estimated parameters are biased due to the omission of the Moving Average (MA) component, highlighting the need for the Extended Least Squares algorithm to achieve unbiased parameter estimation

Expand Down Expand Up @@ -792,7 +792,7 @@ plt.legend()
plt.show()
```

![](./assets/unbiased_estimator.png)
![](https://github.com/wilsonrljr/sysidentpy-data/blob/4085901293ba5ed5674bb2911ef4d1fa20f3438d/book/assets/unbiased_estimator.png?raw=true)
> Figure 3. Kernel Density Estimates (KDEs) of the estimated parameters obtained from 50 NARX models using the Extended Least Squares (ELS) algorithm with unbiased estimation. The vertical dashed lines indicate the true parameter values used to generate the data.
Unlike the previous biased estimation, these KDEs in Figure 3 show that the estimated parameters are now closely aligned with the true values, demonstrating the effectiveness of the ELS algorithm in achieving unbiased parameter estimation, even in the presence of colored noise.
Expand Down
Loading

0 comments on commit 804b33b

Please sign in to comment.