diff options
author | Jakob Odersky <jodersky@gmail.com> | 2012-10-30 13:47:49 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2012-10-30 13:47:49 +0100 |
commit | eb4e1c8f35c1a21b16c5dbf2bfab66a70f694af5 (patch) | |
tree | bd763a25dc03dfd57d86b667308399f84509d696 /src | |
parent | 91b9f59892dd1004e9ec496237fd712a6d7a00b6 (diff) | |
download | scalam-eb4e1c8f35c1a21b16c5dbf2bfab66a70f694af5.tar.gz scalam-eb4e1c8f35c1a21b16c5dbf2bfab66a70f694af5.tar.bz2 scalam-eb4e1c8f35c1a21b16c5dbf2bfab66a70f694af5.zip |
clarify smooth implementation
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/scalam/math/package.scala | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/main/scala/scalam/math/package.scala b/src/main/scala/scalam/math/package.scala index 58063fa..4121b8c 100644 --- a/src/main/scala/scalam/math/package.scala +++ b/src/main/scala/scalam/math/package.scala @@ -3,22 +3,19 @@ package scalam import scala.collection.SeqLike import scala.collection.generic.CanBuildFrom package object math { - + def smooth[Elem, Coll[Elem]](width: Int, passes: Int, collection: Coll[Elem])(implicit fractional: Fractional[Elem], cbf: CanBuildFrom[Coll[Elem], Elem, Coll[Elem]], view: Coll[Elem] => Seq[Elem]): Coll[Elem] = { def average(xs: Seq[Elem]): Elem = { import fractional._ xs.sum / fromInt(xs.length) } - - def smoothOnce(width: Int, collection: Coll[Elem]) = { + + if (passes <= 0) collection + else { val b = cbf(collection) collection.sliding(width).foreach(neighbours => b += average(neighbours)) - b.result() - + smooth(width, passes - 1, b.result()) } - - if (passes <= 0) collection - else smooth(width, passes - 1, smoothOnce(width, collection)) } }
\ No newline at end of file |