Source code for vocalpy.signal.filter
"""Filters for signal processing.
Notes
-----
Adapted from SciPy cookbook:
https://scipy-cookbook.readthedocs.io/items/ButterworthBandpass.html
"""
from __future__ import annotations
import scipy.signal
__all__ = ["butter_bandpass", "butter_bandpass_filter"]
[docs]
def butter_bandpass(lowcut, highcut, fs, order=5):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = scipy.signal.butter(order, [low, high], btype="band")
return b, a
[docs]
def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):
b, a = butter_bandpass(lowcut, highcut, fs, order=order)
y = scipy.signal.lfilter(b, a, data)
return y