У меня есть одна проблема с фильтрацией моего набора данных (массив np) с scipy.signal.butter
(или эллипсом).Мои данные имеют только положительные значения, но после фильтрации в выходном массиве есть отрицательные значения.Код и графика показаны ниже.Вопрос: почему появляются отрицательные значения и как я могу это исправить? Заранее спасибо!
Загрузить данные:
data_s = pd.read_csv('C:/Users/HP/Desktop/Python and programming/Jupyter/Filter/320_Hz.dat', header=None, squeeze=True)
data = data_s.values
#"turn over" the negative parts
for i in range(len(data)):
if data[i] < 0:
data[i] = abs(data[i]) * 2
Filt:
F_rate = 320.0
sample_time = 1 / F_rate
low = 79.9
high = 80.1
low_d = low / (0.5 * F_rate)
high_d = high / (0.5 * F_rate)
Wn = [low_d,high_d]
#b, a = signal.ellip(4, 3, 40, Wn, 'bandpass', analog=False)
b,a = signal.butter(6, Wn, 'bandpass', analog=False)
output = signal.filtfilt(b, a, data)
print(output)
plt.magnitude_spectrum(output, Fs=F_rate)
Out:
[ 7.93572645e-12 1.82355646e-12 -8.99759647e-11 ..., -5.01622276e+03
1.18142432e+04 4.98038137e+03]
Спектр выходных данных:
Входные данные:
Выходные данные (отрицательные значения):