Если вы хотите что-то более сложное, сглаживающее данные, вы должны изучить алгоритм цифрового фильтра. Это не сложно реализовать, если вы можете пробиться через инженерный жаргон. Классический метод Савицкий-Голей
Если у вас есть последние n
выборок, сохраненных в массиве y
, и каждая выборка имеет одинаковое расстояние во времени, то вы можете рассчитать производную, используя что-то вроде этого:
deriv = 0
coefficient = (1,-8,0,8,-1)
N = 5 # points
h = 1 # second
for i range(0,N):
deriv += y[i] * coefficient[i]
deriv /= (12 * h)
Этот пример является фильтром N = 5 фильтра "3/4 (кубический / квартальный)". Чем больше N
, тем больше очков он усредняет и тем плавнее оно будет, но и задержка будет выше. Вам придется подождать N / 2 балла, чтобы получить производную в момент «сейчас».
Для получения дополнительных коэффициентов, смотрите здесь в приложении
https://en.wikipedia.org/wiki/Savitzky%E2%80%93Golay_filter