R как сложить изображение из их матричного значения

#r #image #matrix #plot

#r #изображение #матрица #график

Вопрос:

У меня есть много матриц размером 300 * 300, которые сохранены в списке с именем L. Это двоичная матрица, у меня есть только значения 0 и 1. Я строю изображение из этой матрицы (например, с помощью c.img).

Каков наилучший способ создать стек из этих матриц? Я хочу создать новую матрицу и / или пиксель в позиции (i, j), я хочу просмотреть всю мою матрицу, сохраненную в L, и если одна или несколько матриц имеют 1 в этой позиции, то пиксель (i, j) в моей новой матрице будет иметь значение 1, иначе 0.

Вот псевдокод, который поможет вам понять мою цель

 L <- list(rep(matrix(0 or 1,300,300),n)   
new_matrix<-matrix(0,300,300)

new_matrix[i,j]<- max(L[i,j])

  

но этот код не работает, потому что данные представляют собой список. Я почти уверен, что смогу выполнить эту задачу, используя 3 цикла (i, j, n), но поскольку у меня много матриц, это займет слишком много времени, и я ищу более быстрое решение.

Комментарии:

1. Спасибо! Работает очень хорошо! Я нашел другое решение: добавить всю матрицу и в новую матрицу все значения > 1 -> 1.

Ответ №1:

Вы можете использовать :

 matrix(as.numeric(Reduce(` `, data) > 0), 300, 300)
  

Суммируйте всю матрицу, затем преобразуйте значения, большие 0, в 1 с помощью as.numeric .

Ответ №2:

Я бы использовал многомерный массив, если все изображения имеют одинаковые размеры.

 # Two matrices
m1 <- matrix(1,5,5)
m2 <- matrix(0,5,5)

# Placing them in an array (two matrices of dimension 5x5)
my_array <- array(c(m1,m2),dim = c(5,5,2))

# Investigating content of position 1,1 for matrices 1 to 2
my_array[1,1,1:2]
[1] 1 0

# You can even look at larger regions across matrices
> my_array[1:3,1:3,1:2]
, , 1

     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    1    1    1
[3,]    1    1    1

, , 2

     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    0    0
[3,]    0    0    0