连续小波变换

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)

很恼人的是,它可以正常运行,所以我不知道为什么我的数据在这个包中失败了。上面例子中的数据和我的数据是同一类别,即'matrix'。如果有任何帮助或建议将不胜感激。

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

两者都是数字,这就是混淆的原因。 - KatyB
你的例子对我不起作用。t1不存在。 - kmm
抱歉,我可能提取了错误的代码部分。现在已经修改了。 - KatyB
这段代码在我插入正态分布数据(使用rnorm)时有效,但是对于我的数据却无效,尽管它是“numeric”类型。 - KatyB
请提供至少一部分数据,以便人们可以看到它与您提供的示例数据有何不同。您可以使用 dput 来完成此操作。 - Roland
显示剩余2条评论
2个回答

1
如果您错过了我对您其他帖子的回复,那么您已经发现了wt.R函数中的一个错误(多余的括号)。该错误已在biwavelet软件包的0.12版本中得到修复,所以您的代码现在可以正常运行了。
感谢您发现这个错误!

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具体是什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接