在R中使用biwavelet包

时间:2012-08-14 12:26:18

标签: r wavelet biwavelet

有人可以建议为什么以下示例代码不起作用:

require(biwavelet)
t <- seq(1/24, 365, 1/24)
A <- 2
fs <- 1/24
y <- A + sin(2*pi*fs*t)
d = cbind(t,y)
wt.t1 <- wt(d)
plot(wt.t1)

它会生成错误说明:

Error in image.default(x$t, yvals, t(zvals), zlim = zlims, ylim = rev(range(yvals)),  : 
  invalid z limits

我该如何解决这个问题?

其他

回应Gavin Simpsons回答:如果我保持数据仅包含一个频率但改变时间向量,则代码工作正常。

require(biwavelet)
A <- 2
fs <- 1/24
y <- A + sin(2*pi*fs*t)
d <- cbind(seq(1,8760), y) 
wt.t1 <- wt(d)
plot(wt.t1)

2 个答案:

答案 0 :(得分:5)

您在wt.R函数中发现了一个错误(错误的括号)。该错误已在biwavelet软件包的0.12版本中得到修复,因此上述代码的两个版本现在都可以使用。

感谢您发现错误。请不要犹豫,通过电子邮件发送有关错误的软件包(即我)的维护者。

答案 1 :(得分:3)

我怀疑这是因为你这里只有一个频率并且没有为此设置功能。我可以通过向y添加白噪声来获得一个情节:

require(biwavelet)
t <- seq(1/24, 365, 1/24)
A <- 2
fs <- 1/24
y <- A + sin(2*pi*fs*t)
d <- cbind(t, y + rnorm(length(y))) ## add some white noise to y
wt.t1 <- wt(d)
plot(wt.t1)

您可能希望与维护人员联系以报告问题。当我调试它并反转zlim以使diff(zlim)为正时,我得到了一些情节,因此plot()方法的作者可能会做出一个假设在所有情况下都要坚持。