The Kalman Decomposition

How every linear system secretly splits into four subsystems — and why input–output experiments can only ever see one of them.
Contents: 1 Motivation · 2 The two questions · 3 The four-way map · 4 The canonical form · 5 Worked example · 6 Two pendulums · 7 Where it fits · 8 Interactive lab · References
Which “Kalman”? This page is about the Kalman decomposition of a linear system — also called the Kalman canonical structure — a structural theorem about state-space models. It is a sibling of, but not the same as, the Kalman filter; the connection between the two is drawn in §7.
Notation used throughout
A linear time-invariant (LTI) system is \(\dot x = Ax + Bu,\; y = Cx\) (feedthrough \(D\) added where noted). Here \(x\in\mathbb{R}^n\) is the state, \(u\in\mathbb{R}^m\) the input, \(y\in\mathbb{R}^p\) the output; \(A\in\mathbb{R}^{n\times n}\), \(B\in\mathbb{R}^{n\times m}\), \(C\in\mathbb{R}^{p\times n}\). \(G(s)=C(sI-A)^{-1}B+D\) is the transfer function: the input–output map at zero initial condition. \(\mathcal{C}=\begin{bmatrix}B&AB&\cdots&A^{n-1}B\end{bmatrix}\) is the controllability matrix and \(\mathcal{O}=\begin{bmatrix}C\\CA\\ \vdots\\ CA^{n-1}\end{bmatrix}\) the observability matrix (bold \(\mathcal{C},\mathcal{O}\) vs. plain \(C\) — sorry, tradition). \(\operatorname{im}\) = column space, \(\ker\) = null space, \(\mathcal{R}=\operatorname{im}\mathcal{C}\) is the reachable subspace, \(\mathcal{N}=\ker\mathcal{O}\) the unobservable subspace, \(\lambda\) an eigenvalue, \(T\) a change-of-basis matrix, and a bar (\(\bar A,\bar x\)) marks coordinates after the change of basis. Reachable and controllable are used interchangeably: for LTI systems the two notions coincide (steering \(0\to x\) and \(x\to 0\) are the same problem run backwards in time).

1Same behavior, different machinery

An LTI system can be described in two languages. Externally, by its transfer function \(G(s)\) — the black-box relation between input and output that a frequency response or a step test can identify. Internally, by a state-space model \((A,B,C)\) — the full machinery of \(n\) coupled states. The internal description contains strictly more information than the external one, and the slack is the whole story of this page.

\(u\)
\(y\)
\(u\)
\(y\)
\(u\)
\(y\)
wiring (A,B,C)₁
wiring (A,B,C)₂
wiring (A,B,C)₃
same \(u(t)\) in, identical \(y(t)\) out — three different internal machineries
Fig. 1 — The slack between the two descriptions. Many inequivalent state-space models produce the same transfer function. The reason: internal motion can be unreachable from the input, or invisible at the output — and \(G(s)\) describes neither.

Why does the slack exist? Two ways a part of the machinery can hide from the outside world:

And why care? Three practical reasons. (1) Minimality: if some states can neither be driven nor observed, simulating or controlling them is wasted effort — the smallest model that reproduces \(G(s)\) is what you want. (2) Safety: an internal mode can be unstable while \(G(s)\) looks perfectly stable — external (BIBO) stability does not imply internal stability, and §5 shows a system whose output stays calm while a state inside diverges. (3) Design limits: feedback can never move poles it cannot reach, and an observer or filter can never reconstruct a state the sensor cannot see. The Kalman decomposition turns all three statements from folklore into exact bookkeeping.

Takeaway The transfer function describes only the part of a system that is simultaneously reachable from the input and visible at the output; Kalman’s decomposition finds that part exactly and quarantines the rest.

2The two questions: controllability and observability

The decomposition is built from two yes/no questions that you ask of the dynamics:

Q1: where can the input take the state?

Starting from \(x(0)=0\), the solution formula gives \(x(t)=\int_0^t e^{A\tau}B\,u(t-\tau)\,d\tau\), so the set of reachable states is the span of \(\{e^{A\tau}B\}\) over all \(\tau\) — a linear subspace. By the Cayley–Hamilton theorem \(A^n\) is a linear combination of \(I,A,\dots,A^{n-1}\), so every higher power in the exponential’s series adds no new directions; the span collapses to

$$\mathcal{R} \;=\; \operatorname{im}\,\mathcal{C}, \qquad \mathcal{C}=\begin{bmatrix}B & AB & \cdots & A^{n-1}B\end{bmatrix}.$$

