scipy Matlab-style IIR 滤波器设计下(Elliptic \Bessel \IIR-notch\IIR-peak\IIR-comb)

本文介绍了多种数字滤波器的设计方法,包括椭圆滤波器、贝塞尔滤波器、陷波滤波器、峰值滤波器及梳状滤波器。每种滤波器的特点及其应用场景均有详细说明。

1、Elliptic

椭圆滤波器也被称为Cauer或Zo lotta rev滤波器,它最大限度地提高了频率响应的通带和阻带之间的过渡速率,但却牺牲了两者的纹波,并增加了阶跃响应中的振铃。
当rp接近0时,椭圆滤波器变成切比雪夫II型滤波器(切比2)。当rs接近0时,它变成切比雪夫I型滤波器(切比1)。当两个都接近0时,它变成巴特沃思滤波器(butter)。
等波纹通带具有N个最大值或最小值(例如,一个5阶滤波器有3个最大值和2个最小值)。因此,对于奇数阶滤波器,DC增益是单位,或者-rp dB 为偶数阶滤波器。

接口:

scipy.signal.ellip(N, rp, rs, Wn, btype='low', analog=False, output='ba', fs=None)
"""
rp:float
在通带的单位增益下最大允许纹波(dB)

rsfloat
在阻带的最小衰减(dB)
"""

示例:

"""
Design a digital high-pass filter at 17 Hz to remove the 10 Hz tone, and apply it to the signal. (It’s recommended to use second-order sections format when filtering, to avoid numerical error with transfer function (ba) format):
"""
sos = signal.ellip(8, 1, 100, 17, 'hp', fs=1000, output='sos')
filtered = signal.sosfilt(sos, sig)
ax2.plot(t, filtered)
ax2.set_title('After 17 Hz high-pass filter')
ax2.axis([0, 1, -2, 2])
ax2.set_xlabel('Time [seconds]')
plt.tight_layout()
plt.show()

使用ellipord

"""
Design an analog highpass filter such that the passband is within 3 dB above 30 rad/s, while rejecting -60 dB at 10 rad/s. Plot its frequency response, showing the passband and stopband constraints in gray.
"""
N, Wn = signal.ellipord(30, 10, 3, 60, True)
b, a = signal.ellip(N, 3, 60, Wn, 'high', True)

2、Bessel/Thomson

也被称为汤姆逊滤波器,模拟贝塞尔滤波器具有最大平坦群延迟和最大线性相位响应,在阶跃响应中只有很少的振铃。1
贝塞尔本质上是一个模拟滤波器。该函数使用双线性变换生成数字贝塞尔滤波器,该变换不保留模拟滤波器的相位响应。因此,它仅在低于大约fs/4频率下近似正确。为了在较高频率下获得最大平坦群延迟,必须使用保相技术对模拟贝塞尔滤波器进行变换。

查看群延迟:

b, a = signal.bessel(5, 1/0.1, 'low', analog=True, norm='delay')
w, h = signal.freqs(b, a)
plt.figure()
plt.semilogx(w[1:], -np.diff(np.unwrap(np.angle(h)))/np.diff(w))
plt.axhline(0.1, color='red')  # 0.1 seconds group delay
plt.title('Bessel filter group delay')
plt.xlabel(
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KPer_Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值