[SWIFT] Filtern Sie die Schwankungen der Rohdaten

Bedeutung der Filterung

Der Sensor ist verrauscht. Die Daten können plötzlich abprallen. Menschen sind auch sehr analog. Selbst wenn ich denke, ich halte meinen Finger, schwanken die Daten.

Wenn dies so wie es ist digital verwendet wird, führt dies zu einem sehr instabilen System. Daher ist es wichtig, einen Filter zu haben, der die Rohdaten aufbereitet.

Filter

Verwenden Sie den EMA-Filter (Exponential Moving Average). [(Referenz)](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}

Je größer der Wert von α ist, desto kleiner ist das Gewicht des alten Wertes. Und umgekehrt.

Tiefpassfilter

Verstärkt kurzzeitige Schwankungen. Sie können Daten erhalten, die das Summen unterdrücken.

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

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

Hochpassfilter

Es wird nur die momentane Schwankungskomponente verwendet. Sie können die Daten abrufen, wenn sie sich plötzlich ändern.

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

Filtern Sie die Schwankungen der Rohdaten
Filtern Sie das Ergebnis von BindingResult [Spring]
Wie ist die Datenstruktur von ActionText?
Der Inhalt der von CarrierWave gespeicherten Daten.
[Bestellmethode] Legen Sie die Reihenfolge der Daten in Rails fest
Die Welt der Clara-Regeln (2)
Die Welt der Clara-Regeln (4)
Die Welt der Clara-Regeln (1)
Bis zur Verwendung von Spring Data und JPA Part 2
Rails6: Geben Sie die Anfangsdaten von ActionText mit seed ein
Die Welt der Clara-Regeln (5)
Bis zur Verwendung von Spring Data und JPA Part 1
Die Idee der schnellen Sortierung
Die Idee von jQuery
[Enum] Verwenden Sie Rails Enum, um die Lesbarkeit von Daten zu verbessern
Die Geschichte des Werfens von BLOB-Daten von EXCEL in DBUnit
[Java] Vereinfachen Sie die Implementierung der Datenverlaufsverwaltung mit Reladomo
Docker-Überwachung - Erläuterung der Grundlagen der Grundlagen
Informationen zur Beschreibung von Docker-compose.yml
Das Spiel der Instanziierung von java.lang.Void
Medianwert von drei Werten
Die Illusion der Objektorientierung
Sehen Sie sich das Verhalten von Entitätsaktualisierungen mit Spring Boot + Spring Data JPA an