简体   繁体   English

如何创建稀疏对角矩阵?

[英]How to create a sparse diagonal matrix?

Might be a very silly question, but I cannot seem to find a proper way to create a sparse diagonal matrix in R. I've found the functions:可能是一个非常愚蠢的问题,但我似乎找不到在 R 中创建稀疏对角矩阵的正确方法。我找到了函数:

  • diag.spam()
  • spdiags()

and used them with library Matrix and package spam downloaded, but R did not seem to recognize these functions.并将它们与库Matrix和包spam ,但 R 似乎无法识别这些功能。 Does anyone know a function or library I need to download?有人知道我需要下载的函数或库吗?

I need it because I want to create diagonal matrices larger than 256 by 256.我需要它,因为我想创建大于 256 x 256 的对角矩阵。

The Diagonal() function in the Matrix package. Matrix包中的Diagonal()函数。 ( Matrix is a "recommended" package, which means it is automatically available when you install R.) Matrix是一个“推荐”包,这意味着它在您安装 R 时自动可用。)

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

Diagonal(n) creates an nxn identity matrix. Diagonal(n)创建一个 nxn 单位矩阵。 If you want to create a diagonal matrix with a specified diagonal x , use Diagonal(x=<your vector>)如果要创建具有指定对角线x的对角矩阵,请使用Diagonal(x=<your vector>)

Use bandSparse of the Matrix library.使用 Matrix 库的 bandSparse。

to get an n-by-n matrix with m on its diagonal use, write:要得到一个 n×n 矩阵,其中 m 对角线使用,写:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM