稀疏矩阵的特征对角更新

时间:2016-07-20 06:52:35

标签: sparse-matrix eigen

在Eigen中编辑稀疏矩阵的对角线的最快方法是什么?我已经使用三元组填充它但我偶尔需要更改所有对角线值(它们已经设置为非零)。

2 个答案:

答案 0 :(得分:3)

要完成kangshiyin答案,您还可以通过密集的矢量表达式编辑对角线,例如为每个对角元素添加1:

sp_mat.diagonal().array() += 1;

警告:仅当对角线元素已存在时才会起作用,原始问题就是这种情况。

答案 1 :(得分:2)

如果可以接受,你可以简单地使用他们的指数,如

sp_mat(i, i)

由于每次访问都涉及二进制搜索,因此可能无法满足性能。在这种情况下,您仍然可以通过一些限制来获得更好的性能。

  1. 您不会更改矩阵的基础布局,例如添加/删除nnzs,压缩;
  2. 您将反复访问对角线。
  3. 通过这些限制,您可以存储对角线组件的指针,以便稍后在O(1)时间内访问数据。您可以使用

    获取指针
    &sp_mat(i, i)