Comment peut-on calculer le taux de variation (dérivée) de données en continu?
-
26-10-2019 - |
Question
J'ai un flux de données que les tendances au fil du temps. Comment puis-je déterminer le taux de changement en utilisant C #?
Il a été longtemps que la classe de calcul, mais est maintenant la première fois que je réellement besoin (en 15 ans). Maintenant, quand je recherche sur le terme « dérivés » Je reçois des choses financières, et d'autres choses de mathématiques, je ne pense pas que j'ai vraiment besoin.
Esprit me pointant dans la bonne direction?
La solution
Si vous voulez quelque chose de plus sophistiqué qui Fluidifie les données, vous devriez regarder dans un algorithme de filtrage numérique. Il n'est pas difficile à mettre en œuvre si vous pouvez couper à travers le jargon de l'ingénierie. La méthode classique est Savitzky-Golay
Si vous avez les derniers échantillons de n
stockés dans un y
de tableau et chaque échantillon est également espacées dans le temps, alors vous pouvez calculer la dérivée en utilisant quelque chose comme ceci:
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)
Cet exemple se trouve être un N = 5 filtre de « 3/4 (cubique / quartique) » filtre. Le plus grand N
, le plus de points, il est moyenne et le plus lisse, il sera, mais aussi le temps d'attente sera plus élevé. Vous devrez attendre N / 2 points pour obtenir le dérivé au moment « maintenant ».
Pour plus de coefficients, regardez ici à l'Annexe
https://en.wikipedia.org/wiki/Savitzky%E2% 80% 93Golay_filter
Autres conseils
Vous avez besoin à la fois la valeur des données V
et la T
de temps correspondant, au moins pour le dernier point de données et celle d'avant. Le taux de changement peut alors être approchée par Eulers formule arrière , ce qui se traduit
dvdt = (V_now - V_a_moment_ago) / (T_now - T_a_moment_ago);
en C #.
Taux de variation est calculé comme suit
- Calculer un delta comme "prix moins - il y a 20 jours Prix"
- Taux Calculer des changements tels que "delta / prix il y a 99 jours"
Taux total de changement, à savoir? (New_value - original_value) / heure