Об использовании пакета biwavelet в R

Может кто-нибудь предложить, почему следующий пример кода не работает:

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

Как бы я исправить эту проблему?

Дополнительно:

В ответ на ответ Гэвина Симпсона: если я сохраню данные, чтобы включить только одну частоту, но изменил вектор времени, код работает нормально.

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 ответа

Решение

Я подозреваю, что это связано с тем, что у вас есть только одна частота, и функция не настроена для этого. Я могу получить сюжет, добавив белый шум 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() Метод делал предположение, которое не выполняется во всех случаях.

Вы обнаружили ошибку в функции wt.R (ошибочные скобки). Эта ошибка была исправлена ​​в версии 0.12 пакета biwavelet, поэтому теперь обе версии вашего кода должны работать.

Спасибо за обнаружение ошибки. Пожалуйста, не стесняйтесь по электронной почте сопровождающему пакета (т.е. мне) об ошибках в будущем.

Другие вопросы по тегам