ControlSystemIdentification.jl
System Identification toolbox, compatible with ControlSystems.jl
Install / Use
/learn @baggepinnen/ControlSystemIdentification.jlREADME
ControlSystemIdentification
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" ""])
Related Skills
ai-cmo
Collection of my Agent Skills and books.
next
A beautifully designed, floating Pomodoro timer that respects your workspace.
product-manager-skills
38PM skill for Claude Code, Codex, Cursor, and Windsurf: diagnose SaaS metrics, critique PRDs, plan roadmaps, run discovery, and coach PM career transitions.
devplan-mcp-server
3MCP server for generating development plans, project roadmaps, and task breakdowns for Claude Code. Turn project ideas into paint-by-numbers implementation plans.
