# stepz

Step response of digital filter

## Description

example

[h,t] = stepz(b,a) returns the step response vector h and the corresponding sample times t for the digital filter with transfer function coefficients stored in b and a.

[h,t] = stepz(sos) returns the step response corresponding to the second-order sections matrix sos.

[h,t] = stepz(d) returns the step response for the digital filter d.

[h,t] = stepz(___,n) computes the first n samples of the step response. This syntax can include any combination of input arguments from the previous syntaxes.

[h,t] = stepz(___,n,fs) computes n samples and produces a vector t so that the samples are spaced 1/fs units apart.

example

stepz(___) with no output arguments plots the step response of the filter. If you input a digitalFilter, the step response is displayed in FVTool.

## Examples

collapse all

Create a third-order Butterworth filter with normalized half-power frequency $0.4\pi$ rad/sample. Display its step response.

[b,a] = butter(3,0.4);
stepz(b,a)
grid

Create an identical filter using designfilt and display its step response using fvtool.

d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.4);
stepz(d)

Design a fourth-order lowpass elliptic filter with normalized passband frequency $0.4\pi$ rad/sample. Specify a passband ripple of 0.5 dB and a stopband attenuation of 20 dB. Plot the first 50 samples of the filter's step response.

[b,a] = ellip(4,0.5,20,0.4);
stepz(b,a,50)
grid

Create the same filter using designfilt and display its step response using fvtool.

d = designfilt('lowpassiir','FilterOrder',4,'PassbandFrequency',0.4, ...
'PassbandRipple',0.5,'StopbandAttenuation',20, ...
'DesignMethod','ellip');
stepz(d,50)

## Input Arguments

collapse all

Transfer function coefficients, specified as vectors. Express the transfer function in terms of b and a as

$H\left({e}^{j\omega }\right)=\frac{B\left({e}^{j\omega }\right)}{A\left({e}^{j\omega }\right)}=\frac{\text{b(1)}+\text{b(2)}\text{\hspace{0.17em}}{e}^{-j\omega }+\text{b(3)}\text{\hspace{0.17em}}{e}^{-j2\omega }+\cdots +\text{b(M)}\text{\hspace{0.17em}}{e}^{-j\left(M-1\right)\omega }}{\text{a(1)}+\text{a(2)}\text{\hspace{0.17em}}{e}^{-j\omega }+\text{a(3)}\text{\hspace{0.17em}}{e}^{-j2\omega }+\cdots +\text{a(N)}\text{\hspace{0.17em}}{e}^{-j\left(N-1\right)\omega }}.$

Example: b = [1 3 3 1]/6 and a = [3 0 1 0]/3 specify a third-order Butterworth filter with normalized 3 dB frequency 0.5π rad/sample.

Data Types: double | single
Complex Number Support: Yes

Number of evaluation points, specified as a positive integer scalar or positive integer vector. If n is a positive integer scalar (t = [0:n-1]'), the function computes the first n samples of the step response. If n is a vector of integers, the step response is computed only at those integer values, with 0 denoting the time origin.

Data Types: double

Second-order section coefficients, specified as a matrix. 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, the function treats the input as a numerator vector. Each row of sos corresponds to the coefficients of a second-order (biquad) filter. The ith row of sos corresponds to [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)].

Example: s = [2 4 2 6 0 2;3 3 0 6 0 0] specifies a third-order Butterworth filter with normalized 3 dB frequency 0.5π rad/sample.

Data Types: double | single
Complex Number Support: Yes

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.

Sample rate, specified as a positive scalar. When the unit of time is seconds, fs is expressed in hertz.

Data Types: double

## Output Arguments

collapse all

Step response, returned as a column vector. If the input to stepz is single precision, the function computes the step response using single-precision arithmetic. The output h is single precision.

Sample times, returned as a vector.

## Algorithms

stepz filters a length n step sequence using

filter(b,a,ones(1,n))

and plots the results using stem.

To compute n in the auto-length case, stepz 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 106 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), stepz 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 times its original amplitude, whichever is greater.

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