Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Impulse response of digital filter

`[h,t] = impz(b,a)`

[h,t] = impz(sos)

[h,t] = impz(d)

[h,t] = impz(...,n)

[h,t] = impz(...,n,fs)

impz(...)

`[h,t] = impz(b,a)`

returns
the impulse response of the filter with numerator coefficients, `b`

,
and denominator coefficients, `a`

. `impz`

chooses
the number of samples and returns the response in the column vector, `h`

,
and the sample times in the column vector, `t`

. `t = [0:n-1]'`

and `n`

= `length(t)`

is computed
automatically.

`[h,t] = impz(sos)`

returns the impulse response
for 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, `impz`

considers the input to be a numerator
vector. Each row of `sos`

corresponds to the coefficients
of a second order (biquad) filter. The *i*th row
of the `sos`

matrix corresponds to ```
[bi(1)
bi(2) bi(3) ai(1) ai(2) ai(3)]
```

.

`[h,t] = impz(d)`

returns the impulse response
of a digital filter, `d`

. Use `designfilt`

to generate `d`

based
on frequency-response specifications.

`[h,t] = impz(...,n)`

computes `n`

samples
of the impulse response when `n`

is an integer (`t`

= `[0:n-1]'`

). If `n`

is
a vector of integers, `impz`

computes the impulse
response at those integer locations, starting the response computation
from 0 (and `t`

= `n`

or `t`

= `[0 n]`

). If, instead
of `n`

, you include the empty vector, `[]`

,
for the second argument, the number of samples is computed automatically.

`[h,t] = impz(...,n,fs)`

computes `n`

samples
and produces a vector `t`

of length `n`

so
that the samples are spaced `1/fs`

units apart.

`impz(...)`

with no output arguments
plots the impulse response of the filter.

`impz`

works for both real and complex input
systems.

If the input to `impz`

is single precision,
the impulse response is calculated using single-precision arithmetic.
The output, `h`

, is single precision.

`impz`

filters a length `n`

impulse
sequence using

filter(b,a,[1 zeros(1,n-1)])

and plots the results using `stem`

.

To compute `n`

in the auto-length case, `impz`

either
uses` n = length(b)`

for
the FIR case or first finds the poles using `p = roots(a)`

, if `length(a)`

is
greater than 1`.`

If the filter is unstable, `n`

is chosen to
be the point at which the term from the largest pole reaches 10^{6} times
its original value.

If the filter is stable, `n`

is chosen to be
the point at which the term due to the largest amplitude pole is 5 × 10^{–5} of
its original amplitude.

If the filter is oscillatory (poles on the unit circle only), `impz`

computes
five periods of the slowest oscillation.

If the filter has both oscillatory and damped terms, `n`

is
chosen to equal five periods of the slowest oscillation or the point
at which the term due to the pole of largest nonunit amplitude is
5 × 10^{–5} of
its original amplitude, whichever is greater.

`impz`

also allows for delays in the numerator
polynomial. The number of delays is incorporated into the computation
for the number of samples.

`designfilt`

| `digitalFilter`

| `impulse`

| `stem`

Was this topic helpful?