3

次のコード例が機能しない理由を誰かが提案できますか:

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 の回答への回答: 1 つの周波数のみを含むようにデータを保持し、時間ベクトルを変更すると、コードは正常に動作します。

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)
4

2 に答える 2

5

wt.R 関数のバグ (誤った括弧) を発見しました。このバグは biwavelet パッケージのバージョン 0.12 で修正されているため、上記のコードの両方のバージョンが動作するはずです。

エラーを見つけてくれてありがとう。今後のバグについては、遠慮なくパッケージの管理者 (つまり私) にメールしてください。

于 2012-10-07T07:15:10.057 に答える
3

これは、ここでは周波数が 1 つしかなく、関数がそのように設定されていないことが原因であると思われます。にホワイト ノイズを追加することでプロットを取得できます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()メソッドの作成者が、すべての場合に当てはまるとは限らない仮定を行っていた可能性があります。

于 2012-08-14T13:24:27.840 に答える