我有一个问题要问你。 我在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]
matrixC 1
我想知道是否可以拆分数组或列表中的每一列。不再是Math.Net矩阵。
答案 0 :(得分:0)
标准2d矩阵(或至少其数据)仅是常规2d array或array 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>
来表示(特别是稀疏的)矩阵,但这是稍有不同的问题。