Как рассчитать скорость изменения (производную) потоковых данных? - PullRequest
3 голосов
/ 27 января 2011

У меня есть поток данных, который меняется со временем. Как определить скорость изменения с помощью C #?

Прошло много времени с класса исчисления, но сейчас я впервые нуждаюсь в этом (за 15 лет). Теперь, когда я ищу термин «деривативы», я получаю финансовые и другие математические вещи, которые мне не нужны.

Разум указывает мне правильное направление?

Ответы [ 4 ]

4 голосов
/ 30 июля 2016

Если вы хотите что-то более сложное, сглаживающее данные, вы должны изучить алгоритм цифрового фильтра. Это не сложно реализовать, если вы можете пробиться через инженерный жаргон. Классический метод Савицкий-Голей

Если у вас есть последние 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

3 голосов
/ 27 января 2011

Вам нужно как значение данных V, так и соответствующее время T, по крайней мере, для самой последней точки данных и той, которая была до этого.Скорость изменения может быть затем аппроксимирована с помощью обратной формулы Эйлера , что переводится как

dvdt = (V_now - V_a_moment_ago) / (T_now - T_a_moment_ago);

в C #.

3 голосов
/ 10 ноября 2012

Скорость изменения рассчитывается следующим образом

  1. Рассчитать дельту, например "цена минус - цена 20 дней назад"
  2. Рассчитать скорость изменения, например "дельта / цена 99дней назад "
0 голосов
/ 27 января 2011

Общая скорость изменения, т. Е. (Новое_значение - исходное_значение) / время?

...