Я пытаюсь создать полосовой фильтр Баттуорта, используя библиотеку scipy в python, вы можете сказать мне, что я делаю не так? fc1
- это 1750
, fc2
- 4100
, fs
- 30000
и ft
- 150
. Я определил их (fc
- это объединение всего, что находится за пределами интервала частот среза, fc1
и fc2
, ft
- это временная частота, rp
и rs
- это полоса пропускания и пульсации полосы задерживания, a
- амплитуда, wp(passband)
, ws(stopband)
и wn
- нормализованные частоты).
Моя ошибка:
ValueError: Wn must specify start and stop frequencies for bandpass or bandstop filter.
Это то, что у меня было до сих пор в виде кода : fs = 33000 r = 55 ft = 150 rp = 0.3 rs = 55 order = 3 a = 1 fc1 = 1750 fc2 = 4100 fc = np.union1d (np.array ([1,1750]), ([4100,10000 ])) wp = (fc1-ft / 2) * 2 / fs
ws = (fc2 + ft/2) *2/fs
N, wn = sp.buttord(wp, ws, rp, rs)
b, a = sp.butter(N, wn , btype = "bandstop")
w,h = sp.freqz(b, a, worN=512, plot=None)
f=(fs/2)*w/(np.pi)
plt.figure()
plt.plot(f,abs(h))