DFT
学部3年生がCで頑張ってる所。
scala> def dft(xs: List[Double]) = { | import java.lang.Math._ | val N = xs size; | for (k <- 0 until N) yield { | val as = for (n <- 0 until N) yield { | xs(n) * cos(2 * PI * n * k / N) | } | val bs = for (n <- 0 until N) yield { | xs(n) * sin(2 * PI * n * k / N) | } | val a = (0. /: as)(_ + _) | val b = (0. /: bs)(_ + _) | sqrt(a * a + b * b) | } | } dft: (List[Double])RandomAccessSeq.Projection[Double] scala> dft(List(1, -1, 1, -1)) foreach(printf("%.4f ", _)) 0.0000 0.0000 4.0000 0.0000