R中函数的计算期

And*_*hin 3 r function period

某些功能的计算周期有任何R包吗?我正在寻找像这样的r函数:

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

Mar*_*box 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
Run Code Online (Sandbox Code Playgroud)

该函数spectrum实际上是spec.pgram和的包装函数spec.ar.请谨慎使用,因为该calcPeriod功能实际上仅识别最大周期.对于不均匀采样序列,最小二乘法谱分析也将识别主导周期(示例链接).