Как создать разреженную диагональную матрицу? - PullRequest
0 голосов
/ 06 февраля 2020

Это может быть очень глупый вопрос, но я не могу найти правильный способ создания разреженной диагональной матрицы в R. Я нашел функции:

  • diag.spam()
  • spdiags()

и использовал их с загруженной библиотекой Matrix и пакетом spam, но R, похоже, не распознал эти функции. Кто-нибудь знает функцию или библиотеку, которую мне нужно скачать?

Мне это нужно, потому что я хочу создать диагональные матрицы больше 256 на 256.

Ответы [ 2 ]

2 голосов
/ 06 февраля 2020

Функция Diagonal() в пакете Matrix. (Matrix - это «рекомендуемый» пакет, что означает, что он автоматически доступен при установке R).

library(Matrix)
m <- Diagonal(500)
image(m)

Diagonal(n) создает идентификационную матрицу nxn. Если вы хотите создать диагональную матрицу с указанной диагональю x, используйте Diagonal(x=<your vector>)

0 голосов
/ 06 февраля 2020

Используйте bandSparse библиотеки Matrix.

, чтобы получить матрицу n-на-n с m по диагонали, напишите:

bandSparse(n,n,0,list(rep(m, n+1)))
...