The pair \((A,B)\) is controllable exactly when \(\operatorname{rank}\mathcal{C}=n\), i.e. \(\mathcal{R}=\mathbb{R}^n\). There is also a sharper, per-eigenvalue test (Popov–Belevitch–Hautus, PBH). Suppose some left eigenvector satisfies \(w^{\mathsf T}\!A=\lambda w^{\mathsf T}\) and \(w^{\mathsf T}\!B=0\). Then \(w^{\mathsf T}\dot x=\lambda\,w^{\mathsf T}x\) — the scalar \(w^{\mathsf T}x\) obeys a homogeneous law that the input provably cannot enter, so the mode \(e^{\lambda t}\) is unreachable. The mode test is:

$$\text{mode } \lambda \text{ reachable} \iff \operatorname{rank}\begin{bmatrix}\lambda I - A & B\end{bmatrix}=n.$$

Q2: what can the output rule out?

With the input known, the forced part of the response is known; the unknown is the initial state, which enters only through \(y(t)=Ce^{At}x_0\). Two initial states are indistinguishable exactly when their difference \(x_0\) produces \(Ce^{At}x_0\equiv 0\). Expanding by Cayley–Hamilton as before, this happens iff \(Cx_0=CAx_0=\cdots=CA^{n-1}x_0=0\). So the unobservable subspace is

$$\mathcal{N} \;=\; \ker\,\mathcal{O}, \qquad \mathcal{O}=\begin{bmatrix}C\\CA\\ \vdots\\ CA^{n-1}\end{bmatrix},$$

and \((A,C)\) is observable iff \(\operatorname{rank}\mathcal{O}=n\), i.e. \(\mathcal{N}=\{0\}\). The PBH dual: if a right eigenvector satisfies \(Av=\lambda v\) with \(Cv=0\), then \(Ce^{\lambda t}v=0\) — that modal motion never appears in \(y\) at all:

$$\text{mode } \lambda \text{ observable} \iff \operatorname{rank}\begin{bmatrix}\lambda I - A\\ C\end{bmatrix}=n.$$

Two structural facts that power everything later

Takeaway Controllability asks whether the input can reach a direction and observability whether the output can distinguish it; both are rank tests, both have per-mode (PBH) versions, and the two are transposes of one another.

3The four-way map of state space

Now ask both questions of every direction in state space. Using the reachable subspace \(\mathcal{R}=\operatorname{im}\mathcal{C}\) and the unobservable subspace \(\mathcal{N}=\ker\mathcal{O}\), the state space splits into four subspaces according to the two answers. The map below is the heart of the theorem.

output cannot see it (\(\bar o\))
output can see it \((o)\)
input can reach
(\(r\))
\(\mathcal{X}_{r\bar o}\) — pushed, never filmed
driven by \(u\), but its motion never leaks into \(y\). An unstable mode here can be stabilized — blindfolded.
\(\mathcal{X}_{ro}\) — on stage
driven and visible. The only subsystem the transfer function \(G(s)\) describes.
input cannot reach
(\(\bar r\))
\(\mathcal{X}_{\bar r\bar o}\) — the ghost
no path in from \(u\), no path out to \(y\). Set in motion only by initial conditions; nothing outside can ever tell.
\(\mathcal{X}_{\bar r o}\) — filmed, never pushed
visible in \(y\), but no input path reaches it: you can watch it, you cannot touch it.
Fig. 2 — The four kinds of state direction. Rows: can the input reach it? Columns: can the output see it? A color code (blue = reachable, gray = unreachable, green = observable, orange/dashed = unobservable) is kept consistently on every figure of this page.

Three clarifications that prevent common misreadings. (1) These are subspaces — whole families of directions — with dimensions \(n_1,n_2,n_3,n_4\) summing to \(n\); a concrete state vector generally has components in several blocks at once. (2) The partition is a change of viewpoint, not a physical disassembly: §4 simply chooses coordinates aligned with it. (3) The splitting inside each intersection is not unique — only the four dimensions, and the zero pattern they force, are canonical.

Takeaway Every linear system hides a four-way partition of its state space — reachable-or-not crossed with observable-or-not — and the decomposition is nothing more than coordinates chosen to make that partition visible.

4The canonical form

To compute with the map, choose new coordinates \(\bar x = T^{-1}x\) whose basis vectors span, in order, a complement structure adapted to \(\mathcal{R}\) and \(\mathcal{N}\): block 1 inside \(\mathcal{R}\cap\mathcal{N}\), block 2 filling out \(\mathcal{R}\), block 3 filling out \(\mathcal{N}\), block 4 the remainder. In these coordinates the two invariances of §2 force a triangular zero pattern:

