web-dev-qa-db-ja.com

C ++ Eigenスパース行列の特定の(row、col)インデックスにアクセスする方法は?

私はEigenのスパース行列を使用してC++で作業しています。通常の固有行列の場合と同じように、特定の行と列のインデックスに格納されているデータを読み取りたいと思います。

std::vector<Eigen::Triplet<double>> tripletList;

// TODO: populate triplet list with non-zero entries of matrix

Eigen::SparseMatrix<double> matrix(nRows, nCols);
matrix.setFromTriplets(tripletList.begin(), tripletList.end());

// TODO:  set iRow and iCol to be valid indices.

// How to read the value at a specific row and column index?
// double value = matrix(iRow, iCol);  // Compiler error

このタイプのインデックス作成操作を実行するにはどうすればよいですか?

7
MattKelly

試してください coeff

double value = matrix.coeff(iRow, iCol);

非constバージョンが必要な場合は、代わりに coeffRef を使用してください。 coeffRefを使用する場合、要素が存在しない場合は挿入されることに注意してください。

13
Avi Ginsburg

このコードは私のために働きます

 for (int i=0; i<matrix.rows(); ++i){
       cout << " i,j=" << i << "," << j << " value=" << matrix.coeff(i,j) << std::endl;
}
0
Hamza Siraj