首页 文章

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

提问于
浏览
0

我有一个大矩阵(36169 * 36169),正式类'dgCMatrix'R包“矩阵” .

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

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

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

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

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

2 回答

  • 0

    试试这个:

    library(Matrix)
    
    set.seed(123)
    M <- as(matrix(rnorm(4), 2), "dgCMatrix") # test data
    
    sum(diag(M))
    [1] -0.4899673
    
  • 0

    我想你需要的只是 sum(diag(M))

    set.seed(1)
    M <- matrix(rnorm(10000), 100, 100)
    
    E <- eigen(M)
    sum(Re(E$values)); sum(diag(M)) # equal
    

相关问题