Main Content

digitalFilter

Digital filter

Description

Use designfilt to design and edit digitalFilter objects.

  • Use designfilt in the form d = designfilt(resp,Name,Value) to design a digital filter d with response type resp. Customize the filter further using name-value arguments.

  • Use designfilt in the form designfilt(d) to edit an existing filter, d.

    Note

    This is the only way to edit an existing digitalFilter object. Its properties are otherwise read-only.

  • Use filter in the form dataOut = filter(d,dataIn) to filter a signal with a digitalFilter d. The input can be a double- or single-precision vector. It can also be a matrix with as many columns as there are input channels. You can also use the filtfilt and fftfilt functions with digitalFilter objects.

  • Use FVTool to visualize a digitalFilter.

Object Functions

Filtering

FunctionDescription

fftfilt

Filters a signal with a digitalFilter using an FFT-based overlap-add method

filter

Filters a signal using a digitalFilter

filtfilt

Performs zero-phase filtering of a signal with a digitalFilter

bandpassBandpass-filters a signal using a digitalFilter and compensates for the delay introduced by the filter
bandstopBandstop-filters a signal using a digitalFilter and compensates for the delay introduced by the filter
highpassHighpass-filters a signal using a digitalFilter and compensates for the delay introduced by the filter
lowpassLowpass-filters a signal using a digitalFilter and compensates for the delay introduced by the filter

Filter Analysis

FunctionDescription

double

Casts the coefficients of a digitalFilter to double precision

filt2block

Generates a Simulink® filter block corresponding to a digitalFilter

filtord

Returns the filter order of a digitalFilter

firtype

Returns the type (1, 2, 3, or 4) of an FIR digitalFilter

freqz

Returns or plots the frequency response of a digitalFilter

FVTool

Opens the Filter Visualization Tool and displays the magnitude response of a digitalFilter

grpdelay

Returns or plots the group delay response of a digitalFilter

impz

Returns or plots the impulse response of a digitalFilter

impzlength

Returns the length of the impulse response of a digitalFilter, whether actual (for FIR filters) or effective (for IIR filters)

info

Returns a character array with information about a digitalFilter

isallpass

Returns true if a digitalFilter is allpass

isdouble

Returns true if the coefficients of a digitalFilter are double precision

isfir

Returns true if a digitalFilter has a finite impulse response

islinphase

Returns true if a digitalFilter has linear phase

ismaxphase

Returns true if a digitalFilter is maximum phase

isminphase

Returns true if a digitalFilter is minimum phase

issingle

Returns true if the coefficients of a digitalFilter are single precision

isstable

Returns true if a digitalFilter is stable

phasedelay

Returns or plots the phase delay response of a digitalFilter

phasez

Returns or plots the (unwrapped) phase response of a digitalFilter

single

Casts the coefficients of a digitalFilter to single precision

ss

Returns the state-space representation of a digitalFilter

stepz

Returns or plots the step response of a digitalFilter

tf

Returns the transfer function representation of a digitalFilter

zerophase

Returns or plots the zero-phase response of a digitalFilter

zpk

Returns the zero-pole-gain representation of a digitalFilter

zplane

Displays the poles and zeros of the transfer function represented by a digitalFilter

Examples

collapse all

Design a lowpass IIR filter with order 8, passband frequency 35 kHz, and passband ripple 0.2 dB. Specify a sample rate of 200 kHz. Visualize the magnitude response of the filter.

lpFilt = designfilt('lowpassiir','FilterOrder',8, ...
         'PassbandFrequency',35e3,'PassbandRipple',0.2, ...
         'SampleRate',200e3);
fvtool(lpFilt)

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Frequency (kHz), ylabel Magnitude (dB) contains 2 objects of type line.

Use the filter you designed to filter a 1000-sample random signal.

dataIn = randn(1000,1);
dataOut = filter(lpFilt,dataIn);

Output the filter coefficients, expressed as second-order sections.

sos = lpFilt.Coefficients
sos = 4×6

    0.2666    0.5333    0.2666    1.0000   -0.8346    0.9073
    0.1943    0.3886    0.1943    1.0000   -0.9586    0.7403
    0.1012    0.2023    0.1012    1.0000   -1.1912    0.5983
    0.0318    0.0636    0.0318    1.0000   -1.3810    0.5090

Version History

Introduced in R2014a