Skip to content

模拟 IIR 低通滤波器的比较 设计截止频率为 2 GHz 的五阶模拟 Butterworth 低通滤波器。乘以 2π 以将频率转换为弧度/秒。计算滤波器在 4096 个点上的频率响应。

python
import scipy.signal as sig
import numpy as np
from numpy import pi
import matplotlib.pyplot as plt
python
n = 5
f = 2e9
bb,ab = sig.butter(5,2*pi*f,analog=True)
wb,hb = sig.freqs(bb,ab,4096)

设计一个具有相同边缘频率和 3 dB 通带波纹的五阶 Chebyshev I 类滤波器。计算它的频率响应。

python
b1,a1 = sig.cheby1(n,3,2*pi*f,analog=True)
w1,h1 = sig.freqs(b1,a1,4096)

设计一个具有相同边缘频率和 30 dB 阻带衰减的 5 阶 Chebyshev II 类滤波器。计算它的频率响应。

python
b2,a2 = sig.cheby2(n,30,2*pi*f,analog=True)
w2,h2 = sig.freqs(b2,a2,4096)

设计一个具有相同边缘频率和 3 dB 通带波纹、30 dB 阻带衰减的五阶椭圆滤波器。计算它的频率响应。

python
be,ae = sig.ellip(n,3,30,2*pi*f,analog = True)
we,he = sig.freqs(be,ae,4096)

对衰减绘图,以分贝为单位。以千兆赫为单位表示频率。比较滤波器。

python
#plt.plot(wb/(2e9*pi),)
plt.plot(wb/(2e9*pi), 20 * np.log10(abs(hb)))
plt.plot(w1/(2e9*pi), 20 * np.log10(abs(h1)))
plt.plot(w2/(2e9*pi), 20 * np.log10(abs(h2)))
plt.plot(we/(2e9*pi), 20 * np.log10(abs(he)))
plt.axis([0,4,-40,5])
plt.xlabel('Frequency (GHz)')
plt.ylabel('Attention (dB)')
plt.legend(['butter','cheby1','cheby2','ellip'])
<matplotlib.legend.Legend at 0x1be1764d5d0>

png