2016-07-20 23 views
0

Mit Eigen 3.2.1, ich versuche, wie unten ein Eigen::DiagonalMatrix in MarketIO-Format zu speichern:So speichern Sie Eigen :: DiagonalMatrix im MarketIO-Format in Eigen?

MarketIO.h|236|error: 'const class Eigen::DiagonalMatrix<double, -1>' has no 
member named 'nonZeros' 

Was ist das Problem hier:

#include <Eigen/Sparse> 
#include <Unsupported/Eigen/SparseExtra> 
using namespace Eigen; 
... 

size_t n = XX; 
DiagonalMatrix<num_t, Dynamic> W(n); 
... 
saveMarket(W, "W.txt"); // error propagates from here 

Allerdings bin ich die folgende Fehlermeldung zu bekommen? Ist das überhaupt implementiert für Diagonal Matrices?

Vielen Dank im Voraus für jede Hilfe.

+0

versuchen 3.2.9 oder 3.3-Beta1 dann – kangshiyin

+0

@kangshiyin: Sind Sie sicher, dass es dort in 3.2.9+? –

+0

Nein! Zumindest in 'Eigen 3.2.9' ist' .nonZeros() 'nicht definiert für' DiagonalMatrix' in 'DiagonalMatrix.h' und immer noch' MarketIO.h' benutzt '.nonZeros()'. –

Antwort

0

Okay! Die einzige Lösung für jetzt mit minimalem Aufwand ist folgendes zu verwenden:

saveMarketVector(W.diagonal(), "W.txt");