## Documentation Center |

On this page… |
---|

Use `idfilt` to apply passband
and other custom filters to a time-domain or a frequency-domain `iddata` object.

In general, you can specify any custom filter. Use this syntax
to filter an `iddata` object `data` using
the filter called `filter`:

fdata = idfilt(data,filter)

In the simplest case, you can specify a passband filter for time-domain data using the following syntax:

fdata = idfilt(data,[wl wh])

In this case, `w1` and `wh` represent
the low and high frequencies of the passband, respectively.

You can specify several passbands, as follows:

filter=[[w1l,w1h];[ w2l,w2h]; ....;[wnl,wnh]]

The filter is an `n`-by-`2` matrix,
where each row defines a passband in radians per second.

To define a stopband between `ws1` and `ws2`,
use

filter = [0 ws1; ws2 Nyqf]

where, `Nyqf` is the Nyquist frequency.

For time-domain data, the passband filtering is cascaded Butterworth
filters of specified order. The default filter order is 5. The Butterworth
filter is the same as `butter` in the Signal Processing Toolbox™ product.
For frequency-domain data, select the indicated portions of the data
to perform passband filtering.

Use `idfilt` to apply passband
and other custom filters to a time-domain or a frequency-domain `iddata` object.

In general, you can specify any custom filter. Use this syntax
to filter an `iddata` object `data` using
the filter called `filter`:

fdata = idfilt(data,filter)

You can define a general single-input/single-output (SISO) system for filtering time-domain or frequency-domain data. For frequency-domain only, you can specify the (nonparametric) frequency response of the filter.

You use this syntax to filter an `iddata` object `data` using
a custom filter specified by `filter`:

fdata = idfilt(data,filter)

`filter` can be also any of the following:

filter = idm filter = {num,den} filter = {A,B,C,D}

`idm` is a SISO identified
linear model or LTI object. For more information about LTI
objects, see the Control System Toolbox™ documentation.

`{num,den}` defines the filter as a transfer
function as a cell array of numerator and denominator filter coefficients.

`{A,B,C,D}` is a cell array of SISO state-space
matrices.

Specifically for frequency-domain data, you specify the frequency response of the filter:

filter = Wf

Here, `Wf` is a vector of real or complex values
that define the filter frequency response, where the inputs and outputs
of `data` at frequency `data.Frequency(kf)` are
multiplied by `Wf(kf)`. `Wf` is
a column vector with the length equal to the number of frequencies
in `data`.

When `data` contains several experiments, `Wf` is
a cell array with the length equal to the number of experiments in `data`.

For time-domain data, the filtering is causal by default. Causal
filters typically introduce a phase shift in the results. To use a
noncausal zero-phase filter (corresponding to `filtfilt` in
the Signal Processing Toolbox product), specify a third argument
in `idfilt`:

fdata = idfilt(data,filter,'noncausal')

For frequency-domain data, the signals are multiplied by the frequency response of the filter. With the filters defined as passband filters, this calculation gives ideal, zero-phase filtering ("brick wall filters"). Frequencies that have been assigned zero weight by the filter (outside the passband or via frequency response) are removed.

When you apply `idfilt` to an `idfrd` data
object, the data is first converted to a frequency-domain `iddata` object
(see Transforming Between Frequency-Domain and Frequency-Response
Data).
The result is an `iddata` object.

Was this topic helpful?