何故かフーリエ変換したくなったので、Scalaで書いてみた。 フーリエ変換そのものについてはWikipediaでもごらん下され。 高速じゃない離散フーリエ変換。 ワンライナーで書こうと思えば書けるね、これ。 ひどく読みにくくなりそうだけど。 def ft(data: IndexedSeq[Double]): (IndexedSeq[Double], IndexedSeq[Double]) = { val n = data.length // 実部 val realPart = (for (i <- 0 to n-1) yield (for (j <- 0 to n-1) yield (data(j) * Math.cos(2.0 * Math.Pi * i * j / n) - data(j) * Math.sin(2.0 * Math.Pi * i * j / n)))sum) // 虚