15

をに変換する方法Eigen::Matrix<double,Dynamic,Dynamic>Eigen::SparseMatrix<double>?密行列を反復処理する代わりに、より良い方法を探しています

4

2 に答える 2

27

そのためにsparseView()メソッドを使用できます。

sparse = dense.sparseView();

許容誤差を指定することもできます。

sparse = dense.sparseView(epsilon,reference);

于 2012-10-24T06:11:51.123 に答える
1

密行列の作成を制御しますか?

そうしないと、すべての行列要素を読み取って空かどうかを確認せずにこれを行う方法はありません。

密行列を自分で作成する場合は、必要なときに疎に変換するのに役立つデータ構造を作成できます。たとえば、各行列行に、その行のnull以外の要素の数を格納できます。次に、null以外の要素が0の行をスキップし、カウントが示す数のnull以外の要素を確認したら、任意の行の変換を停止できます。

保存する追加データは、予想されるスパース行列のタイプによって異なります。一般的なスパース行列パターンは、スパース行列に浮かぶ密な部分行列です。密行列を作成するときに、これらの密領域を非指定にすることができます。たとえば、行ごとの要素数を保存するのではなく、特定のx、yオフセットでnull以外の長方形の領域のリストを保持します。

于 2012-10-23T15:46:41.413 に答える