Output and state covariance of system driven by white noise
P = covar(sys,W)
[P,Q] = covar(sys,W)
covar
calculates the stationary covariance
of the output y of an LTI model sys
driven
by Gaussian white noise inputs w. This function
handles both continuous- and discrete-time cases.
P = covar(sys,W)
returns the steady-state
output response covariance
given the noise intensity
[P,Q] = covar(sys,W)
also returns the steady-state
state covariance
when sys
is a state-space model (otherwise Q
is
set to []
).
When applied to an N
-dimensional LTI array sys
, covar
returns
multidimensional arrays P, Q such
that
P(:,:,i1,...iN)
and Q(:,:,i1,...iN)
are
the covariance matrices for the model sys(:,:,i1,...iN)
.
Compute the output response covariance of the discrete SISO system
due to Gaussian white noise of intensity W = 5
.
Type
sys = tf([2 1],[1 0.2 0.5],0.1); p = covar(sys,5)
These commands produce the following result.
p = 30.3167
You can compare this output of covar
to simulation
results.
randn('seed',0) w = sqrt(5)*randn(1,1000); % 1000 samples % Simulate response to w with LSIM: y = lsim(sys,w); % Compute covariance of y values psim = sum(y .* y)/length(w);
This yields
psim = 32.6269
The two covariance values p
and psim
do
not agree perfectly due to the finite simulation horizon.
Transfer functions and zero-pole-gain models are first converted
to state space with ss
.
For continuous-time state-space models
the steady-state state covariance Q is obtained by solving the Lyapunov equation
In discrete time, the state covariance Q solves the discrete Lyapunov equation
In both continuous and discrete time, the output response covariance
is given by P = CQCT + DWDT.
For unstable systems, P and Q are
infinite. For continuous-time systems with nonzero feedthrough, covar
returns Inf
for
the output covariance P.
[1] Bryson, A.E. and Y.C. Ho, Applied Optimal Control, Hemisphere Publishing, 1975, pp. 458-459.