例如我有一个10x10 SparseMatrix A,我想在A的左上角添加一个3x3单位矩阵。
已知A在这3个条目中已经非零。
如果我必须逐个添加这些值也可以,但我没有找到操作Eigen中稀疏矩阵元素的方法。
我错过了什么吗?
答案 0 :(得分:0)
如果你想要的只是一次将操作应用于特定元素,你可以使用coeffRef
,如下所示:
typedef Eigen::Triplet<double> T;
std::vector<T> coefficients;
for (int i = 0; i < 9; i++) coefficients.push_back(T(i, i, (i % 3) + 1));
Eigen::SparseMatrix<double> A(10, 10);
A.setFromTriplets(coefficients.begin(), coefficients.end());
std::cout << A << "\n\n";
for (int i = 0; i < 3; i++) A.coeffRef(i,i) += 1;
std::cout << A << "\n\n";