【问题标题】:On using the biwavelet package in R在 R 中使用 biwavelet 包
【发布时间】:2012-08-14 12:26:17
【问题描述】:

谁能指出以下示例代码不起作用的原因:

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)

【问题讨论】:

  • 如果您可以通过验证您对wt 的输入是否正确(因为biwavelet 不是一个常见的包)提供帮助,并查看您的输出wt.t1 中的值,它可能有助于解释为什么 wt 生成的任何类的 plot 方法都不起作用。

标签: r wavelet biwavelet


【解决方案1】:

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

感谢您发现错误。请不要犹豫,向软件包的维护者(即我)发送电子邮件告知未来的错误。

【讨论】:

【解决方案2】:

我怀疑这是因为您在这里只有一个频率并且没有为此设置功能。我可以通过将白噪声添加到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() 方法的作者可能做出了一个并非在所有情况下都成立的假设。

【讨论】:

  • 我不知道这是否是问题所在。请查看添加到问题中的其他详细信息。
  • 那就是代码的bug或者不合理。我知道代码为什么会失败——它向图像参数 zlim 传递了一个轴限制向量,其中第一个是正数,第二个是负数。这是因为函数的编码方式虽然不是预期的。所以就像我说的,与包维护者交谈并向他们展示你的例子。
猜你喜欢
  • 1970-01-01
  • 2014-11-29
  • 2019-09-18
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多