【发布时间】:2019-08-06 08:38:51
【问题描述】:
我正在使用 Eigen::SparseMatrix,但我无法理解 innerIndexPtr 和 outerIndexPtr 的含义。 the official page 的解释对我来说非常模糊。直观地说,我认为innerIndexPtr 是非零元素的行索引,outerIndexPtr 是非零元素的列索引,但显然情况并非如此。请看下面的例子,
std::vector<Eigen::Triplet<double>> triplet;
triplet.emplace_back(0, 0, 10);
triplet.emplace_back(2, 0, 11);
Eigen::SparseMatrix<double> A(3, 3);
A.setFromTriplets(triplet.begin(), triplet.end());
std::cout << A.innerIndexPtr()[0] << std::endl; // prints 0
std::cout << A.innerIndexPtr()[1] << std::endl; // prints 2
std::cout << std::endl;
std::cout << A.outerIndexPtr()[0] << std::endl; // prints 0
std::cout << A.outerIndexPtr()[1] << std::endl; // prints 2, but I thought it should print 0
std::cout << std::endl;
std::cout << A.valuePtr()[0] << std::endl; // prints 10
std::cout << A.valuePtr()[1] << std::endl; // prints 11
谁能给我解释一下innerIndexPtr 和outerIndexPtr 究竟代表什么?
【问题讨论】: