Skip to content

baggepinnen/ControlSystemIdentification.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ControlSystemIdentification

CI codecov Documentation, stable Documentation, latest

System identification for ControlSystems.jl, implemented in Julia.

This package estimates linear statespace models with inputs on the form

$$\begin{aligned} x^+ &= Ax + Bu + Ke\\\ y &= Cx + Du + e \end{aligned}$$

using methods such as N4SID or the prediction-error method, transfer functions on the form

$$G(z) = \dfrac{B(z)}{A(z)} = \dfrac{b_m z^m + \dots + b_0}{z^n + a_{n-1} z^{n-1} + \dots + a_0}$$

as well as generic nonlinear graybox models

$$x^+ = f(x, u)$$

See the documentation for help.

Examples in the form of jupyter notebooks are provided here.

Quick example:

using ControlSystemIdentification, ControlSystemsBase
Ts = 0.1
G  = c2d(DemoSystems.resonant(), Ts) # A true system to generate data from
u  = randn(1,1000)                   # A random input
y  = lsim(G,u).y                     # Simulated output
y .+= 0.01 .* randn.()               # add measurement noise
d  = iddata(y, u, Ts)                # package data in iddata object
sys = subspaceid(d, :auto)           # estimate state-space model using subspace-based identification
bodeplot([G, sys.sys], lab=["True" "" "n4sid" ""])