Accelerating the pace of engineering and science

# impzlength

Impulse response length

## Description

example

len = impzlength(b,a) returns the impulse response length for the causal discrete-time filter with the rational system function specified by the numerator, b, and denominator, a, polynomials in z–1. For stable IIR filters, len is the effective impulse response sequence length. Terms in the IIR filter's impulse response after the len-th term are essentially zero.

example

len = impzlength(sos) returns the effective impulse response length for the IIR filter specified by the second order sections matrix, sos. sos is a K-by-6 matrix, where the number of sections, K, must be greater than or equal to 2. If the number of sections is less than 2, impzlength considers the input to be the numerator vector, b. Each row of sos corresponds to the coefficients of a second order (biquad) filter. The ith row of the sos matrix corresponds to [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)].

example

len = impzlength(d) returns the impulse response length for the digital filter, d. Use designfilt to generate d based on frequency-response specifications.

example

len = impzlength(hs) returns the impulse response length for the filter System object™, hs. You must have the DSP System Toolbox™ software to use impzlength with a filter System object.

example

len = impzlength(hd) returns the impulse response length for the dfilt or mfilt filter object, hd. You must have the DSP System Toolbox software to use impzlength with an mfilt object. You can also input an array of filter objects. If hd is an array of filter objects, each column of len is the impulse response length of the corresponding filter object.

len = impzlength(___,tol) specifies a tolerance for estimating the effective length of an IIR filter's impulse response. By default, tol is 5e-5. Increasing the value of tol estimates a shorter effective length for an IIR filter's impulse response. Decreasing the value of tol produces a longer effective length for an IIR filter's impulse response.

## Examples

expand all

### IIR Filter Effective Impulse Response Length — — Coefficients

Create a lowpass allpole IIR filter with a pole at 0.9. Calculate the effective impulse response length, obtain the impulse response, and plot the result.

b = 1;
a = [1 -0.9];
len = impzlength(b,a)
[h,t] = impz(b,a);
stem(t,h)
h(len)

The value of the impulse response at the estimate length has decayed to approximately 10–6.

### IIR Filter Effective Impulse Response Length — — Second Order Sections

Design a 4th-order lowpass elliptic filter with a cutoff frequency of 0.4π rad/sample. Specify 1 dB of passband ripple and 60 dB of stopband attenuation. Design the filter in pole-zero-gain form and obtain the second order section matrix using zp2sos. Determine the effective impulse response sequence length from the second order sections matrix.

[z,p,k] = ellip(4,1,60,.4);
[sos,g] = zp2sos(z,p,k);
len = impzlength(sos)

### IIR Filter Effective Impulse Response Length --- --- Digital Filter

Use designfilt to design a 4th-order lowpass elliptic filter with normalized passband frequency rad/sample. Specify 1 dB of passband ripple and 60 dB of stopband attenuation. Determine the effective impulse response sequence length and visualize it.

d = designfilt('lowpassiir','FilterOrder',4,'PassbandFrequency',0.4, ...
'PassbandRipple',1,'StopbandAttenuation',60, ...
'DesignMethod','ellip');
len = impzlength(d)
impz(d)

len =

80



### Impulse Response Length of Filter System object

This example requires DSP System Toolbox software.

Design a 4th-order lowpass elliptic filter with a cutoff frequency of 0.4π rad/sample. Specify 1 dB of passband ripple and 60 dB of stopband attenuation. Design the filter in pole-zero-gain form and obtain the second order section matrix using zp2sos. Create a biquad filter System object and input the System object to impzlength.

[z,p,k] = ellip(4,1,60,.4);
[sos,g] = zp2sos(z,p,k);
'SOSMatrix', sos,...
'ScaleValues',g);
len = impzlength(hBqdFilt)

### Impulse Response Length — — Filter Objects

Design IIR Butterworth and FIR equiripple filters for data sampled at 1 kHz. The passband frequency is 100 Hz and the stopband frequency is 150 Hz. The passband ripple is 0.5 dB and there is 60 dB of stopband attenuation. Obtain dfilt objects for the filters and compare the filter impulse response sequence lengths.

d = fdesign.lowpass('Fp,Fst,Ap,Ast',100,150,0.5,60,1000);
Hd1 = design(d,'butter');
Hd2 = design(d,'equiripple');
len = impzlength([Hd1 Hd2])

## Input Arguments

expand all

### b — Numerator coefficientsvector | scalar

Numerator coefficients, specified as a scalar (allpole filter) or a vector.

Example: b = fir1(20,0.25)

Data Types: single | double
Complex Number Support: Yes

### a — Denominator coefficientsvector | scalar

Denominator coefficients, specified as a scalar (FIR filter) or vector.

Data Types: single | double
Complex Number Support: Yes

### sos — Matrix of second order sectionsmatrix

Matrix of second order sections, specified as a K-by-6 matrix. The system function of the K-th biquad filter has the rational Z-transform

${H}_{k}\left(z\right)=\frac{{B}_{k}\left(1\right)+{B}_{k}\left(2\right){z}^{-1}+{B}_{k}\left(3\right){z}^{-2}}{{A}_{k}\left(1\right)+{A}_{k}\left(2\right){z}^{-1}+{A}_{k}\left(3\right){z}^{-2}}.$

The coefficients in the Kth row of the matrix, sos, are ordered as follows.

$\left[\begin{array}{cccccc}{B}_{k}\left(1\right)\text{ }& {B}_{k}\left(2\right)\text{ }& {B}_{k}\left(3\right)& {A}_{k}\left(1\right)\text{ }& {A}_{k}\left(2\right)& {A}_{k}\left(3\right)\end{array}\right]$

The frequency response of the filter is the system function evaluated on the unit circle with

$z={e}^{j2\pi f}.$

### d — Digital filterdigitalFilter object

Digital filter, specified as a digitalFilter object. Use designfilt to generate a digital filter based on frequency-response specifications.

Example: d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5) specifies a third-order Butterworth filter with normalized 3-dB frequency 0.5π rad/sample.

### hs — Filter System objectfilter System object

Filter System object, specified as one of the following:

• dsp.FIRFilter

• dsp.FIRInterpolator

• dsp.CICInterpolator

• dsp.FIRDecimator

• dsp.CICDecimator

• dsp.FIRRateConverter

Using impzlength with a filter System object requires the DSP System Toolbox software.

### hd — Filter objectdfilt object | mfilt object

Filter object, specified as a dfilt or mfilt object. You must have the DSP System Toolbox software to input an mfilt object.

### tol — Tolerance for IIR filter effective impulse response length5e-5 (default) | positive scalar

Tolerance for IIR filter effective impulse response length, specified as a positive number. The tolerance determines the term in the absolutely summable sequence after which subsequent terms are considered to be 0. The default tolerance is 5e-5. Increasing the tolerance returns a shorter effective impulse response sequence length. Decreasing the tolerance returns a longer effective impulse response sequence length.

## Output Arguments

expand all

### len — Length of impulse responsepositive integer

Length of the impulse response, specified as a positive integer. For stable IIR filters with absolutely summable impulse responses, impzlength returns an effective length for the impulse response beyond which the coefficients are essentially zero. You can control this cutoff point by specifying the optional tol input argument.