2017-02-10 17 views
0

パフォーマンスと実行時間を改善するために、単純な2D配列をSparseMatrixに変換したいと考えています。これは、サイズが50,000-70,000程度の配列を扱っているためです。Eigenライブラリを使用して大きな2D配列を疎行列に変換する方法は?

これまでのところ私が持っているもの:「テンプレートクラス固有::地図」のテンプレートパラメータリスト内の引数1で

SparseMatrix<double> sp; 
sp.resize(numCells,numCells); 
double Matrix[numCells,numCells]; 
Matrix = Map<SparseMatrix>(Matrix,numCells,numCells); 

コンパイラリターン型の不一致値。 私はここに何かがないことを理解していますが、私はそれを理解できません。

+0

は、C++の構文ですか? 'double Matrix [numCells、numCells];'。私はそのようにしてN次元の配列を指定できることを思い出しません。 – smac89

+0

それはC++構文ではありません。私は構文的に正しいはずでした。謝罪。 –

答えて

1

密行列を作成し、スパース行列に変換:

double matrix[numCells * numCells]; // 1d array representation of your matrix 
SparseMatrix<double> sp = Map<MatrixXd>(matrix,numCells,numCells).sparseView(); 
+0

これは問題を解決しました。 –

関連する問題