如何将矩阵<double>转换为Matrix <float>?

时间:2015-05-12 15:24:49

标签: c# mathnet

我正在使用c#和Math.net

我想计算类似:Matrix<float> * Matrix<double>

的内容

Matrix<float>有大约6M * 3个元素,如何将Matrix<double>转换为Matrix<float>,以便我可以得到Matrix<float>个结果。

2 个答案:

答案 0 :(得分:2)

您可以使用Map函数将双矩阵参数转换为浮点矩阵:

Matrix<double> m1 = Matrix<double>.Build.Random(6000000,3);
Matrix<float> m2 = m1.Map(x => (float)x);

或者

Matrix<float> m2 = m1.Map(Convert.ToSingle);

答案 1 :(得分:1)

以下是如何将double数组转换为float数组,然后只需要将矩阵转换为数组,反之亦然

public static float[][] Convert(double[][] mtx)
{
    var floatMtx = new float[mtx.Length][];
    for (int i = 0; i < mtx.Length; i++)
    {
        floatMtx[i] = new float[mtx[i].Length];
        for (int j = 0; j < mtx[i].Length; j++)
            floatMtx[i][j] = (float)mtx[i][j];
    }
    return floatMtx;
}
Or:

public static float[][] Convert(double[][] mtx)
{
    return mtx.Select(i => i.Select(j => (float)j).ToArray()).ToArray();
}