从math.net到数组的矩阵

时间:2019-08-04 14:26:20

标签: c# mathnet-numerics

我有一个问题要问你。 我在C#中创建了一个矩阵,使用Math.Net进行一些数学运算。 现在,我想在列表中转换矩阵或在更多数组中拆分其列。 我的目标是将此矩阵传递给一种软件,该软件不会从Math.Net中读取矩阵,而只会从C#代码中读取列表,数组等。

谢谢!

编辑: 这是我的代码:

Matrix<double>[] matrixC = new Matrix<double>[ins];
            for (int i = 0; i < ins; i++)
            {
                matrixC[i] = Matrix<double>.Build.DenseOfColumns(CjTR[i]);
            }

matrixC是将某些列表组装而成的矩阵矩阵。 这是我的matrixC。

matrixC [0]

enter image description here

matrixC 1

enter image description here

我想知道是否可以拆分数组或列表中的每一列。不再是Math.Net矩阵。

1 个答案:

答案 0 :(得分:0)

标准2d矩阵(或至少其数据)仅是常规2d arrayarray of arrays

这两种表示形式都可以使用Matrix类上的标准Math.Net方法创建:

var matrix = MathNet.Numerics.LinearAlgebra.Matrix<double>.Build.Random(3, 4);
var matrixAs2DArray = matrix.ToArray();
var matrixAsJaggedArrayPerColumn = matrix.ToColumnArrays();
var matrixAsJaggedArrayPerRow = matrix.ToRowArrays();

如果您需要使用列表/ IList而不是数组,则可以使用Conversion of System.Array to List

如果要完全避免使用Math.Net类,则只需手动create这样的arrays

P.S .:在某些情况下,可以使用IDictionary<(int row,int column), TValue>来表示(特别是稀疏的)矩阵,但这是稍有不同的问题。