# covar

Output and state covariance of system driven by white noise

## Syntax

```P = covar(sys,W) [P,Q] = covar(sys,W) ```

## Description

`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

`$P=E\left(y{y}^{T}\right)$`

given the noise intensity

`[P,Q] = covar(sys,W)` also returns the steady-state state covariance

`$Q=E\left(x{x}^{T}\right)$`

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)`.

## Examples

Compute the output response covariance of the discrete SISO system

`$\begin{array}{cc}H\left(z\right)=\frac{2z+1}{{z}^{2}+0.2z+0.5},& {T}_{s}\end{array}=0.1$`

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.

## Algorithms

Transfer functions and zero-pole-gain models are first converted to state space with `ss`.

For continuous-time state-space models

`$\begin{array}{l}\stackrel{˙}{x}=Ax+Bw\\ y=Cx+Dw,\end{array}$`

the steady-state state covariance Q is obtained by solving the Lyapunov equation

`$AQ+Q{A}^{T}+BW{B}^{T}=0.$`

In discrete time, the state covariance Q solves the discrete Lyapunov equation

`$AQ{A}^{T}-Q+BW{B}^{T}=0.$`

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.

## References

 Bryson, A.E. and Y.C. Ho, Applied Optimal Control, Hemisphere Publishing, 1975, pp. 458-459.

## Version History

Introduced before R2006a