提取R中的n次谐波及其相应的幅度和相位

时间:2018-06-29 05:26:01

标签: r fft cosine phase amplitude

我有一个24小时的时间序列,我想实现以下等式,获取幅度和相位。

Image

以下是数据:

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)

以下是输出:

Output

问题/问题

1。。我该如何估算正确的相位?在我的方程式中,我没有添加相位。

2。。我必须将其应用于多个时间序列,并且要提取其他谐波的相位,幅度和频率。

3。。在R中有更简单的方法吗?

我将不胜感激。

0 个答案:

没有答案