1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

生データの揺らぎをフィルタで整える

1
Last updated at Posted at 2020-10-26

フィルタリングの意義

センサにはノイズがつきものです。突然データがピンッと跳ねることがあります。
また人間は非常にアナログです。指を止めているつもりでもデータがブルブルと揺らいだりします。

これをそのままデジタルに用いると非常に不安定なシステムになってしまいます。
そこで生のデータを整えるフィルターが重要となります。

フィルター

指数移動平均(EMA)フィルターを用います。(参照)

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

αの値が大きいほど古い値の重みが小さくなります。逆も然り。

ローパスフィルター

瞬間的な変動値を減衰します。ブルブルを抑えたデータが得られます。

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

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

ハイパスフィルター

瞬間的な変動成分のみにします。グイッと変化した際のデータが得られます。

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?