我通读了关于分配稀疏矩阵的这一页。不幸的是,我不明白。有人能帮我举个例子吗?例如,我应该如何在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;
首先,对于小于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());