2016-04-05 8 views
1

Deshalb möchte ich eine Matrix transponieren, die ich mitMath.Net Numerik Bibliothek Transponieren nicht funktioniert

definiert
using MathNet.Numerics.LinearAlgebra.Double; 
    var MatrixValues = new double[]{1,1,2,2,3,3} 
    var M = Matrix<double>.Build; 
    var C = M.Dense(3,2,MatrixValues); 
    var TR = C.Transpose(); 

So das Ergebnis bekomme ich eine sehr seltsame Matrix ist, die nicht die Transponierung ist. Ich denke, das liegt daran, dass die Matrix als DenseColumnMajor definiert ist, aber wie kann ich das ändern?

So habe ich eine 3 durch 2-Matrix wie:

1 1 
2 2 
3 3 

und mein gewünschtes Ergebnis ist:

+0

Gute Frage. Wenn Sie die Frage verbessern möchten, würde uns zeigen, die gewünschte Ausgabe wäre ein Plus :) –

+1

Ich habe den gewünschten Wert @ Jeff Bridgman hinzugefügt – Afshinzkh

Antwort

1

Transponieren korrekt funktioniert in diesem Fall:

C: 
DenseMatrix 3x2-Double 
1 2 
1 3 
2 3 

TR: 
DenseMatrix 2x3-Double 
1 1 2 
2 3 3 

Wie dokumentiert Der spezifische Builder erwartet, dass das Array in der Reihenfolge der Spalten angeordnet ist. Es gibt viele Möglichkeiten, Matrizen zu erstellen. Wenn Sie das Array nicht in der Reihenfolge der Spaltenreihenfolge neu anordnen können, funktioniert möglicherweise ein anderer Weg besser für Sie. Siehe Creating Matrices and Vectors.

Verwandte Themen