Accelerating the pace of engineering and science

buttap

Butterworth filter prototype

Syntax

[z,p,k] = buttap(n)

Description

[z,p,k] = buttap(n) returns the poles and gain of an order n Butterworth analog lowpass filter prototype. The function returns the poles in the length n column vector p and the gain in scalar k. z is an empty matrix because there are no zeros. The transfer function is

$H\left(s\right)=\frac{z\left(s\right)}{p\left(s\right)}=\frac{k}{\left(s-p\left(1\right)\right)\left(s-p\left(2\right)\right)\cdots \left(s-p\left(n\right)\right)}$

Butterworth filters are characterized by a magnitude response that is maximally flat in the passband and monotonic overall. In the lowpass case, the first 2n-1 derivatives of the squared magnitude response are zero at ω = 0. The squared magnitude response function is

${|H\left(\omega \right)|}^{2}=\frac{1}{1+{\left(\omega /{\omega }_{0}\right)}^{2n}}$

corresponding to a transfer function with poles equally spaced around a circle in the left half plane. The magnitude response at the cutoff angular frequency ω0 is always $1/\sqrt{2}$ regardless of the filter order. buttap sets ω0 to 1 for a normalized result.

Examples

expand all

Frequency Response of a Butterworth Analog Filter

Design a 9th-order Butterworth analog lowpass filter. Display its magnitude and phase responses.

```[z,p,k] = buttap(9);          % Butterworth filter prototype
[num,den] = zp2tf(z,p,k);     % Convert to transfer function form
freqs(num,den)                % Frequency response of analog filter
```

expand all

Algorithms

```z = [];
p = exp(sqrt(-1)*(pi*(1:2:2*n-1)/(2*n)+pi/2)).';
k = real(prod(-p));
```

References

[1] Parks, T. W., and C. S. Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987, chap. 7.