双线性变换法设计切比雪夫2型带通滤波器
时间: 2025-02-01 16:33:01 浏览: 19
使用双线性变换法设计切比雪夫II型带通滤波器
切比雪夫II型滤波器的特点
切比雪夫II型滤波器(Chebyshev Type II filter)具有单调下降的幅频特性,其特点是通带内幅度响应非常平滑,而在阻带内有一定的波动。这种类型的滤波器适用于对通带内的信号质量有严格要求的应用场景。
设计过程概述
通过双线性变换将模拟原型滤波器转换为数字滤波器的过程如下:
确定滤波器参数
- 给定采样频率 ( f_s ),以及所需的通带边缘频率 ( f_{p1} ), ( f_{p2} ) 和阻带边缘频率 ( f_{s1},f_{s2})[^1]。
预畸计算
- 对于给定的边界条件,应用预畸公式来补偿因双线性变换引起的非线性效应。对于带通滤波器来说,需要分别针对上下边带来做相应的映射处理[^2]。
构建模拟原型滤波器
- 基于上述经过预畸后的参数,利用标准表格查找或软件工具生成对应的模拟域传递函数 H(s) 。此处选用的是 Chebyshev 类型 II 的形式。
执行双线性变换
- 将得到的 s 平面表达式替换为 z=(1+wT)/(1-wT),其中 T=1/fs 是离散时间间隔;w 表示角频率ω除以π的结果。这样就可以完成从连续到离散系统的转变。
调整并验证性能指标
- 如果必要的话,可以通过修改原模拟滤波器的设计参数或者采用其他手段来进行微调直至达到预期效果。特别是要注意检查增益、相位等因素是否符合实际需求。
以下是 Python 中的一个简单例子展示如何实现这一流程:
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
def design_cheby2_bp(f_pass, f_stop, fs, gpass, gstop):
nyq = 0.5 * fs
wp = [f / nyq for f in f_pass]
ws = [f / nyq for f in f_stop]
N, wn = signal.cheb2ord(wp, ws, gpass=gpass, gstop=gstop)
b, a = signal.iirfilter(N=N,
Wn=wn,
rp=None,
rs=gstop,
btype='band',
analog=False,
ftype='cheby2')
return b, a
if __name__ == "__main__":
# 参数设置
fp_low, fp_high = 80., 120.
fs_low, fs_high = 70., 130.
sampling_rate = 500.
gain_in_band = 3 # dB
attenuation_outside = 60 # dB
# 执行设计
sos = design_cheby2_bp([fp_low, fp_high],
[fs_low, fs_high],
sampling_rate,
gain_in_band,
attenuation_outside)
w, h = signal.sosfreqz(sos=sos, worN=int(8*sampling_rate))
fig, ax = plt.subplots()
ax.plot((sampling_rate*w/(2*np.pi)), abs(h))
ax.set_title('Frequency Response')
ax.grid(True)
ax.axvline(fp_low, color='green') # Pass band start frequency
ax.axvline(fp_high, color='red') # Stop band end frequency
plt.show()
此代码片段展示了如何基于指定的技术指标创建一个切比雪夫II型带通滤波器,并绘制出它的频率响应曲线图以便直观观察。
相关推荐
















