1

だから、私が定義した行列を転置したい

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();

だから私が得る結果は、転置ではない非常に奇妙な行列です。これはマトリックスが DenseColumnMajor と定義されているためだと思いますが、どうすれば変更できますか?

したがって、次のような 3 x 2 の行列があります。

1 1
2 2 
3 3

私の望む結果は次のとおりです。

1 2 3
1 2 3
4

1 に答える 1

1

この場合、転置は正しく機能します。

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

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

文書化されているように、特定のビルダーは配列が列優先順であることを想定しています。マトリックスを作成する方法はいくつかあります。配列を列優先順に並べ替えることができない場合は、別の方法が適している可能性があります。行列とベクトルの作成を参照してください。

于 2016-04-05T17:04:59.260 に答える