如何在Eigen中的稀疏矩阵上添加块矩阵

时间:2016-05-04 06:50:58

标签: c++ matrix eigen

例如我有一个10x10 SparseMatrix A,我想在A的左上角添加一个3x3单位矩阵。

已知A在这3个条目中已经非零。

如果我必须逐个添加这些值也可以,但我没有找到操作Eigen中稀疏矩阵元素的方法。

我错过了什么吗?

1 个答案:

答案 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";