似乎(* =)不能在Eigen 3.2.10中的ColMajor稀疏矩阵的行视图上操作,如下所示
SparseMatrix<double, ColMajor> spmat(3, 3);
spmat.coeffRef(0, 0) = 1.1;
spmat.coeffRef(1, 1) = 2.2;
spmat.coeffRef(2, 2) = 3.3;
spmat.row(2) *= 2.0; // compile failed!
spmat.row(2)
类型中的SparseMatrix<double, ColMajor>
是只读类型,而不是引用类型。
在Eigen 3.2.10的更改日志中,它表示“修复了对列主要(resp.row-major)稀疏矩阵的行(resp。列)的支持”,但我认为操作* =在ColMajor的行视图中sparmatrix是必要的,所以有人能很好地解决这个问题吗?
答案 0 :(得分:0)
如果需要保留在3.2分支上,则可以这样解决(Future()
instances):
spmat.middleRows(2,0) *= 2.0;
更好的是,在进行很多行操作时,更新到Eigen 3.3,或考虑使用行优先矩阵。