# scipy.signal.freqz¶

scipy.signal.freqz(b, a=1, worN=None, whole=0, plot=None)

Compute the frequency response of a digital filter.

Given the numerator b and denominator a of a digital filter compute its frequency response:

jw               -jw            -jmw
jw  B(e)    b[0] + b[1]e + .... + b[m]e
H(e) = ---- = ------------------------------------
jw               -jw            -jnw
A(e)    a[0] + a[1]e + .... + a[n]e
Parameters : b : ndarray numerator of a linear filter a : ndarray numerator of a linear filter worN : {None, int}, optional If None, then compute at 512 frequencies around the unit circle. If a single integer, the compute at that many frequencies. Otherwise, compute the response at frequencies given in worN whole : {0,1}, optional Normally, frequencies are computed from 0 to pi (upper-half of unit-circle. If whole is non-zero compute frequencies from 0 to 2*pi. w : ndarray The frequencies at which h was computed. h : ndarray The frequency response.

Examples

>>> b = firwin(80, 0.5, window=('kaiser', 8))
>>> h, w = freqz(b)
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> plt.title('Digital filter frequency response')
>>> plt.semilogy(h, np.abs(w), 'b')
>>> plt.ylabel('Amplitude (dB)', color='b')
>>> plt.grid()
>>> plt.legend()
>>> ax2 = ax1.twinx()
>>> angles = np.unwrap(np.angle(w))
>>> plt.plot(h, angles, 'g')