[SWIFT] Filtrer les fluctuations des données brutes

Importance du filtrage

Le capteur est bruyant. Les données peuvent soudainement rebondir. Les humains sont également très analogiques. Même si je pense que je tiens mon doigt, les données vont fluctuer.

Si cela est utilisé numériquement tel quel, il en résultera un système très instable. Par conséquent, il est important d'avoir un filtre qui prépare les données brutes.

filtre

Utilisez le filtre de moyenne mobile exponentielle (EMA). [(Référence)](https://ja.wikipedia.org/wiki/%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87#%E6%8C%87% E6% 95% B0% E7% A7% BB% E5% 8B% 95% E5% B9% B3% E5% 9D% 87)

S_t = α \times Y_{t-1} + (1-α) \times S_{t-1}

Plus la valeur de α est élevée, plus le poids de l'ancienne valeur est petit. Et vice versa.

Filtre passe bas

Amplifie les fluctuations momentanées. Vous pouvez obtenir des données qui suppriment le bourdonnement.

var lastVal: CGFloat = 0.0
var alpha: CGFloat = 0.4

func lowpass(val: CGFloat) -> CGFloat {
  lastVal = alpha * val + lastVal * (1 - alpha)  
  return lastVal
}

Filtre passe-haut

Seule la composante de fluctuation momentanée est utilisée. Vous pouvez obtenir les données lorsqu'elles changent soudainement.

var lastVal: CGFloat = 0.0
var alpha: CGFloat = 0.4

func highpass(val: CGFloat) -> CGFloat {
  lastVal = alpha * val + lastVal * (1 - alpha)
  return val - lastVal
}

Recommended Posts

Filtrer les fluctuations des données brutes
Filtrer le résultat de BindingResult [Spring]
Quelle est la structure des données d'ActionText?
Le contenu des données enregistrées par CarrierWave.
[Order method] Définit l'ordre des données dans Rails
Le monde de Clara-Rules (2)
Le monde de Clara-Rules (4)
Le monde de Clara-Rules (1)
Jusqu'à l'utilisation de Spring Data et JPA Part 2
Rails6: saisissez les données initiales d'ActionText à l'aide de seed
Le monde de Clara-Rules (5)
Jusqu'à l'utilisation de Spring Data et JPA Part 1
L'idée du tri rapide
L'idée de jQuery
[Enum] Utilisez des rails enum pour améliorer la lisibilité des données
L'histoire du lancement de données BLOB depuis EXCEL dans DBUnit
[Java] Simplifiez la mise en œuvre de la gestion de l'historique des données avec Reladomo
Surveillance Docker-expliquant les bases des bases-
À propos de la description de Docker-compose.yml
Le jeu d'instancier java.lang.Void
Valeur médiane de trois valeurs
L'illusion de l'orientation objet
Voir le comportement des mises à jour d'entités avec Spring Boot + Spring Data JPA