私はRとプログラミングの初心者です。だから、質問は単純だと思うが、答えを見つけたり、それを解決したりすることはできない。フォーカル統計(フォーカス、 "ラスタ"パッケージ、R)のための独自の関数は、間違った出力を与えます
私はラスター(100 * 100セル)を持っています。動いているウィンドウ(例えば、ウィンドウのサイズ= 21)で2D DFTを使って高調波の大きさの中央値を取得する必要があります。 ラスターパッケージでフォーカル機能を見つけました。この関数では、値のセリア(ウィンドウ内のラスタ値)を受け取り、ウィンドウ全体の個別の値を返す独自の関数をコーディングすることができます。
r <- raster(matrix(rnorm(10000), nrow = 100, ncol = 100)) # creation of raster
win <- 21 # setting the window size
spectr <- function(d) {
return(median(abs(spec.fft(x = 1:win, y = 1:win, z = (d - mean(d)))$A)))
} # i think "d" - the matrix of raster values in the window border
focal(x = r, w = matrix(1, win, win), fun = spectr())
出力:spec.fftでのエラー(X = 1:勝利は、Yは= 1:勝利、Zは=(D - 平均(D))): 引数 "D" が欠けている、ないとデフォルト
私は、ウィンドウからのデータが自動的に関数で送信されると推測しました。私のコードで何が間違っていますか?ありがとうございました!
更新。テストのためのライブラリ「スペクトル」をロードする必要がある:
install.packages("spectral")
library(spectral)
で関数を使用してみましょうが、ロキをありがとう!それは本当に簡単でした。しかし、私は関数 "spectr"の間違いだと思いました。あなたのコードが動作します) –
現在のバージョンを参照してください。私は自分の答えを編集した – loki