我在分配稀疏矩阵时通读了page。不幸的是,我不明白。有人可以帮我举例吗?例如,应如何在Eigen中分配以下10 x 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;
最佳答案
首先,对于小于约500x(00)的矩阵,使用稀疏表示没有明显的优势。因此,对于10x8,您应该只使用密集的MatrixXf。尽管如此,要填充稀疏矩阵,建议的方法是填充中间矩阵std::vector 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());