Discrete-time, state-space filter

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

Hd = dfilt.statespace

`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(n+1)=Ax(n)+Bu(n)\\ y(n)=Cx(n)+Du(n)\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`

.

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)

Was this topic helpful?