generic coordinates:
every state mixes everything
change of basis
\(\bar x = T^{-1}x\)
basis aligned with
\(\mathcal{R}\) and \(\mathcal{N}\)
\(\mathcal{X}_{r\bar o}\)
\(A_{12}\)
\(A_{13}\)
\(A_{14}\)
0
\(\mathcal{X}_{ro}\)
0
\(A_{24}\)
0
0
\(\mathcal{X}_{\bar r\bar o}\)
\(A_{34}\)
0
0
0
\(\mathcal{X}_{\bar r o}\)
\(B_{r\bar o}\)
\(B_{ro}\)
0
0
0
\(C_{ro}\)
0
\(C_{\bar r o}\)
\(D\)
Kalman canonical form
\(u\) enters
here only
\(y\) reads only these
reachable + observable — the only block \(G(s)\) sees reachable, unobservable unreachable, unobservable unreachable, observable allowed coupling structurally forced zero
Fig. 3 — The change of basis separates the machinery. In coordinates aligned with \(\mathcal{R}\) and \(\mathcal{N}\), the invariances of §2 force all pale cells to zero: \(\hat A=\begin{bmatrix}A_{r\bar o}&A_{12}&A_{13}&A_{14}\\ 0&A_{ro}&0&A_{24}\\ 0&0&A_{\bar r\bar o}&A_{34}\\ 0&0&0&A_{\bar r o}\end{bmatrix}\), \(\hat B=\begin{bmatrix}B_{r\bar o}\\B_{ro}\\0\\0\end{bmatrix}\), \(\hat C=\begin{bmatrix}0&C_{ro}&0&C_{\bar r o}\end{bmatrix}\). Each diagonal block is one of the four subspaces of Fig. 2.
\(u\)
\(\mathcal{X}_{r\bar o}\)
pushed, never filmed
\(\mathcal{X}_{ro}\)
the block \(G(s)\) describes
\(\mathcal{X}_{\bar r\bar o}\)
the ghost
\(\mathcal{X}_{\bar r o}\)
filmed, never pushed
\(y\)
\(A_{12}\)
\(A_{34}\)
\(A_{24}\)
autonomous — only an initial condition can ever set blocks 3–4 in motion
Fig. 4 — Signal flow of the canonical form. The input reaches blocks 1–2 only; block 2 stirs block 1 (\(A_{12}\)) and block 4 stirs blocks 2–3 (\(A_{24},A_{34}\)); \(y\) reads blocks 2 and 4. Follow the arrows: the only path from \(u\) to \(y\) is \(u\to\mathcal{X}_{ro}\to y\) — the transfer function can be built from block 2 alone.

The punchline, in three lines

Take the canonical form at zero initial condition. First, blocks 3 and 4 are autonomous — their rows contain no \(u\) and receive no coupling from the driven blocks — so zero initial conditions keep them identically zero. Second, what remains is \(\dot{\bar x}_2 = A_{ro}\bar x_2 + B_{ro}u\) (block 1 is driven by \(u\) through \(B_{r\bar o}\), but nothing it does ever reaches \(y\) — that is what \(\mathcal{N}\)’s invariance bought us). Third, \(y = C_{ro}\bar x_2 + Du\). Therefore

$$G(s) \;=\; C_{ro}\,(sI-A_{ro})^{-1}\,B_{ro} \;+\; D.$$

Three quarters of the machinery — blocks 1, 3, 4 — appears in no input–output experiment, ever. Block 1 is the subtle one: it is pushed by the input, yet invisible, because its motion never leaks into measured coordinates.

Consequences fall out immediately. The eigenvalues of \(\hat A\) are those of the four diagonal blocks (the matrix is block triangular), but only eigenvalues of \(A_{ro}\) can be poles of \(G(s)\). Dropping blocks 1, 3, 4 leaves \((A_{ro},B_{ro},C_{ro})\), which is by construction both controllable and observable — a minimal realization of \(G(s)\) (Kalman: a realization is minimal iff controllable and observable; all minimal realizations of the same \(G\) are related by a change of basis). Its order is the McMillan degree of \(G\) — the number of states any experiment can support. And the gap between \(G(s)\) stable and the internal dynamics stable is exactly unstable eigenvalues in blocks 1, 3, 4.

Takeaway In adapted coordinates the system reads as four cascaded machines, and every input–output experiment — every step test, every frequency response — probes only the reachable-and-observable block: \(G(s)=C_{ro}(sI-A_{ro})^{-1}B_{ro}+D\).

5Worked example: a system with a ghost

Enough structure — let us push numbers through it. Take a fourth-order system that is already in modal coordinates (the general case only mixes these blocks by a change of basis):

