4

私は次のようなものを計算したい: Matrix<float> * Matrix<double>

には約 6M*3 の要素があります。結果を得るためにどうすればMatrix<float>変換できますか。Matrix<double>Matrix<float>Matrix<float>

4

2 に答える 2

3

Map次の関数を使用して double 行列引数を float 行列に変換できます。

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

または代わりに

Matrix<float> m2 = m1.Map(Convert.ToSingle);
于 2015-05-12T16:28:01.843 に答える
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();
}
于 2015-05-12T15:29:26.453 に答える