# obsvf

Compute observability staircase form

## Syntax

```[Abar,Bbar,Cbar,T,k] = obsvf(A,B,C) obsvf(A,B,C,tol) ```

## Description

If the observability matrix of `(A,C)` has rank rn, where n is the size of `A`, then there exists a similarity transformation such that

where T is unitary and the transformed system has a staircase form with the unobservable modes, if any, in the upper left corner.

where (Co, Ao) is observable, and the eigenvalues of Ano are the unobservable modes.

`[Abar,Bbar,Cbar,T,k] = obsvf(A,B,C) ` decomposes the state-space system with matrices `A`, `B`, and `C` into the observability staircase form `Abar`, `Bbar`, and `Cbar`, as described above. `T` is the similarity transformation matrix and `k` is a vector of length n, where n is the number of states in `A`. Each entry of `k` represents the number of observable states factored out during each step of the transformation matrix calculation [1]. The number of nonzero elements in `k` indicates how many iterations were necessary to calculate `T`, and `sum(k)` is the number of states in Ao, the observable portion of `Abar`.

`obsvf(A,B,C,tol) ` uses the tolerance `tol` when calculating the observable/unobservable subspaces. When the tolerance is not specified, it defaults to `10*n*norm(a,1)*eps`.

## Examples

Form the observability staircase form of

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

by typing

```[Abar,Bbar,Cbar,T,k] = obsvf(A,B,C) Abar = 1 1 4 -2 Bbar = 1 1 1 -1 Cbar = 1 0 0 1 T = 1 0 0 1 k = 2 0 ```

## Algorithms

`obsvf` implements the Staircase Algorithm of [1] by calling `ctrbf` and using duality.

## References

[1] Rosenbrock, M.M., State-Space and Multivariable Theory, John Wiley, 1970.