在Eigen中编辑稀疏矩阵的对角线的最快方法是什么?我已经使用三元组填充它但我偶尔需要更改所有对角线值(它们已经设置为非零)。
答案 0 :(得分:3)
要完成kangshiyin答案,您还可以通过密集的矢量表达式编辑对角线,例如为每个对角元素添加1:
sp_mat.diagonal().array() += 1;
警告:仅当对角线元素已存在时才会起作用,原始问题就是这种情况。
答案 1 :(得分:2)
如果可以接受,你可以简单地使用他们的指数,如
sp_mat(i, i)
由于每次访问都涉及二进制搜索,因此可能无法满足性能。在这种情况下,您仍然可以通过一些限制来获得更好的性能。
通过这些限制,您可以存储对角线组件的指针,以便稍后在O(1)时间内访问数据。您可以使用
获取指针&sp_mat(i, i)