在Eigen中分配稀疏矩阵

2 linear-algebra eigen

我通过这个页面阅读了关于分配稀疏矩阵的内容.不幸的是,我不明白.任何人都可以帮我一个例子吗?例如,我应该如何在Eigen中分配以下10×8稀疏矩阵?

A(1,2)= 3; A(1,4)= 10; A(2,1)= 9; A(2,8)= 9; A(4,7)= 11; A(5,3)= -23; A(7,6)= 21; A(9,3)= 45; A(10,7)= 76;

gga*_*ael 6

首先,对于小于约500x的矩阵(00,使用稀疏表示没有明显的优势.因此对于10x8,你应该简单地使用密集的MatrixXf.尽管如此,为了填充稀疏矩阵,推荐的方法是填充中间体std :: Triplet的矢量像这样:

typedef Eigen::Triplet<double> T;
std::vector<T> tripletList;
tripletList.reserve(9);
tripletList.push_back(T(1,2,3));
tripletList.push_back(T(1,4,10));
// ...
SparseMatrix<double> mat(10,8);
mat.setFromTriplets(tripletList.begin(), tripletList.end());
Run Code Online (Sandbox Code Playgroud)