ControlSystemIdentification
System identification for ControlSystems.jl.
System identification is the process of estimating a dynamical model from data. This packages estimates primarily linear time-invariant (LTI) models, in the form of statespace systems
\[\begin{aligned} x^+ &= Ax + Bu + Ke\\ y &= Cx + Du + e \end{aligned}\]
or in the form of transfer functions
\[Y(z) = \dfrac{B(z)}{A(z)}U(z)\]
This package is implemented in the free and open-source programming language Julia.
If you are new to this package, start your journey through the documentation by learning about Identification data. Examples are provided in the Examples section and in the form of jupyter notebooks here. An introductory video is available below (system identification example starts around 55 minutes)
Installation
Install Julia from the download page. Then, in the Julia REPL, type
using Pkg
Pkg.add("ControlSystemIdentification")
Optional: To work with linear systems and plot Bode plots etc., also install the control toolbox ControlSystems.jl package which this package builds upon, as well as the plotting package
Pkg.add(["ControlSystemsBase", "Plots"])
Other resources
- For estimation of linear time-varying models (LTV), see LTVModels.jl.
- For estimation of linear and nonlinear grey-box models in continuous time, see DifferentialEquations.jl (parameter estimation)
- Estimation of nonlinear black-box models in continuous time DiffEqFlux.jl and DataDrivenDiffEq.jl
- For more advanced spectral estimation, cross coherence, etc., see LPVSpectral.jl
- This package interacts well with MonteCarloMeasurements.jl. See example file.
- State estimation is facilitated by LowLevelParticleFilters.jl.