首页 > 解决方案 > 从 math.net 到数组的矩阵

问题描述

我有一个问题问你。我在 C# 中创建了一个矩阵,使用 Math.Net 进行一些数学运算。现在我想将矩阵转换为 List 或将其列拆分为更多数组。我的目标是将这个矩阵传递给一个软件,该软件不从 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 是组合一些列表创建的矩阵矩阵。这是我的矩阵C。

矩阵C[0]

在此处输入图像描述

矩阵C 1

在此处输入图像描述

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

标签: c#mathnet-numerics

解决方案


标准二维矩阵(或至少是它的数据)只不过是一个普通的二维数组数组数组

这两种表示都可以使用 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 而不是数组,则可以使用System.Array 到 List 的转换来完成

如果你想完全避免 Math.Net 类,那么你只需要手动创建这样的数组。

PS:在某些情况下,用作表示(尤其是稀疏)矩阵的一种方式可能是有意义IDictionary<(int row,int column), TValue>的,但这是一个略有不同的问题。


推荐阅读