【发布时间】:2018-03-31 05:11:11
【问题描述】:
我是 R 和编程的初学者。所以我认为这个问题很简单,但我无法找到答案或解决它。
我有栅格(100*100 个单元格)。我需要在移动窗口处通过 2D DFT 获得谐波幅度的中值(例如,窗口大小 = 21)。 我在 raster 包中找到了焦点函数。对于这个函数,我可以编写自己的函数,它采用一系列值(窗口中的光栅值)并返回整个窗口的单个值。
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:win, y = 1:win, z = (d - mean(d))) : 缺少参数“d”,没有默认值
我假设窗口中的数据是在函数中自动传输的。我的代码有什么错误?谢谢!
更新。测试需要加载库“光谱”:
install.packages("spectral")
library(spectral)
【问题讨论】:
标签: r geospatial raster