带阻Butterworth过滤器

时间:2020-05-09 08:26:48

标签: python filtering signal-processing butterworth

我正在尝试使用python中的scipy库创建一个带阻Butterworth滤波器,您能告诉我我做错了什么吗? fc11750fc24100fs30000ft150。我已经定义了它们(fc是截止频率间隔之外的所有事物的并集,fc1fc2ft是时间频率,rp和{ {1}}是通带和阻带纹波,rs是幅度,awp(passband)ws(stopband)是归一化频率)。

我的错误:

wn

这是我到目前为止所拥有的代码: fs = 33000 r = 55 英尺= 150 rp = 0.3 rs = 55 顺序= 3 a = 1 fc1 = 1750 fc2 = 4100 fc = np.union1d(np.array([1,1750]),([4100,10000])) wp =(fc1-ft / 2)* 2 / fs

ValueError: Wn must specify start and stop frequencies for bandpass or bandstop filter.

1 个答案:

答案 0 :(得分:0)

请考虑改善您的问题,因为fc及其朋友可以是任何人,因此尚不清楚您要实现什么目标。
从语法和信号处理的角度来看,您需要定义一个带通/带阻滤波器,您应该指定4个点,因为该滤波器具有类似钟形的形状。请参考buttord parameters

wpws:浮点数
带阻:wp = [0.1, 0.6]ws = [0.2, 0.5]

因此wpws的形状应为(2,)。
为了使示例中的语法正确,请更改

wp = (fc1-ft/2) *2/fs
ws = (fc2 + ft/2) *2/fs

wp = [(fc1-ft/2) *2/fs, (fc2 + ft) *2/fs]
ws = [(fc1+ft) *2/fs, (fc2 + ft/2) *2/fs]

当然,频率是任意选择的,但请记住,必须 wp_low < ws_low < ws_high < wp_high,因此通过范围完全包括停止范围。