# impz

Filter impulse response

## Syntax

```[h,t] = impz(hfilt)[h,t] = impz(hfilt,n)[h,t] = impz(hfilt,n,fs)[h,t] = impz(hfilt,[],fs)impz(hfilt)[h,t] = impz(hs)[h,t] = impz(hs,Name,Value)impz(hs)```

## Description

`impz` returns the impulse response based on the current filter coefficients. This section describes common `impz` operation with discrete-time filters, multirate filters, and filter System objects. For more input options, refer to `impz` in Signal Processing Toolbox™ documentation.

```[h,t] = impz(hfilt)``` returns the impulse response `h` and the corresponding time points `w` at which the impulse response of `hfilt` is computed. The impulse response is evaluated at 10 1-second intervals—`(0:9)'`.

```[h,t] = impz(hfilt,n)``` returns the impulse response evaluated at `floor(n)` 1-second intervals—`(0:floor(n)-1)'`.

```[h,t] = impz(hfilt,n,fs)``` returns the impulse response evaluated at `floor(n)` `1/``fs`-second intervals—`(0:floor(n)-1)'/fs`.

```[h,t] = impz(hfilt,[],fs)``` returns the impulse response evaluated at 10 `1/``fs`-second intervals—`(0:9)'/fs`.

`impz(hfilt)` uses FVTool to plot the impulse response of the filter. You can also provide the optional input arguments `n` and `fs` with this syntax.

```[h,t] = impz(hs)``` returns the impulse response for the filter System object™ `hs`. The impulse response is evaluated at 10 1-second intervals—`(0:9)'`. You can also provide the optional input arguments `n` and `fs` with this syntax.

```[h,t] = impz(hs,Name,Value)``` returns an impulse response with additional options specified by one or more `Name,Value` pair arguments.

`impz(hs)` uses FVTool to plot the impulse response of the filter System object `hs`.

 Note   You can use `impz` for both real and complex filters. When you omit the output arguments, `impz` plots only the real part of the impulse response.

## Input Arguments

collapse all

 `hfilt` `hfilt` is either: A discrete-time `dfilt` or multirate filter System objectA vector of discrete-time or multirate filter objects The multirate filter impulse response is computed relative to the rate at which the filter is running. When you specify `fs` (the sampling rate) as an input argument, `impz` assumes the filter is running at that rate. For multistage cascades, `impz` forms a single-stage multirate filter that is equivalent to the cascade. It then computes the response relative to the rate at which the equivalent filter is running. `impz` does not support all multistage cascades. The function analyzes only those cascades for which there exists an equivalent single-stage filter. As an example, consider a 2-stage interpolator where the first stage has an interpolation factor of 2 and the second stage has an interpolation factor of 4. In this case, an equivalent single-stage filter exists with an overall interpolation factor of 8. `impz` uses this equivalent filter for the analysis. If a sampling frequency `fs` is specified as an input argument to `impz`, the function interprets `fs` as the rate at which the equivalent filter is running. `hs` Filter System object. The following Filter System objects are supported by this analysis function: `n` Number of samples. Default: 10 `fs` Sampling frequency. Default: 1

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside single quotes (`' '`). You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

### `'Arithmetic'` — Value types:`‘double'` | `'single'` | `'fixed'`

For filter System object inputs only, specify the arithmetic used during analysis. When you specify `'double'` or `'single'`, the function performs double- or single-precision analysis. When you specify `'fixed'` , the arithmetic changes depending on the setting of the `CoefficientDataType` property and whether the System object is locked or unlocked.

When you do not specify the arithmetic for non-CIC structures, the function uses double-precision arithmetic if the filter System object is in an unlocked state. If the System object is locked, the function performs analysis based on the locked input data type. CIC structures only support fixed-point arithmetic.

## Output Arguments

 `h` Complex, `n`-element impulse response vector. If `hfilt` is a vector of filters, `h` is a complex, `length(hfilt)`-by-`n` matrix of impulse response vectors corresponding to each filter in `hfilt`. If `n` is not specified, the function uses a default value of 8192. `t` Time vector of length `n`, in seconds. `t` consists of `n` points equally spaced from 0 to `floor(n)/fs`. If `n` is not specified, the function uses a default value of 10. If `fs` is not specified, the function uses a default value of 1.

## Examples

Create a discrete-time filter for a fourth-order, lowpass elliptic filter with a cutoff frequency of 0.4 times the Nyquist frequency. Use a second-order sections structure to resist quantization errors. Plot the first 50 samples of the impulse response, along with the reference impulse response.

```d = fdesign.lowpass(.4,.5,1,80); % Create a design object for the prototype filter. ```

Use `ellip` to design a minimum order discrete-time filter in second-order section form.

```hd=design(d,'ellip'); ```

Convert hd to fixed-point, and plot the impulse response:

```impz(hd); axis([1 75 -0.2 0.35])```