3

一部の関数の計算期間用の R パッケージはありますか? 次のような r 関数を探しています。

x <- seq(0, 50, by = 0.05)
y <- sin(x)
p <- calcPeriod(x, y) # result = 2pi
4

3 に答える 3

5

私はあなたが高速フーリエ変換の線に沿って何かを探していると思います。私は専門家ではありませんが、次のように何かできると思います。

x <- seq(0, 50, by = 0.05)
y <- sin(x)

calcPeriod <- function(x, y){
    incr <- x[2] - x[1]
    tmp <- spectrum(y, plot=FALSE)
    p <- (1/tmp$freq*incr)[which.max(tmp$spec)] # max of spectrum
    p
}

calcPeriod(x,y) # equals 6.4

この関数は、spectrum実際にはとのラッパー関数です。関数は実際には最大の周期性を識別するだけなので、注意して使用してください。不均一にサンプリングされたシリーズの場合、最小二乗スペクトル分析でも優勢な周期性が特定されます(リンクの例)。spec.pgramspec.arcalcPeriod

于 2013-01-17T10:20:53.427 に答える
1

Paul H.の答えは、フーリエ解析を扱いたくない場合は、いつでも実行できるnls(y~sin(k*x)) か、その拡張バージョンを実行できることを思い出させてくれました。これは、データに周波数が 1 つしかないことを事前に知っていることを前提としています。

いつも使っている のプラグをここに置きEureqaます。これは、Google 経由で Cornell.edu で簡単に見つけることができます。

于 2013-01-17T12:39:56.160 に答える
0

私自身はそのような関数を認識していませんoptimが、期間をパラメーターとして取るコスト関数を最適化するために使用できます。optim次に、最適な適合が得られるまで期間を微調整します。これはそれほど難しいことではなく、calcPeriod自分で関数にラップすることができます。

于 2013-01-17T10:03:54.133 に答える