2012-06-25 2 views
3

Этот вопрос довольно расплывчатый, но кто-нибудь использовал пакет бивалеитов в R и был успешным? У меня есть следующий код:непрерывное вейвлет-преобразование

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

и он возвращает ошибку:

Ошибка в image.default (х $ т, yvals, т (zvals), zlim = zlims, ylim = оборотов (диапазон (yvals)):. «х» и «у» значения должны быть конечными и не пропущенными

Я не понимаю эту ошибку, потому что мои данные не содержат каких-либо недостающих значений, и все они конечны

При попытке воспроизвести экзамен le:

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 
+0

Оба являются числовыми, это путаница. – KatyB

+0

Ваш пример не работает для меня. 't1' не существует. – kmm

+0

Я был бы рад попробовать, если вы предоставили «DecTime» и «Temp». Вероятно, это зависит от типов этих объектов. –

ответ

0

Вот частичный ответ, который я надеюсь, прольет немного света. Если вы берете первые N строк data из примера, который работает, то он не работает, когда 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.

1

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

Благодарим за обнаружение ошибки!