我有一个24小时的时间序列,我想实现以下等式,获取幅度和相位。
以下是数据:
dat <- structure(list(V1 = c(0.3146666667, 0.0987012987, 0.3184210526,
0.7291139241, 0.6692307692, 0.6746666667, 0.4533333333, 1.0333333333,
1.1615384615, 0.7435897436, 0.9272727273, 0.7894736842, 0.5168831169,
0.7157894737, 0.7546666667, 0.3594594595, 0.304, 0.5078947368,
0.2666666667, 0.3615384615, 0.2207792208, 0.2987341772, 0.5240506329,
0.2935064935)), .Names = "V1", class = "data.frame", row.names = c(NA,
-24L))
我想从时间序列中提取一阶和二阶谐波,自动获得它们相应的幅度,频率和相位。
这是我现在拥有的(一次谐波):
y <- dat$V1
ssp <-spectrum(y)
t <- 1:24
per <- 1/ssp$freq[ssp$spec==max(ssp$spec)]
reslm <- lm(y ~ cos(2*pi/per*t))
rg <- diff(range(y))
plot(y~t,ylim=c(min(y)-0.1*rg,max(y)+0.1*rg))
lines(fitted(reslm)~t,col=4,lty=2)
以下是输出:
问题/问题
1。。我该如何估算正确的相位?在我的方程式中,我没有添加相位。
2。。我必须将其应用于多个时间序列,并且要提取其他谐波的相位,幅度和频率。
3。。在R中有更简单的方法吗?
我将不胜感激。