我通读了这个关于分配稀疏矩阵的页面。不幸的是,我不明白。谁能帮我举个例子?例如,我应该如何在 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;
我通读了这个关于分配稀疏矩阵的页面。不幸的是,我不明白。谁能帮我举个例子?例如,我应该如何在 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 像这样:
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());