这个问题相当模糊,但是否有人在R中使用了双小波包,并取得了成功?我有以下代码:
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(范围(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发布于 2012-10-07 07:19:28
如果您错过了我对另一篇文章的答复,您会在wt.R函数中发现一个错误(错误的括号)。这个bug已经被压入了双小波包的0.12版本中,所以您的代码现在可以工作了。
谢谢你发现错误!
发布于 2012-06-25 18:31:31
这是一个部分的答案,我希望能给你一点启示。如果从示例中获得第一个N行,那么当data运行时,它就会失败。当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是怎么回事。
https://stackoverflow.com/questions/11192291
复制相似问题