# obsv

Observability matrix

## Syntax

```obsv(A,C) Ob = obsv(sys) ```

## Description

`obsv` computes the observability matrix for state-space systems. For an n-by-n matrix `A` and a p-by-n matrix `C`, `obsv(A,C)` returns the observability matrix

with n columns and np rows.

`Ob = obsv(sys)` calculates the observability matrix of the state-space model `sys`. This syntax is equivalent to executing

```Ob = obsv(sys.A,sys.C) ```

The model is observable if `Ob` has full rank n.

## Examples

Determine if the pair

```A = 1 1 4 -2 C = 1 0 0 1 ```

is observable. Type

```Ob = obsv(A,C); % Number of unobservable states unob = length(A)-rank(Ob) ```

These commands produce the following result.

```unob = 0 ```

## Tips

`obsv` is here for educational purposes and is not recommended for serious control design. Computing the rank of the observability matrix is not recommended for observability testing. `Ob` will be numerically singular for most systems with more than a handful of states. This fact is well-documented in the control literature. For example, see Section III in [1].

## References

[1] Paige, C. C. "Properties of Numerical Algorithms Related to Computing Controllability." IEEE Transactions on Automatic Control. Vol. 26, Number 1, 1981, pp. 130-138.