2017-06-21 3 views
0

Je crée une application pour surveiller la qualité de l'eau. Les données de température sont mises à jour toutes les 2 min vers la base de données en temps réel Firebase. App a deux exigencesformule/algorithme approprié pour détecter les fluctuations de température

1) Il doit alerter l'utilisateur lorsque la température dépasse 33 degrés ou descendre en dessous de 23 degrés - Cette partie est fait

2) Il doit alerter l'utilisateur quand il a une grande fluctuation de température après l'analyse des données toutes les 30min - Cette partie je suis confus.

Je ne sais pas quel algorithme utiliser pour détecter de grandes fluctuations de température sur une période de temps et alerter l'utilisateur. Quelqu'un peut-il m'aider à ce sujet?

Répondre

1

Pour une période de 30 minutes, votre application vous donnerait 15 valeurs.

Si vous voulez comprendre un grand changement dans ces données, alors il y a un moyen de le faire. Vous pouvez utiliser implémenter la méthode suivante:

  1. Calculer la moyenne et l'écart-type des valeurs.

  2. Soustraire les données que vous avez de la moyenne puis prendre la valeur absolue du résultat.

  3. Comparez si la valeur absolue est supérieure à un écart-type, si elle est supérieure, alors vous avez un gros volume de données.

Voir cet exemple pour une meilleure compréhension:

laisse supposer que vous avez ces valeurs pendant 10 minutes:

25,27,24,35,28

Première étape:

Moyenne = 27 (appr.)

Un écart-type = 3.8

Deuxième étape: Absolute (données - moyenne)

abs (25-27) = 2

abs (27-27) = 0

abs (24-27) = 3

abs (35-27) = 8

abs (28-27) = 1

Troisième étape

Vérifiez si l'un de la soustraction est supérieure à l'écart type

abs (35-27) donne 8, qui est supérieure à 3,8

Donc, il y a une grande fluctuation . Si tous les résultats soustraits sont inférieurs à l'écart-type, il n'y a pas de fluctuation.

Vous pouvez toujours improviser le résultat en sélectionnant deux ou trois écarts-types au lieu d'un écart-type.

+0

Merci beaucoup mon pote. Je pense que c'est exactement ce que je voulais. Y a-t-il un nom de mathématique pour la méthode ci-dessus? Il serait utile d'inclure cela dans ma documentation de projet. –

+0

Une question de suivi, Si l'analyse de 30 min n'est pas une exigence n'est-il pas plus précis de mesurer une fluctuation énorme basée sur des données précédentes lorsque de nouvelles données arrivent, car l'utilisation de la méthode ci-dessus peut ne pas être exacte ?, 22,30,28, 26,29,27,25,24. Selon votre méthode, l'énorme fluctuation de 22 à 30 ne sera pas détectée. Ne pensez-vous pas que l'analyse des fluctuations de 30 minutes ne fonctionne pas? –

+0

Cette méthode est appelée méthode de détection adaptative. Je pense que l'analyse de 30 minutes devrait fonctionner aussi. La différence calculée indique à quel point la valeur s'écarte de la moyenne. Vous pouvez définir un certain seuil pour votre expérience de 30 min que si les résultats de différence dévie un écart std/deux écart type, alors cela indique une fluctuation. Vous pouvez essayer de calculer pour l'ensemble de données que vous avez fourni et voir si vos valeurs de différence sont supérieures à l'écart-type. – Darpan

0

Commencez par définir ce que vous entendez par fluctuation.

Vous ne dites pas quelle échelle de température vous utilisez. Fahrenheit, Celsius, Rankine ou Kelvin?

Votre fréquence d'échantillonnage est une nouvelle valeur toutes les deux minutes. Définissez-vous la fluctuation comme la valeur absolue de la différence entre le dernier point et la valeur actuelle? C'est défendable.

Si la valeur absolue maximale autorisée est un multiple de votre 33-23 = 10 degrés, vous êtes en affaires.

+0

Il est en degrés Celsius. Même si toutes les valeurs se situent entre 23 et 33, une grande fluctuation de 23 à 30 en données consécutives n'est pas une bonne lecture. Donc vous avez un bon point en définissant la fluctuation comme la valeur absolue de la différence entre le dernier point et la valeur actuelle parce que dans le cas suivant 22,30,28,26,29,27,25,24. La fluctuation de 22 à 30 est importante mais n'est pas détectée après une analyse de 30 minutes puisque d'autres données compenseront cette fluctuation en faisant la moyenne. –