LoginSignup
0
0

More than 5 years have passed since last update.

Swiftで移動平均を求める

Last updated at Posted at 2016-10-03

センサの値なんかを平滑化するために移動平均を使おうと思って書いてみました。

extensionにしとくと便利かな?と思ってArrayのextensionにする形で書いてみました。
FloatingPointに準拠したArrayでのみ使えるように制限してあります。

extension Array where Element: FloatingPoint {
    func simpleMovingAverage(scope:Int) -> [Element]? {
        guard self.count >= scope else { return nil }
        var result = [Element]()
        for endIndex in scope...self.count {
            let lower = endIndex-scope
            let upper = endIndex
            let range = Range(uncheckedBounds: (lower: lower, upper: upper))
            let sum = self[range].reduce(0) { (v1, v2) -> Element in return v1+v2 }
            let avg = sum/Element(scope)
            result.append(avg)
        }
        return result
    }
}

0
0
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
0
0