Библиотека Math.Net Numerics Transpose не работает

Итак, я хочу транспонировать матрицу, которую я определил с помощью

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 на 2, например:

1 1
2 2 
3 3

и мой желаемый результат:

1 2 3
1 2 3

person Afshinzkh    schedule 05.04.2016    source источник
comment
Хороший вопрос. Если вы хотите улучшить вопрос, показать нам желаемый результат будет плюсом :)   -  person Jeff B    schedule 05.04.2016
comment
Я добавил желаемое значение @JeffBridgeman   -  person Afshinzkh    schedule 05.04.2016


Ответы (1)


В этом случае транспонирование работает корректно:

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

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

Как задокументировано, конкретный построитель ожидает, что массив будет в основном порядке столбцов. Существует довольно много способов создания матриц. Если вы не можете переупорядочить массив в порядке столбцов, возможно, вам подойдет другой способ. См. раздел Создание матриц и векторов.

person Christoph Rüegg    schedule 05.04.2016