Как создать матрицу с нулями в блоках внутри диагонали? - PullRequest
0 голосов
/ 14 мая 2018

Итак, я пытаюсь создать матрицу 2000 * 2000, которая имеет 50 * 50 нулевых блоков по диагонали и единицу во всех остальных местах.

Вот миниатюрный пример того, что я имею в виду. a представляет собой матрицу 6x6 с единицами, а каждый блок представляет собой матрицу 2 * 2 с нулями по диагонали

a <- matrix(rep(1, times = 36), nrow = 6, byrow = TRUE)

a[1:2,1:2] <- 0
a[3:4,3:4] <- 0
a[5:6,5:6] <- 0

дача

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    0    1    1    1    1
[2,]    0    0    1    1    1    1
[3,]    1    1    0    0    1    1
[4,]    1    1    0    0    1    1
[5,]    1    1    1    1    0    0
[6,]    1    1    1    1    0    0

Конечно, мой выбор кода плох для создания такой большой матрицы, так как мне пришлось бы повторить нижнюю часть 50 раз.

Какой код был бы намного лучше для создания матрицы такого типа?

1 Ответ

0 голосов
/ 14 мая 2018

rawr правильно,

a <- +!kronecker(diag(1, 3), matrix(1, 2, 2))

дает

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    0    1    1    1    1
[2,]    0    0    1    1    1    1
[3,]    1    1    0    0    1    1
[4,]    1    1    0    0    1    1
[5,]    1    1    1    1    0    0
[6,]    1    1    1    1    0    0

и +!kronecker(diag(1, 40), matrix(1, 50, 50)) решает мой оригинальный вопрос с матрицей 2000 *2000* 1008 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...