#切比雪夫滤波器
def apply_chebyshev_filter(data, fs, ftype, freqs=[], order=5, rp=3):
nyq = 0.5 * fs
if ftype == 'low_pass':
assert len(freqs) == 1
cut = freqs[0]/nyq
b,a = signal.cheby1(order, rp, cut, btype='lowpass')
elif ftype == 'high_pass':
assert len(freqs) == 1
cut = freqs[0]/nyq
b,a = signal.cheby1(order, rp, cut, btype='highpass')
elif ftype == 'band_pass':
assert len(freqs) == 2
lowcut, highcut = freqs[0]/nyq, freqs[1]/nyq
b,a = signal.cheby1(order, rp, [lowcut,highcut], btype='bandpass')
elif ftype == 'band_stop':
assert len(freqs) == 2
lowcut, highcut = freqs[0]/nyq, freqs[1]/nyq
b,a = signal.cheby1(order, rp, [lowcut,highcut], btype='bandstop')
filtered = signal.lfilter(b, a, data)
return filtered
#形如 Green_filtered = apply_chebyshev_filter(Green_detrend,sample_rate,'band_pass',[0.8,3],8) 使用