Main Content

stepz

Step response of digital filter

Description

[h,t] = stepz(b,a) returns the step response of the specified digital filter. Specify a digital filter with numerator coefficients b and denominator coefficients a. The function returns the step response vector in h and the sample times in t.

example

[h,t] = stepz(B,A,"ctf") returns the step response of the digital filter represented as Cascaded Transfer Functions (CTF) with numerator coefficients B and denominator coefficients A. (since R2024b)

example

[h,t] = stepz({B,A,g},"ctf") returns the step response of the digital filter in CTF format. Specify the filter with numerator coefficients B, denominator coefficients A, and scaling values g across filter sections. (since R2024b)

example

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

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

[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.

stepz(___) with no output arguments plots the step response of the filter.

example

Examples

collapse all

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

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

Figure contains an axes object. The axes object with title Step Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

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

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

Figure contains an axes object. The axes object with title Step Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

Design a fourth-order lowpass elliptic filter with normalized passband frequency 0.4π 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)

Figure contains an axes object. The axes object with title Step Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

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

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

Figure contains an axes object. The axes object with title Step Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

Since R2024b

Design a 40th-order lowpass Chebyshev type II digital filter with a stopband edge frequency of 0.4 and stopband attenuation of 50 dB. Plot the first 64 samples of the filter step response using the filter coefficients in the CTF format.

[B,A] = cheby2(40,50,0.4,"ctf");

stepz(B,A,"ctf",64)

Figure contains an axes object. The axes object with title Step Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

Design a 30th-order bandpass elliptic digital filter with passband edge frequencies of 0.3 and 0.7, passband ripple of 0.1 dB, and stopband attenuation of 50 dB. Plot the first 64 samples of the filter step response using the filter coefficients and gain in the CTF format.

[B,A,g] = ellip(30,0.1,50,[0.3 0.7],"ctf");
stepz({B,A,g},"ctf",64)

Figure contains an axes object. The axes object with title Step Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

Input Arguments

collapse all

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

H(z)=B(z)A(z)=b1+b2z1+bnz(n1)+bn+1zna1+a2z1+amz(m1)+am+1zm

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

Since R2024b

Cascaded transfer function (CTF) coefficients, specified as scalars, vectors, or matrices. B and A list the numerator and denominator coefficients of the cascaded transfer function, respectively.

B must be of size L-by-(m + 1) and A must be of size L-by-(n + 1), where:

  • L represents the number of filter sections.

  • m represents the order of the filter numerators.

  • n represents the order of the filter denominators.

For more information about the cascaded transfer function format and coefficient matrices, see Specify Digital Filters in CTF Format.

Note

If any element of A(:,1) is not equal to 1, then stepz normalizes the filter coefficients by A(:,1). In this case, A(:,1) must be nonzero.

Data Types: double | single
Complex Number Support: Yes

Since R2024b

Scale values, specified as a real-valued scalar or as a real-valued vector with L + 1 elements, where L is the number of CTF sections. The scale values represent the distribution of the filter gain across sections of the cascaded filter representation.

The stepz function applies a gain to the filter sections using the scaleFilterSections function depending on how you specify g:

  • Scalar — The function distributes the gain uniformly across all filter sections.

  • Vector — The function applies the first L gain values to the corresponding filter sections and distributes the last gain value uniformly across all filter sections.

Data Types: double | single

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.

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

Number of points over which to evaluate response, 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

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.

More About

collapse all

Tips

  • You can obtain filters in CTF format, including the scaling gain. Use the outputs of digital IIR filter design functions, such as butter, cheby1, cheby2, and ellip. Specify the "ctf" filter-type argument in these functions and specify to return B, A, and g to get the scale values. (since R2024b)

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.

References

[1] Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.

Extended Capabilities

expand all

Version History

Introduced before R2006a

expand all