Skip to content

sidLTVdiscFrozen

Python equivalent: sid.ltv_disc_frozen

Frozen transfer function from LTV state-space model.

result = sidLTVdiscFrozen(ltvResult)
result = sidLTVdiscFrozen(ltvResult, 'Frequencies', w)
result = sidLTVdiscFrozen(ltvResult, 'TimeSteps', kVec)
result = sidLTVdiscFrozen(ltvResult, 'SampleTime', Ts)

Computes the frozen (instantaneous) transfer function at each time step k and frequency w:

\(G(w, k)\) = (\(e^{jw}\) I - A(k))^{-1} B(k)

If the ltvResult includes uncertainty (from sidLTVdisc with 'Uncertainty', true), the standard deviation of G is propagated via first-order (Jacobian) linearization.

Inputs

Name Description
ltvResult Result struct from sidLTVdisc (see sidResultTypes §4).
Required fields: .A, .B, .StateDim, .InputDim, .DataLength
Optional fields: .P, .NoiseCov (for uncertainty propagation)

Name-value options

Name Description
'Frequencies' (nf x 1) frequency vector in rad/sample.
Default: 128 linearly spaced in (0, pi].
'TimeSteps' (nk x 1) indices of time steps to evaluate
(1-based). Default: all 1:N.
'SampleTime' Sample time in seconds. Default: 1.0.

Outputs

Name Description
result Struct with fields:
.Frequency (nf x 1) rad/sample
.FrequencyHz (nf x 1) Hz
.TimeSteps (nk x 1) selected time step indices
.Response (nf x py x q x nk) complex transfer function
(py = observation dim; equals n only when H = I)
.ResponseStd (nf x py x q x nk) std dev ([] if no uncertainty)
.SampleTime scalar
.Method 'sidLTVdiscFrozen'

Examples

% Basic usage
ltv = sidLTVdisc(X, U, 'Lambda', 1e5, 'Uncertainty', true);
frz = sidLTVdiscFrozen(ltv);
% Custom frequencies and selected time steps
w = logspace(-2, log10(pi), 200)';
frz = sidLTVdiscFrozen(ltv, 'Frequencies', w, 'TimeSteps', [1 50 100]);

Specification

SPEC.md §8.9 — Bayesian Uncertainty Estimation

See also

sidLTVdisc, sidBodePlot, sidMapPlot

Changelog

  • 2026-04-06: Use exact Kronecker variance via rank-1 Jacobian factorization.
  • 2026-03-29: First version by Pedro Lourenço.