3
我使用C#和Math.net
如何將矩陣<double>轉換爲Matrix <float>?
我想計算是這樣的:Matrix<float> * Matrix<double>
的Matrix<float>
有大約6M * 3元,我怎麼能轉換Matrix<double>
到Matrix<float>
,這樣我可以得到一個Matrix<float>
結果。
我使用C#和Math.net
如何將矩陣<double>轉換爲Matrix <float>?
我想計算是這樣的:Matrix<float> * Matrix<double>
的Matrix<float>
有大約6M * 3元,我怎麼能轉換Matrix<double>
到Matrix<float>
,這樣我可以得到一個Matrix<float>
結果。
您可以使用雙矩陣參數轉換爲浮動矩陣該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);
這裏是如何的雙數組轉換爲浮動數組,然後你只需要你的矩陣轉換成數組,反之亦然
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();
}
「非常大」有多大,並創建了原始「Matrix」(但使用「double」值)的副本,以避免緩慢/耗盡內存? (如果你最後還沒有嘗試過,那看起來是最簡單的選擇......) –
爲什麼結果矩陣不能是矩陣? –
Dzyann
這個矩陣有大約6M * 3個元素 –
xcl