在R中将坐标矩阵保存为图像矩阵的最快方法

时间:2019-06-25 20:04:13

标签: r image matrix

我有很多点(坐标),我希望将其存储为图像矩阵dx x dy,例如将缺失值标记为0,否则将其标记为1。

样本:

> s
          [,1]   [,2]
 [1,] 452937.5 359878
 [2,] 452937.0 359878
 [3,] 452936.0 359878
 [4,] 452936.0 359879
 [5,] 452936.0 359880
 [6,] 452935.5 359880
 [7,] 452935.0 359880
 [8,] 452934.0 359880
 [9,] 452933.5 359880
[10,] 452933.0 359880
[11,] 452932.0 359880
[12,] 452931.5 359880
[13,] 452931.0 359880
[14,] 452930.0 359880
[15,] 452930.0 359881
[16,] 452929.0 359881
[17,] 452928.5 359881
[18,] 452928.0 359881
[19,] 452927.0 359881
[20,] 452926.5 359881

我有一个函数可以执行此操作,但速度非常慢:

as.ImageMatrix <- function(mat) {
  xmax = max(mat[,1]); ymax = max(mat[,2])
  xmin = min(mat[,1]); ymin = min(mat[,2])
  dx = xmax - xmin + 1
  dy = ymax - ymin + 1

  mval = NULL
  for (ix in (1:dx)) {  #ix=1
    for (iy in (1:dy)) {  #iy=1
      #stop()
      if (any(mat[,1] == (ix+xmin-1) & mat[,2] == (iy+ymin-1))) {
        mval = c(mval, 1)
      } else {
        mval = c(mval, 0)
      }
    }
  }

  mi = matrix(mval, nrow = dx, byrow = T)
  rownames(mi) <- c(xmin:xmax)
  colnames(mi) <- c(ymin:ymax)
  return(mi)
}

它给出0/1矩阵,可以使用image查看。

我的问题是:我可以在任何R库中找到使它更快的东西吗?我正在四处寻找栅格,矩阵,但找不到它。

顺便说一句,当我使用plot(s)时,我直接得到所需的东西,但是如何将其存储在以轴为尺寸的矩阵中?

0 个答案:

没有答案