Eigen SparseMatrix-设置行值

问题描述 投票:0回答:3

我用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:我忘了说清楚:稀疏矩阵已经充满了值。

c++ sparse-matrix eigen
3个回答
0
投票

使用三胞胎进行有效插入:


0
投票

我这样解决:因为我想坚持使用ColumnMajor矩阵,所以我做了一个本地RowMajor版本,并使用InnerIterator将值分配给特定的行。之后,我用结果覆盖矩阵。


0
投票

对于初学者,将行/列/块设置为零的最简单方法是将其乘以0.0。

© www.soinside.com 2019 - 2024. All rights reserved.