Как преобразовать матрицу в матрицу изображения в R? - PullRequest
0 голосов
/ 15 июня 2019

Я имею в виду, есть ли функция, которая может конвертировать большие 3D-матрицы (с хорошей производительностью) в изображения-как?А именно, у меня есть пример:

mat = matrix(c(c(3,5,6,7,8,4,4,6,5,6),
               c(3,4,5,7,6,4,5,4,6,6),
               c(9,9,9,9,9,9,9,9,9,9)), ncol = 3, byrow = F)

Когда я plot, это просто простая матрица 6: 5.Суть в том, чтобы получить это изображение в виде матрицы, чтобы ось x стала 1-м измерением, а ось Y - 2-м измерением, а значение стало атрибутом.Итак, как и на графике, где никакое значение (здесь 9) этой координатой будет NA.

Я пытался конвертировать, используя raster, SpatialPoints, as.raster, as.Image, однакоВсегда есть что-то для этой функции.

РЕДАКТИРОВАТЬ

Нашел очень простое решение:

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=2
    #stop()
    if (any(mat[,1] == (ix+xmin-1) & mat[,2] == (iy+ymin-1))) {
      mval = c(mval, mat[ix,][3])
    } else {
      mval = c(mval, NA)
    }
  }
}

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

Я уверен, что где-то есть лучшая реализация.

1 Ответ

0 голосов
/ 16 июня 2019

Вы можете сделать

library(raster)
r <- rasterFromXYZ(mat)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...