
Они очень шумные, хотя большая часть шума — выбросы. Мне нужно сделать их сглаживающими таким образом, чтобы сохранить количество точек в каждом сигнале.
До сих пор я пробовал медианный фильтр с двойным применением и кое-что получил. близко к тому, что я хочу, но, к сожалению, не для всех из них работает хорошо и не совсем надежно выглядит в начале сигнала:
[img]https://i. sstatic.net/pBxqHYHf.png[/img]
Есть ли какой-нибудь полезный метод в этом случае? Мои знания в этой области очень ограничены, в основном, только медианной фильтрацией и фильтрацией Савицкого-Голея, которая, похоже, мало что дает.
Мне нужны очень плавные линии, сохраняющие основной тренд (не супер- точно) и никаких выбросов/колебаний, поскольку я собираюсь сравнить их друг с другом на основе сходства тенденций.
Данные (список из 10 списков)< /h3>
Ссылка: https://jpst.it/3VUqP
MWE
data = []
for filename in filenames:
for fork in json.load(open(PATH)):
# Smoothing
smooth_fork = median_filter(median_filter(fork, size=150), size=50)
# Normalization
data.append(list((np.array(smooth_fork) - np.min(smooth_fork)) / (np.max(smooth_fork) - np.min(smooth_fork))))
plt.figure()
for fork in data:
plt.plot(fork)
plt.show()
Подробнее здесь: https://stackoverflow.com/questions/790 ... ntal-trend