Skip to content

sidLTIfreqIO

Python equivalent: sid.lti_freq_io

Identify LTI state-space model from input-output data.

[A0, B0] = sidLTIfreqIO(Y, U, H)
[A0, B0] = sidLTIfreqIO(Y, U, H, 'Horizon', r)
[A0, B0] = sidLTIfreqIO(Y, U, H, 'MaxStabilize', s)

Estimates a constant (LTI) state-space realization from input-output data, given a known observation matrix H:

\(x(k+1)\) = A0 x(k) + B0 u(k) y(k) = H x(k)

Uses the Ho-Kalman realization algorithm applied to the frequency response estimated via sidFreqBT. The realization is transformed to the H-basis so that the observation equation y = H x holds exactly with the returned (A0, B0).

Inputs

Name Description
Y Output data, (N+1 x py), (N+1 x py x L), or cell array {L x 1}
where Y{l} is (N_l+1 x py). For cells, trajectories shorter
than 2/3 of max horizon are discarded; the rest are trimmed
to a common length for spectral estimation.
U Input data, (N x q), (N x q x L), or cell array {L x 1}
where U{l} is (N_l x q). Must match Y format.
H Observation matrix, (py x n).

Name-value options

Name Description
'Horizon' Hankel matrix depth r. Default: min(floor(nf/3), 50)
where nf is the number of frequency bins.
'MaxStabilize' Maximum eigenvalue magnitude after stabilization.
Unstable eigenvalues (|lambda| > threshold) are
reflected inside the unit circle: lambda <- 1/conj(lambda),
then clamped to this radius. Default: 0.999.

Outputs

Name Description
A0 (n x n) estimated LTI dynamics matrix.
B0 (n x q) estimated LTI input matrix.

Examples

% Estimate LTI dynamics from partial observations
[A0, B0] = sidLTIfreqIO(Y, U, H);
% With custom Hankel horizon
[A0, B0] = sidLTIfreqIO(Y, U, H, 'Horizon', 30);

Algorithm

  1. Estimate transfer function \(G(e^{jw})\) = H(zI-A)^{-1}B via sidFreqBT
  2. Compute Markov parameters g(k) = H A^{k-1} B via IFFT
  3. Build block Hankel matrices H_0 and H_1 (shifted)
  4. SVD of H_0, truncate to order n (Ho-Kalman realization)
  5. Transform realization to H-basis: find T s.t. C_r \(T^{-1}\) = H
  6. Stabilize eigenvalues if needed

References

Ho, B.L. and Kalman, R.E. "Effective construction of linear state-variable models from input/output functions." Regelungstechnik, 14(12):545-548, 1966.

Specification

SPEC.md section 8.12 -- Output-COSMIC (LTI initialization)

See also

sidFreqBT, sidModelOrder, sidLTVdiscIO, sidLTVStateEst

Changelog

  • 2026-04-02: First version by Pedro Lourenco.