Documentation

# filtic

Initial conditions for transposed direct-form II filter implementation

## Syntax

```z = filtic(b,a,y,x) z = filtic(b,a,y) ```

## Description

`z = filtic(b,a,y,x)` finds the initial conditions, `z`, for the delays in the transposed direct-form II filter implementation given past outputs `y` and inputs `x`. The vectors `b` and `a` represent the numerator and denominator coefficients, respectively, of the filter's transfer function.

The vectors `x` and `y` contain the most recent input or output first, and oldest input or output last.

`$\begin{array}{l}x=\left[x\left(-1\right),x\left(-2\right),x\left(-3\right),\dots ,x\left(-n\right)\right]\\ y=\left[y\left(-1\right),y\left(-2\right),y\left(-3\right),\dots ,y\left(-m\right)\right]\end{array}$`

where `n` is `length(b)-1` (the numerator order) and `m` is `length(a)-1` (the denominator order). If` length(x)` is less than `n`, `filtic` pads it with zeros to length `n`; if `length(y)` is less than `m`, `filtic` pads it with zeros to length `m`. Elements of `x` beyond `x(n-1)` and elements of `y` beyond `y(m-1)` are unnecessary so `filtic` ignores them.

Output `z` is a column vector of length equal to the larger of n and m. `z` describes the state of the delays given past inputs `x` and past outputs `y`.

`z = filtic(b,a,y)` assumes that the input `x` is 0 in the past.

The transposed direct-form II structure is shown in the following illustration. n – 1 is the filter order.

`filtic` works for both real and complex inputs.

## Diagnostics

If any of the input arguments `y`, `x`, `b`, or `a` is not a vector (that is, if any argument is a scalar or array), `filtic` gives the following error message:

```Requires vector inputs. ```

## Algorithms

`filtic` performs a reverse difference equation to obtain the delay states `z`.

## References

 Oppenheim, A.V., and R.W. Schafer, Discrete-Time Signal Processing, Prentice-Hall, 1989, pp. 296, 301-302.