我通过这个page阅读了关于分配稀疏矩阵的内容。不幸的是,我不明白。任何人都可以帮我一个例子吗?例如,我应该如何在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;
答案 0 :(得分:6)
首先,对于小于约500x的矩阵(00,使用稀疏表示没有明显优势。因此,对于10x8,您应该只使用密集的MatrixXf。尽管如此,为了填充稀疏矩阵,推荐的方法是像这样填充Triplet的中间std :: vector:
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());