R как складывать изображения из их значения матрицы - PullRequest
2 голосов
/ 05 апреля 2019

Я получил много матриц размера 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), но поскольку у меня много матриц, которые займут слишком много времени, и я ищу более быстрое решение.

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

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

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

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

1 голос
/ 05 апреля 2019

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

# 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...