[英]How to add a block matrix onto a sparse matrix in Eigen
例如,我有一個10x10的SparseMatrix A,我想在A的左上角添加一個3x3的單位矩陣。
在這3個條目中,已知A已經不為零。
如果必須一一添加值,也可以,但是我沒有找到在Eigen中對稀疏矩陣的元素進行操作的方法。
我錯過了什么?
如果只想一次將操作應用於特定元素,則可以像下面這樣使用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";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.