Фильтрация сигнала происходит неправильно, поскольку график дает неверные данные по оси времени при построении графика выхода фильтра, а спектр вывода смещается или вообще не дается в некоторых случаях.
Я думаю, что импорт и так работает, я взял их из нескольких источников.
основной источник: https://azitech.wordpress.com/2011/03/15/designing-a-butterworth-low-pass-filter-with-scipy/
#designing filter.
order = 10
lowcut = 950
highcut = 1050
fs = 44100
#^^^(fs) is this same sampling frequency of the import?
#find filter coefficients
def butter_bandpass(lowcut, highcut, fs, order):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = signal.butter(order, [low, high], btype='band')
return b,a
# Call filter to get coefficients
b, a = butter_bandpass(lowcut,highcut,fs,order)
print(b,a)
# filter frequency response
(w, h) = signal.freqz(b, a)
fig.add_subplot(131)
pyplot.plot((fs*0.5/numpy.pi)*w, numpy.abs(h)) #*w > fs*0.5/numpy.pi*
pyplot.title('Filter Respons Freq Domain')
print('Order filter','=',order)
pyplot.grid(True)
# Also not sure why source plots it as fs*0.5/numpy.pi < although this gives the right x-axis (frequency) as the input (highcut and lowcut).
# filtered output
#zi = signal.lfiltic(b, a, x[0:5], x[0:5])
#(y, zi) = signal.lfilter(b, a, x, zi=zi)
# ^^ not used.
y = signal.lfilter(b, a, data[:,0])
pyplot.plot(t, y)
pyplot.title('Filter Output Time Domain')
pyplot.grid(True)