2012-08-14 29 views
3

任何人都可以說明爲什麼下面的示例代碼不起作用:關於使用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) 
+0

如果你可以通過驗證你已經得到了正確的'wt'輸入(因爲'biwavelet'不是一個普通的包),並且看看你的輸出'wt.t1'中的值,它可能會有助於解釋爲什麼'wt'類生成的'plot'方法不起作用。 – 2012-08-14 13:22:34

回答

3

我懷疑這是由於你在這裏只有一個頻率,並沒有爲此設置功能。我可以通過添加白噪聲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()方法的作者可能會做出一個假設,並不是在所有情況下都適用。

+0

我不知道這是否是問題所在。請參閱添加到問題的其他詳細信息。 – KatyB 2012-08-15 06:48:16

+0

然後它是代碼中的一個錯誤或不成立。我知道爲什麼代碼失敗 - 它傳遞給圖像參數zlim一個軸向量矢量,第一個是正數,第二個是負數。這是因爲函數編碼的方式雖然不是打算的。就像我說的那樣,與包維護者聯繫並向他們展示您的示例。 – 2012-08-15 07:00:56

5

您發現了wt.R函數中的錯誤(錯誤的括號)。該bug已經在biwavelet包的0.12版本中得到修復,因此上面的兩個版本的代碼現在都可以工作。

感謝您發現錯誤。請隨時通過電子郵件向我的軟件包維護人員(即我)發送有關錯誤的信息。

+0

太好了,謝謝。 – KatyB 2012-10-09 15:05:52

+0

或更好,向我們的github問題跟蹤器添加問題https://github.com/tgouhier/biwavelet/issues – 2016-05-04 00:07:06