$$A=\operatorname{diag}(-1,\,-2,\,+2,\,-0.5), \qquad B=\begin{bmatrix}1\\1\\0\\0\end{bmatrix}, \qquad C=\begin{bmatrix}0&1&0&1\end{bmatrix}.$$

The two rank tests partition the four modes. For controllability, \(\mathcal{C}=\begin{bmatrix}B&AB&A^2B&A^3B\end{bmatrix} =\begin{bmatrix}1&-1&1&-1\\1&-2&4&-8\\0&0&0&0\\0&0&0&0\end{bmatrix}\) has rank 2 — modes 3 and 4 get no input path. For observability, \(\mathcal{O}=\begin{bmatrix}C\\CA\\CA^2\\CA^3\end{bmatrix} =\begin{bmatrix}0&1&0&1\\0&-2&0&-0.5\\0&4&0&0.25\\0&-8&0&-0.125\end{bmatrix}\) has rank 2 — modes 1 and 3 leave no trace in \(y\). Intersecting the two answers places every mode in the map of Fig. 2:

not in \(y\) (\(\bar o\))
in \(y\) (\(o\))
driven (\(r\))
mode 1: \(\lambda=-1\)
\(u\) moves it; \(y\) never shows it
mode 2: \(\lambda=-2\)
the only pole of \(G(s)\)
undriven (\(\bar r\))
mode 3: \(\lambda=+2\)
unstable ghost — invisible, unreachable
mode 4: \(\lambda=-0.5\)
visible from initial conditions, never driven
Fig. 5 — Where the four modes landed. \(\mathcal{R}=\operatorname{span}(e_1,e_2)\), \(\mathcal{N}=\operatorname{span}(e_1,e_3)\), and the transfer function is \(G(s)=\dfrac{1}{s+2}\): a single, stable pole.

Now stare at what an input–output experiment can and cannot learn. Feeding \(u\) and recording \(y\), this system is exactly as informative as the scalar system \(\dot x = -2x + u,\ y=x\): one pole at \(-2\), BIBO stable, pleasant. Meanwhile mode 3, \(\lambda=+2\), doubles roughly every \(0.35\) time units whenever an initial condition or an unmodeled disturbance touches it — and it can neither be seen in \(y\) (row \(C_3=0\), and no coupling out of the unobservable subspace) nor stopped by any feedback (no \(B_3\), and no path from the driven blocks back into it). This is the precise, non-metaphorical gap between external stability (poles of \(G\)) and internal stability (eigenvalues of \(A\)).

The same map tells you, at a glance, the fate of any unstable mode — which is why the decomposition’s vocabulary (controllable, observable) is stamped all over control design theorems:

Unstable mode lives in…In \(G(s)\)?Feedback can move it?Observer can see it?Verdict
\(\mathcal{X}_{ro}\)yesyesyesyou watch it diverge and stop it — the healthy case
\(\mathcal{X}_{r\bar o}\)noyesnostabilizable but not detectable: fixable, but blindfolded
\(\mathcal{X}_{\bar r o}\)nonoyesdetectable but not stabilizable: an alarm you cannot silence
\(\mathcal{X}_{\bar r\bar o}\)nononothe nightmare: internal instability no experiment can ever detect
Fig. 6 — Fate of an unstable mode. The two practical weakenings of controllability/observability read off directly: stabilizable ⇔ nothing unstable in the unreachable blocks \(\mathcal{X}_{\bar r\bar o},\mathcal{X}_{\bar r o}\); detectable ⇔ nothing unstable in the unobservable blocks \(\mathcal{X}_{r\bar o},\mathcal{X}_{\bar r\bar o}\).

A practical footnote: to actually find \(T\) for a generic (non-modal) \((A,B,C)\), one extracts bases for \(\operatorname{im}\mathcal{C}\) and \(\ker\mathcal{O}\) — in numerical practice via orthogonal staircase algorithms, which are the standard route in control software; §7 mentions the refinement that made this the basis of model reduction.

Takeaway Two rank computations placed all four modes: the system is externally a single stable pole at \(-2\), while internally it harbors an invisible, unstoppable instability at \(+2\) — external and internal stability are different statements, and the decomposition says exactly by how much.

6Two pendulums: where dead modes come from

Unreachable and unobservable modes are not pathological curiosities — they are what symmetry looks like inside a state-space model. The cleanest physical specimen: two identical pendulums driven by one actuator that pushes both equally, \(\ddot\theta_i=-\omega_0^2\theta_i+b\,u\) for \(i=1,2\) — one shared input, identical natural frequency \(\omega_0\).

