我用Eigen编写了一个模拟,现在我需要像这样设置ColumnMajor SparseMatrix的行列表:
In row n:
for column elements m:
if m == n set value to one
else set value to zero
稀疏矩阵中总是有列索引=行索引的元素。我尝试使用InnerIterator,但由于我有ColumnMajor矩阵,因此无法正常工作。 https://stackoverflow.com/a/21006998/3787689中建议的剪枝方法有效,但我只需要将非对角元素暂时设置为零,剪枝实际上会删除它们,从而减慢了程序的其他部分的速度。
在这种情况下我应该如何进行?
提前感谢!
EDIT:我忘了说清楚:稀疏矩阵已经充满了值。
使用三胞胎进行有效插入:
我这样解决:因为我想坚持使用ColumnMajor矩阵,所以我做了一个本地RowMajor版本,并使用InnerIterator将值分配给特定的行。之后,我用结果覆盖矩阵。
对于初学者,将行/列/块设置为零的最简单方法是将其乘以0.0。