def _analog_filter(self,
ftype,
highpass=None,
lowpass=None,
order=3,
zerophase=True):
' Use a classic analog filter on the data, currently butter or bessel'
from scipy.signal import butter, bessel
filter_types = {'butter': butter, 'bessel': bessel}
afilter = filter_types[ftype]
if highpass is None and lowpass is not None:
b, a = afilter(order, lowpass / (self.sr / 2), btype='lowpass')
elif highpass is not None and lowpass is None:
b, a = afilter(order, highpass / (self.sr / 2), btype='highpass')
elif highpass is not None and lowpass is not None:
if highpass < lowpass:
b, a = afilter(order,
(highpass / (self.sr / 2),
lowpass / (self.sr / 2)),
btype='bandpass')
else:
b, a = afilter(order,
(lowpass / (self.sr / 2),
highpass / (self.sr / 2)),
btype='bandstop')
if zerophase:
return self.filtfilt(b, a)
else:
return self.lfilter(b, a)
评论列表
文章目录