# dfilt.statespace

Discrete-time, state-space filter

## Syntax

`Hd = dfilt.statespace(A,B,C,D)Hd = dfilt.statespace`

## Description

`Hd = dfilt.statespace(A,B,C,D)` returns a discrete-time state-space filter, `Hd`, with rectangular arrays `A`, `B`, `C`, and `D`.

`A`, `B`, `C`, and `D` are from the matrix or state-space form of a filter's difference equations

$\begin{array}{c}x\left(n+1\right)=Ax\left(n\right)+Bu\left(n\right)\\ y\left(n\right)=Cx\left(n\right)+Du\left(n\right)\end{array}$

where x(n) is the vector states at time n, u(n) is the input at time n, `y` is the output at time n, `A` is the state-transition matrix, `B` is the input-to-state transmission matrix, `C` is the state-to-output transmission matrix, and `D` is the input-to-output transmission matrix. For single-channel systems, `A` is an `m`-by-`m` matrix where `m` is the order of the filter, `B` is a column vector, `C` is a row vector, and `D` is a scalar.

`Hd = dfilt.statespace` returns a default, discrete-time state-space filter, `Hd`, with `A`=[ ], `B`=[ ], `C`=[ ], and `D`=1. This filter passes the input through to the output unchanged.

The resulting filter states column vector has the same number of rows as the number of rows of `A` or `B`.

## Examples

Create a second-order, state-space filter structure from a second-order, lowpass Butterworth design.

```[A,B,C,D] = butter(2,0.5); Hd = dfilt.statespace(A,B,C,D) ```