ControlSystemIdentification
This package has been around for a while but has never been announced here.
ControlSystemIdentification.jl aims to be similar in scope to Ljung’s System Identification Toolbox in Matlab, implementing estimation procedures for linear input-output models and time-series analysis. Although we are not all the way there yet, quite a number of methods are present, some of them are
- Subspace-based identification of statespace models [1] using n4sid.
- Identification of AR and ARX models (transfer functions) [2].
- Nonparametric transfer-function and coherence estimation using spectral methods.
- General statespace model estimation using the prediction-error method (PEM) with arbitrary metrics.
- Impulse response estimation.
The package returns models in the form of TransferFunction
and StateSpace
types from ControlSystems.jl and makes heavy use of Optim.jl and TotalLeastSquares.jl.
The documentation is in the README as well as in docstrings for each function. There is also a collection of notebooks that illustrate usage of the package for various identification tasks.
[1] Models on the form
x_{t+1} = Ax_t + Bu_t + Kw_t
y_t \;\;\;\,= Cx_t + Du_t + w_t
where both u and y may be vectors (MIMO, multiple input multiple output).
[2] Models on the form
y_t = \sum a_k y_{t-k} + \sum b_k u_{t-k} + \sum c_k w_{t-k} or A(z)Y(z) = B(z)U(z) + C(z)W(z)
where the polynomials B and C are optional.