2017-02-10 4 views
0

Ich möchte ein einfaches 2D-Array in eine SparseMatrix konvertieren, um Leistung und Laufzeit zu verbessern, da es sich um ein Array mit einer Größe von 50.000-70.000 handelt.Wie konvertiert man ein großes 2D-Array mithilfe der Eigen-Bibliothek in eine dünn besetzte Matrix?

Bisher was ich habe:

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

Der Compiler kehrt Typenkonflikt Wert auf Argument 1 in der Liste Template-Parameter für 'Template-Klasse Eigen :: Map'. Ich verstehe, ich vermisse hier etwas, aber ich kann es nicht herausfinden.

+0

Ist die C++ Syntax? 'doppelte Matrix [numCells, numCells];'. Ich kann mich nicht erinnern, in der Lage zu sein, N-dimensionale Arrays auf diese Weise zu spezifizieren. – smac89

+0

Nein, das ist keine C++ Syntax. Ich hätte syntaktisch korrekt sein sollen. Entschuldigung. –

Antwort

1

Machen Sie eine dichte Matrix und wandelt es in eine spärliche Matrix:

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

Danke, das hat das Problem gelöst. –

Verwandte Themen