one actuator, equal push \(u\) on both
\(\theta_1\)
\(\theta_2\)
\(\sigma_+=\theta_1+\theta_2\) — in-phase: driven
\(\ddot\sigma_+=-\omega_0^2\sigma_+ + 2bu\)
\(\sigma_-=\theta_1-\theta_2\) — anti-phase:
no input path, \(\ddot\sigma_-=-\omega_0^2\sigma_-\)
Fig. 7 — Symmetry creates an unreachable mode. The actuator commands a symmetric force, so the antisymmetric direction lies in its null space: \(\sigma_-\) is uncontrollable (PBH view: its left eigenvector \(w\) satisfies \(w^{\mathsf T}B=0\)). It is, however, observable: \(y=\theta_1=(\sigma_++\sigma_-)/2\) sees both modes — a bell you can hear but never ring.

Two variants drive home that the decomposition is a property of the triple \((A,B,C)\), not of the physics alone. Sensor variant: replace the position sensor with a strain gauge measuring the difference, \(y=\theta_1-\theta_2=\sigma_-\). Now the in-phase mode \(\sigma_+\) becomes the invisible one — controllable, unobservable: block \(\mathcal{X}_{r\bar o}\). Same machine, different sensor, different block. Asymmetry variant: lengthen one pendulum slightly (\(\omega_1\neq\omega_2\)). The perfect left-eigenvector alignment that made \(w^{\mathsf T}B=0\) is destroyed — the controllability matrix \(\begin{bmatrix}B&AB&\cdots\end{bmatrix}\) fills rank, and both modes become controllable from the one actuator. Dead modes are structural: they live on the measure-zero set of perfectly symmetric designs, which is why real plants usually have small \(n_1,n_3,n_4\) — but truncated, reduced, or discretized models recreate them on purpose.

Takeaway Uncontrollable and unobservable modes arise when actuator or sensor geometry is blind to a direction — typically a symmetry — and which block a mode lands in can depend on the sensor as much as on the actuator.

7Where it fits in the larger theory

The decomposition is not an isolated curiosity; it is the structural backbone under several pillars of linear systems theory.

Takeaway Minimality, model reduction, stabilizability/detectability fine print, duality, and the fine print of the Kalman filter are all the same picture: sort the states by reachable and observable, then act on what the sort reveals.

8A four-mode lab (interactive)

The toy below integrates \(\dot x = Ax+Bu,\ y=Cx\) with the four modes of §5 (\(\lambda = -1, -2, +2, -0.5\)) as four independent channels — a diagonal \(A\), i.e. a system already in Kalman form. Use the switches to change which modes the actuator drives (\(B\)) and which the camera films (\(C\)); press push u to apply an input pulse, or kick to set an initial condition. The widget only integrates and plots — the patterns you see are the theorem made tangible.

actuator \(B\)
camera \(C\)
actions
\(y = Cx\)measured output
\(x_1\) — \(\mathcal{X}_{r\bar o}\) \((\lambda=-1)\)
\(x_2\) — \(\mathcal{X}_{ro}\) \((\lambda=-2)\)
\(x_3\) — \(\mathcal{X}_{\bar r\bar o}\) \((\lambda=+2)\)
\(x_4\) — \(\mathcal{X}_{\bar r o}\) \((\lambda=-0.5)\)
Try, with the default switches: kick \(x_3\) — its state grows without bound (\(\lambda=+2\)) while the measured \(y\) stays perfectly flat. Then flip “camera sees \(x_1\)” and “actuator drives \(x_3\)” and watch the same physics become visible and drivable. Solid trace = visible in \(y\); dashed = invisible; gray = no path from \(u\).

9References

  1. R. E. Kalman, “On the general theory of control systems,” Proc. 1st IFAC Congress, Moscow, 1960.
  2. R. E. Kalman, “Mathematical description of linear dynamical systems,” SIAM Journal on Control, 1(2):152–192, 1963.
  3. E. G. Gilbert, “Controllability and observability in multivariable control systems,” SIAM Journal on Control, 1963.
  4. T. Kailath, Linear Systems, Prentice-Hall, 1980.
  5. B. C. Moore, “Principal component analysis in linear systems: controllability, observability, and model reduction,” IEEE Transactions on Automatic Control, 26(1):17–32, 1981.
  6. P. J. Antsaklis and A. N. Michel, Linear Systems, Birkhäuser, 2006.
Self-contained page — MathJax embedded, all figures inline. The interactive lab is a presentation-only simulation of \(\dot x = Ax+Bu\); it integrates and plots, and asserts nothing.