获得R中大密集矩阵的特征值

时间:2014-10-28 07:29:55

标签: r sparse-matrix

我有一个大矩阵(36169 * 36169),正式班级' dgCMatrix' R package" Matrix"。

我需要特征值的总和,所以我需要计算特征值或该矩阵的轨迹。

我试图将矩阵转换为' normal'矩阵格式使用as.matrix(),以便能够使用matrix.trace()。这里我有内存问题,在尝试转换文件时我收到错误消息:Cholmod错误'内存不足'在文件../ Core / cholmod_memory.c,

下一步我搜索直接为dgcMatrix获取对角线值(跟踪)的方法,现在我发现我可以使用

Matrix包中的Diag签名(x =" dgCMatrix")以及setMethod,但我还没有找到如何使用它的示例。

这里有没有一个示例代码显示这项工作或任何其他解决方案?

2 个答案:

答案 0 :(得分:0)

试试这个:

library(Matrix)

set.seed(123)
M <- as(matrix(rnorm(4), 2), "dgCMatrix") # test data

sum(diag(M))
[1] -0.4899673

答案 1 :(得分:0)

我认为你所需要的只是sum(diag(M))

set.seed(1)
M <- matrix(rnorm(10000), 100, 100)

E <- eigen(M)
sum(Re(E$values)); sum(diag(M)) # equal