| Signal Processing Toolbox | Search  Help Desk |
| butter | Examples See Also |
Butterworth analog and digital filter design.
Syntax
[b,a] = butter(n,Wn) [b,a] = butter(n,Wn,'ftype') [b,a] = butter(n,Wn,'s') [b,a] = butter(n,Wn,'ftype','s') [z,p,k] = butter(...) [A,B,C,D] = butter(...)
Description
butter designs lowpass, bandpass, highpass, and bandstop digital and analog Butterworth filters. Butterworth filters are characterized by a magnitude response that is maximally flat in the passband and monotonic overall.
Butterworth filters sacrifice rolloff steepness for monotonicity in the pass- and stopbands. Unless the smoothness of the Butterworth filter is needed, an elliptic or Chebyshev filter can generally provide steeper rolloff characteristics with a lower filter order.
Digital Domain
[b,a] = butter(n,Wn)
designs an order n lowpass digital Butterworth filter with cutoff frequency Wn. It returns the filter coefficients in length n + 1 row vectors b and a, with coefficients in descending powers of z:
sqrt(1/2). For butter, the cutoff frequency Wn must be a number between 0 and 1, where 1 corresponds to half the sampling frequency (the Nyquist frequency).
If Wn is a two-element vector, Wn = [w1 w2], butter returns an order 2*n digital bandpass filter with passband w1 <
< w2.
[b,a] = butter(n,Wn,'ftype')
designs a highpass or bandstop filter, where ftype is
high for a highpass digital filter with cutoff frequency Wn
stop for an order 2*n bandstop digital filter if Wn is a two-element vector, Wn = [w1 w2]
The stopband is w1 <
< w2.
butter directly obtains other realizations of the filter. To obtain zero-pole-gain form, use three output arguments:
[z,p,k] = butter(n,Wn)
or
[z,p,k] = butter(n,Wn,'ftype')
butter returns the zeros and poles in length n column vectors z and p, and the gain in the scalar k.
To obtain state-space form, use four output arguments:
[A,B,C,D] = butter(n,Wn)
or
[A,B,C,D] = butter(n,Wn,'ftype')
where A, B, C, and D are
Analog Domain
[b,a] = butter(n,Wn,'s')
designs an order n lowpass analog Butterworth filter with cutoff frequency Wn. It returns the filter coefficients in the length n + 1 row vectors b and a, in descending powers of s:
butter's cutoff frequency Wn must be greater than 0.
If Wn is a two-element vector with w1 < w2, butter(n,Wn,'s') returns an order 2*n bandpass analog filter with passband w1 <
< w2.
[b,a] = butter(n,Wn,'ftype','s')
designs a highpass or bandstop filter, where ftype is
high for a highpass analog filter with cutoff frequency Wn
stop for an order 2*n bandstop analog filter if Wn is a two-element vector, Wn = [w1 w2]
The stopband is w1 <
< w2.
butter directly obtains other realizations of the analog filter. To obtain zero-pole-gain form, use three output arguments:
[z,p,k] = butter(n,Wn,'s')
or
[z,p,k] = butter(n,Wn,'ftype','s')
returns the zeros and poles in length n or 2*n column vectors z and p and the gain in the scalar k.
To obtain state-space form, use four output arguments:
[A,B,C,D] = butter(n,Wn,'s')
or
[A,B,C,D] = butter(n,Wn,'ftype','s')
where A, B, C, and D are
Examples
For data sampled at 1000 Hz, design a 9th-order highpass Butterworth filter with cutoff frequency of 300 Hz:[b,a] = butter(9,300/500,'high');The filter's frequency response is
freqz(b,a,128,1000)Design a 10th-order bandpass Butterworth filter with a passband from 100 to 200 Hz and plot its impulse response, or unit sample response:
![]()
n = 5; Wn = [100 200]/500; [b,a] = butter(n,Wn); [y,t] = impz(b,a,101); stem(t,y)
![]()
Limitations
For high order filters, the state-space form is the most numerically accurate, followed by the zero-pole-gain form. The transfer function coefficient form is the least accurate; numerical problems can arise for filter orders as low as 15.Algorithm
butter uses a five-step algorithm:
.buttap
function.
...butter uses bilinear to convert the analog filter
into a digital filter through a bilinear transformation with frequency
prewarping. Careful frequency adjustment guarantees that the analog
filters and the digital filters will have the same frequency response
magnitude at Wn or w1 and w2.
.See Also
besself |
Bessel analog filter design. |
buttap |
Butterworth analog lowpass filter prototype. |
buttord |
Butterworth filter order selection. |
cheby1 |
Chebyshev type I filter design (passband ripple). |
cheby2 |
Chebyshev type II filter design (stopband ripple). |
ellip |
Elliptic (Cauer) filter design. |
maxflat |
Generalized digital Butterworth filter design. |