スパース行列の割り当てについて、このページを読みました。残念ながらわかりません。誰かが例で私を助けることができますか?たとえば、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());