Math.NET数字 - 来自双精度数组的矩阵<double> </double>

时间:2014-10-07 14:46:52

标签: c# arrays matrix mathnet

假设我有:

double[] someArray = new [] { 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44 };

有没有开箱即用的方法从这个数组中创建一个4x4矩阵而不必将其自己分成4个阵列?

我知道这样做很简单,但我正在探索开箱即用的东西。

修改

抱歉不清楚(以为标题是):

我想知道的是Math.NET Numerics中的Matrix构建器是否具有开箱即用的功能。类似的东西:

Matrix<double> someMatrix = DenseMatrix.OfArray(columns: 4, rows: 4, data: someArray);

1 个答案:

答案 0 :(得分:4)

通过查看documentation,您可以直接使用构造函数,或者使用函数OfColumnMajor(int rows, int columns, IEnumerable<double> columnMajor),如果您的数据是按列主要顺序。

代码如下所示:

//Using the constructor
Matrix<double> someMatrix = new DenseMatrix(4, 4, someArray)

//Using the static function
Matrix<double> someMatrix = DenseMatrix.OfColumnMajor(4, 4, someArray);

如果您的数据按行主顺序排列,则可以拆分为数组并使用OfRows函数之一,或者使用构造函数并转置矩阵,如Christoph所建议的那样。