dfilt.df1sos

Discrete-time, second-order section, direct-form I filter

Syntax

`Hd = dfilt.df1sos(s)Hd = dfilt.df1sos(b1,a1,b2,a2,...)Hd = dfilt.df1sos(...,g)Hd = dfilt.df1sos`

Description

`Hd = dfilt.df1sos(s)` returns a discrete-time, second-order section, direct-form I filter, `Hd`, with coefficients given in the `s` matrix. The filter states for this object are stored in a `filtstates` object.

`Hd = dfilt.df1sos(b1,a1,b2,a2,...)` returns a discrete-time, second-order section, direct-form I filter, `Hd`, with coefficients for the first section given in the `b1` and `a1` vectors, for the second section given in the `b2` and `a2` vectors, etc.

`Hd = dfilt.df1sos(...,g)` includes a gain vector `g`. The elements of `g` are the gains for each section. The maximum length of `g` is the number of sections plus one. If `g` is not specified, all gains default to one.

`Hd = dfilt.df1sos` returns a default, discrete-time, second-order section, direct-form I filter, `Hd`. This filter passes the input through to the output unchanged.

 Note   The leading coefficient of the denominator `a(1)` cannot be 0.

To display the filter states, use this code to access the `filtstates` object.

```Hs = Hd.states % Where Hd is the dfilt.df1 object and double (Hs) % Hs is the filtstates object ```

The vector is

$\left(\begin{array}{cc}zb1\left(1\right)& zb2\left(1\right)\\ zb1\left(2\right)& zb2\left(2\right)\\ za1\left(1\right)& za2\left(1\right)\\ za1\left(2\right)& za2\left(2\right)\end{array}\right)$

For filters with more than one section, each section is a separate column in the matrix.

Examples

Specify a second-order sections, direct-form I discrete-time filter with coefficients from a sixth order, lowpass, elliptical filter using the following code. The resulting filter has three sections.

```[z,p,k] = ellip(6,1,60,.4); % Obtain filter coefficients [s,g] = zp2sos(z,p,k); % Convert to SOS Hd = dfilt.df1sos(s,g) ```