3

这个问题相当模糊,但有没有人在 R 中使用过 biwavelet 包并成功了?我有以下代码:

require(biwavelet)
t1 <- cbind(DecTime,Temp)    
## continuous wavelet transform
wt1 <- wt(t1)
plot(wt1)

它返回错误:

image.default(x$t, yvals, t(zvals), zlim = zlims, ylim = rev(range(yvals)), 中的错误:'x' 和 'y' 值必须是有限且非缺失的

我不理解这个错误,因为我的数据不包含任何缺失值,而且它们都是有限的。

尝试重现示例时:

require(biwavelet)
Date = seq(from=as.POSIXct("2011-01-01 00:00"), 
           to=as.POSIXct("2011-12-31 23:00"), length=8760)
DecTime = julian(Date, Date[1])

data=cbind(as.numeric(DecTime), rnorm(8760))
## Continuous wavelet transform
wt.t1=wt(data)
plot(wt.t1)

它很烦人,因此我不知道为什么我的数据在这个包中失败。上面示例中的数据与我的数据属于同一类,即“矩阵”。任何帮助或建议将不胜感激。

更改:

require(biwavelet)
Date = seq(from=as.POSIXct("2011-01-01 00:00"), 
           to=as.POSIXct("2011-12-31 23:00"), length=8760)
DecTime = julian(Date, Date[1])
D <- c(4.0267, 4.0211, 4.0005,4.0042,4.0042,4.0191)
data=cbind(as.numeric(DecTime[1:6]),as.numeric(D))
## Continuous wavelet transform
wt.t1=wt(data)
plot(wt.t1)


> data
           [,1]   [,2]
[1,] 0.00000000 4.0267
[2,] 0.04166667 4.0211
[3,] 0.08333333 4.0005
[4,] 0.12500000 4.0042
[5,] 0.16666667 4.0042
[6,] 0.20833333 4.0191
> class(data)
[1] "matrix"
> class(data[,1])
[1] "numeric"
> class(data[,2])
[1] "numeric"
> wt.t1=wt(data)
> plot(wt.t1)
Error in image.default(x$t, yvals, t(zvals), zlim = zlims, ylim = rev(range(yvals)),  : 
  invalid z limits
4

2 回答 2

1

如果您错过了我对您其他帖子的回复,您会发现 wt.R 函数中的一个错误(错误的括号)。该错误已在 biwavelet 包的 0.12 版中被压缩,因此您的代码现在可以工作了。

感谢您发现错误!

于 2012-10-07T07:19:28.030 回答
0

这是一个部分答案,我希望能有所启发。如果您从有效的示例中获取第一Ndata,那么它会在N < 2762. 它在以下情况下起作用N >= 2762(也许这个阈值取决于data? 中的实际随机值):

> wt.t1=wt(data[1:2762,])
> plot(wt.t1, plot.cb=T)
> wt.t1=wt(data[1:2761,])
> plot(wt.t1, plot.cb=T)
Error in image.default(x$t, yvals, t(zvals), zlim = zlims, ylim = rev(range(yvals)),  : 
  invalid z limits

重要的部分似乎是所有的wt.t1$power值都小于 1,这弄乱了它计算zlims变量的方式。不过,我不知道是怎么回事wt.t1$power

于 2012-06-25T18:31:31.023 回答