在R中使用栅格图层进行矩阵变换

时间:2017-05-04 14:35:39

标签: r matrix transformation raster

我正在使用输入类型为num的

的矩阵变换来跟踪一些代码
> input
1     101.3862407     63.8025351
2     -39.2936491      0.3279252
3     -2.5526003      1.8761791
4     36.1441720     45.3625071
....

转换矩阵:

transfmatrix <- matrix(c(0.9,-0.1,0.1,0.9),nrow=2)

> transfmatrix
      [,1] [,2]
 [1,]  0.9  0.1
 [2,] -0.1  0.9

然后我可以使用:

进行数据转换
# transformation
result <-input%*%transfmatrix

这很好用,但我想&#34;输入&#34;成为光栅文件。 是否可以对栅格图层应用类似的转换?我尝试了以下方法:

library(raster)
r <- raster(ncol=40, nrow=20)
r[] <- rnorm(n=ncell(r))

test1<-stack(r,r*2)
test2 <- test1%*%transfmatrix

但收到错误:

Error in test1 %*% transf.m : 
requires numeric/complex matrix/vector arguments

1 个答案:

答案 0 :(得分:1)

您需要根据数据制作一个2列矩阵,乘以2x2矩阵。也许这个:

> z = as.matrix(test1) %*% transf.m
> dim(z)
  [1] 800   2

这是来自test1的800个单元格的800x2矩阵。

如果你想要一个带有值的栅格堆栈,那么,覆盖test1,请执行:

> test1[[1]][]=z[,1]
> test1[[2]][]=z[,2]