一些功能的计算期间有R包吗?我正在寻找这样的r函数:

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

最佳答案

我认为您正在寻找类似于快速傅立叶变换的东西。我不是专家,但是我认为您可以按照以下方式进行操作:

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.ar的包装函数。请谨慎使用,因为calcPeriod函数实际上仅标识最大周期性。对于不均匀采样的序列,最小二乘频谱分析也将确定主要周期性(example link)。

08-26 22:45