StateOutputEstimator[ssm,l]
constructs an estimator for the StateSpaceModel ssm, with estimator gain matrix l.
StateOutputEstimator[{ssm,sensors},l]
uses only sensors as the measurements of ssm.
StateOutputEstimator[{ssm,sensors,dinputs},l]
specifies dinputs as the deterministic inputs of ssm.
StateOutputEstimator
StateOutputEstimator[ssm,l]
constructs an estimator for the StateSpaceModel ssm, with estimator gain matrix l.
StateOutputEstimator[{ssm,sensors},l]
uses only sensors as the measurements of ssm.
StateOutputEstimator[{ssm,sensors,dinputs},l]
specifies dinputs as the deterministic inputs of ssm.
Details and Options
- The standard state-space model ssm can be given as StateSpaceModel[{a,b,c,d}], where a, b, c and d represent the state, input, output and transmission matrices in either a continuous-time or a discrete-time system:
-

continuous-time system 
discrete-time system - The descriptor state-space model ssm can be given as StateSpaceModel[{a,b,c,d,e}] in either continuous-time or discrete-time:
-

continuous-time system 
discrete-time system - StateOutputEstimator also accepts nonlinear systems specified by AffineStateSpaceModel and NonlinearStateSpaceModel.
- For nonlinear systems, the operating values of state and input variables are taken into consideration when constructing the estimator.
- The inputs
can include stochastic inputs
and deterministic inputs
. - The argument dinputs is a list of integers specifying the positions of
in
. - The outputs
can include measurements
and other outputs. - The argument sensors is a list of integers specifying the positions of
in
. - StateOutputEstimator[ssm,l] is equivalent to StateOutputEstimator[{ssm,All,All},l].
- The estimator gains l can be computed using EstimatorGains, LQEstimatorGains or DiscreteLQEstimatorGains.
- StateOutputEstimator[ssm,LQEstimatorGains[ssm,…],…] gives a Kalman estimator.
- StateOutputEstimator[ssm,EstimatorGains[ssm,…],…] gives a Luenberger estimator.
- StateOutputEstimator supports a Method option. The following explicit settings can be given:
-
"CurrentEstimator" constructs the current estimator "PredictionEstimator" constructs the prediction estimator - The current estimate is based on measurements up to the current instant.
- The prediction estimate is based on measurements up to the previous instant.
- StateOutputEstimator gives an estimator with dynamics
for continuous-time systems. The matrices with subscripts
and
are submatrices associated with the deterministic inputs
and the sensors
. - The prediction estimator of a discrete-time system has dynamics
. - For discrete-time systems, StateOutputEstimator[…,Method->"CurrentEstimator"] gives an estimator with dynamics
, and the current state estimate
is obtained from the current measurement
as
. - For discrete-time systems, the prediction gain
and the current gain
have the relationship
. - Block diagram for the system with estimator:
- The inputs to the estimator model are the deterministic inputs
and the measurements
. - The outputs of the estimator model consist of the estimated states
and estimates of the measurements
.
Examples
open all close allBasic Examples (3)
The output and state estimator for a continuous-time system:
StateOutputEstimator[StateSpaceModel[{{{-2}}, {{0.6, 0.4}}, {{0.5}, {-0.4}}, {{1, -1}, {0, 1}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], (-0.67 -0.33)]An estimator of a system with unity estimator gain and a sensor at the second output:
StateOutputEstimator[{StateSpaceModel[{{{a}}, {{Subscript[b, 1],
Subscript[b, 2]}}, {{Subscript[c, 1]},
{Subscript[c, 2]}}, {{Subscript[d, 11],
Subscript[d, 12]}, {Subscript[d, 21],
Subscript[d, 22]}}}, SamplingPeriod -> None, SystemsModelLabels -> None], 2}, (1)]For a discrete-time system, StateOutputEstimator assembles a discrete‐time estimator:
StateOutputEstimator[{StateSpaceModel[{{{a}}, {{Subscript[b, 1],
Subscript[b, 2]}}, {{Subscript[c, 1]},
{Subscript[c, 2]}}, {{Subscript[d, 11],
Subscript[d, 12]}, {Subscript[d, 21],
Subscript[d, 22]}}}, SamplingPeriod -> τ, SystemsModelLabels -> None], 1}, (1)]Scope (8)
A linear estimator for a system with one measured output and one deterministic input:
StateOutputEstimator[StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{d}}},
SamplingPeriod -> None, SystemsModelLabels -> None], (L)]Specify that the input is stochastic:
StateOutputEstimator[{StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{d}}},
SamplingPeriod -> None, SystemsModelLabels -> None], All, None}, (L)]The estimator for a system in which all the outputs are measured and all inputs are deterministic:
StateOutputEstimator[StateSpaceModel[{{{a}}, {{Subscript[b, 1],
Subscript[b, 2]}}, {{Subscript[c, 1]},
{Subscript[c, 2]}}, {{Subscript[d, 11],
Subscript[d, 12]}, {Subscript[d, 21],
Subscript[d, 22]}}}, SamplingPeriod -> None, SystemsModelLabels -> None], (Subscript[L, 1] Subscript[L, 2])]Only the first output is measured:
StateOutputEstimator[{StateSpaceModel[{{{a}}, {{Subscript[b, 1],
Subscript[b, 2]}}, {{Subscript[c, 1]},
{Subscript[c, 2]}}, {{Subscript[d, 11],
Subscript[d, 12]}, {Subscript[d, 21],
Subscript[d, 22]}}}, SamplingPeriod -> None, SystemsModelLabels -> None], 1}, (Subscript[L, 1])]The first output is measured and the first input is stochastic:
StateOutputEstimator[{StateSpaceModel[{{{a}}, {{Subscript[b, 1],
Subscript[b, 2]}}, {{Subscript[c, 1]},
{Subscript[c, 2]}}, {{Subscript[d, 11],
Subscript[d, 12]}, {Subscript[d, 21],
Subscript[d, 22]}}}, SamplingPeriod -> None, SystemsModelLabels -> None], 1, 1}, (Subscript[L, 1])]All the outputs are measured and all inputs are stochastic:
StateOutputEstimator[{StateSpaceModel[{{{a}}, {{Subscript[b, 1],
Subscript[b, 2]}}, {{Subscript[c, 1]},
{Subscript[c, 2]}}, {{Subscript[d, 11],
Subscript[d, 12]}, {Subscript[d, 21],
Subscript[d, 22]}}}, SamplingPeriod -> None, SystemsModelLabels -> None], All, None}, (Subscript[L, 1] Subscript[L, 2])]An estimator for a descriptor state-space model:
StateOutputEstimator[StateSpaceModel[{{{a}}, {{Subscript[b, 1],
Subscript[b, 2]}}, {{Subscript[c, 1]},
{Subscript[c, 2]}}, {{Subscript[d, 1], 0},
{0, Subscript[d, 2]}}, {{e}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], (Subscript[l, 1] Subscript[l, 2])]An estimator for an AffineStateSpaceModel:
asys = AffineStateSpaceModel[{{-Sin[0.5 - Subscript[x, 1]],
Subscript[x, 1] - Subscript[x, 2]}, {{1}, {0}},
{Subscript[x, 1]}, {{0}}}, {{Subscript[x, 1], 0.5},
{Subscript[x, 2], 0}}, {u}, {Automatic}, Automatic,
SamplingPeriod -> None];Compute a set of gains based on the linearized system:
ℓ = EstimatorGains[asys, {-1, -2}]estim = StateOutputEstimator[asys, ℓ]Compute the actual and estimated responses:
Subscript[y, a] = OutputResponse[{asys, {-3, 0}}, Sin[t], {t, 0, 25}];Subscript[y, e] = OutputResponse[estim, Join[{Sin[t]}, Subscript[y, a]], {t, 0, 25}][[-1]];Plot[{Subscript[y, a], Subscript[y, e]}, {t, 0, 4}, PlotLegends -> {"actual", "estimated"}, PlotRange -> All]Options (2)
Method (2)
By default, the estimator is based on the current measurements:
ssm = StateSpaceModel[{{{a}}, {{Subscript[b, 1],
Subscript[b, 2]}}, {{Subscript[c, 1]},
{Subscript[c, 2]}}, {{Subscript[d, 11],
Subscript[d, 12]}, {Subscript[d, 21],
Subscript[d, 22]}}}, SamplingPeriod -> τ, SystemsModelLabels -> None];gains = (Subscript[g, 1] Subscript[g, 2]);StateOutputEstimator[ssm, gains]StateOutputEstimator[ssm, gains, Method -> "PredictionEstimator"]For continuous-time systems, the current and prediction estimates are equivalent:
Table[StateOutputEstimator[StateSpaceModel[{{{a}}, {{Subscript[b, 1],
Subscript[b, 2]}}, {{Subscript[c, 1]},
{Subscript[c, 2]}}, {{Subscript[d, 11],
Subscript[d, 12]}, {Subscript[d, 21],
Subscript[d, 22]}}}, SamplingPeriod -> None, SystemsModelLabels -> None], (Subscript[g, 1] Subscript[g, 2]), Method -> m], {m, {"CurrentEstimator", "PredictionEstimator"}}]Equal@@%Applications (1)
An observer for a continuous-time system:
ssm = StateSpaceModel[{{{-1, 0, 0}, {0, -2, 0}, {0, 0, -3}}, {{-1}, {0}, {1}},
{{1, -1, 0}, {1.5, 0, -1}}, {{1}, {0}}}, SamplingPeriod -> None, SystemsModelLabels -> None];l = EstimatorGains[ssm, {-3 + 4I , -3 - 4I , -12}];obsv = StateOutputEstimator[ssm, l];Simulate the system with input -t and from a random initial condition:
ic = RandomReal[2, 3];x = StateResponse[{ssm, ic}, E^-t, {t, 5}];y = OutputResponse[{ssm, ic}, E^-t, {t, 5}];Compare each state and its estimate:
xhat = OutputResponse[SystemsModelExtract[obsv, All, {1, 2, 3}], Join[{E^-t}, y], {t, 5}];Grid[{MapIndexed[Plot[#, {t, 0, 5}, PlotLabel -> "State " <> ToString[First[#2]], PlotRange -> All, PlotStyle -> {Automatic, Dashed}]&, Thread[{x, xhat}]]}]yhat = OutputResponse[SystemsModelExtract[obsv, All, {4, 5}], Join[{E^-t}, y], {t, 5}];MapIndexed[Plot[#, {t, 0, 5}, PlotLabel -> "Output " <> ToString[First[#2]], PlotRange -> All, PlotStyle -> {Automatic, Dashed}]&, Thread[{y, yhat}]]Properties & Relations (2)
StateOutputEstimator estimates the states and outputs of a system:
ssm = StateSpaceModel[{{{0.2, 0}, {0, 0.5}}, {{0.1, 0}, {-1, -0.5}}, {{0.001, 0.001}}, {{0, 0}}},
SamplingPeriod -> 0.1, SystemsModelLabels -> None];l = EstimatorGains[ssm, {0.1, 0.4}];est = StateOutputEstimator[ssm, l]SystemsModelExtract[est, All, {1, 2}]SystemsModelExtract[est, All, {3}]Construct a Kalman estimator for a discrete-time system:
ssm = StateSpaceModel[{{{0, 1}, {-1, 2}}, {{0, 0}, {1, 1}}, {{0.005, 0.003}}, {{0, 0}}},
SamplingPeriod -> 0.1, SystemsModelLabels -> None];l = LQEstimatorGains[{ssm, All, 1}, {(0.001), (0.1)}];kest = StateOutputEstimator[{ssm, All, 1}, l]Use KalmanEstimator directly:
KalmanEstimator[{ssm, All, 1}, {(0.001), (0.1)}]Related Guides
History
Introduced in 2010 (8.0) | Updated in 2012 (9.0) ▪ 2014 (10.0)
Text
Wolfram Research (2010), StateOutputEstimator, Wolfram Language function, https://reference.wolfram.com/language/ref/StateOutputEstimator.html (updated 2014).
CMS
Wolfram Language. 2010. "StateOutputEstimator." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/StateOutputEstimator.html.
APA
Wolfram Language. (2010). StateOutputEstimator. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/StateOutputEstimator.html
BibTeX
@misc{reference.wolfram_2026_stateoutputestimator, author="Wolfram Research", title="{StateOutputEstimator}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/StateOutputEstimator.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_stateoutputestimator, organization={Wolfram Research}, title={StateOutputEstimator}, year={2014}, url={https://reference.wolfram.com/language/ref/StateOutputEstimator.html}, note=[Accessed: 13-June-2026]}