8

サンプルのスライディング FFT を計算するための R の関数またはパッケージはありますか? これは、 の出力が与えられた場合、効率的fft(x[n:m])に計算することを意味します。fft(x[1+(n:m)])

理想的には、両方のオンライン バージョン (最初は完全な時系列にアクセスできない場合、または大きすぎてメモリに収まらない場合) を見つけ、実行中の FFT 全体を保存しようとはしません。メモリのいずれか) とバッチ バージョン (ここでは、サンプル全体をx指定し、実行中のウィンドウの幅を伝えて、w次元の複雑な行列を生成しますc(w,length(x)/w))。

そのようなアルゴリズムの例をここに示します (ただし、まだどの言語でも実装しようとしたことはありません)。

http://cnx.org/content/m12029/latest/

そのようなものがRにまだ存在しない場合、それを実装するのはそれほど難しくないように思えます。

4

1 に答える 1

5

ここに何かを投稿するときによくあることですが、私はそれに取り組み続け、解決策を思いつきました。

fft.up <- function(x1, xn, prev) {
  b <- length(prev)
  vec <- exp(2i*pi*seq.int(0,b-1)/b)
  (prev - x1 + xn) * vec
}

# Test it out
x <- runif(6)
all.equal(fft.up(x[1], x[6], fft(x[1:5])), fft(x[2:6]))
# [1] TRUE

他の便利なものも提供する可能性があるため、一部のライブラリがこれを提供しているかどうかを知りたいと思っています。=) しかし今のところ、私の問題は解決しました。

于 2012-06-07T19:47:46.113 に答える