MATLAB 是否支持 float16 运算?如果是这样,如何将双矩阵转换为float16?我正在对一个大型矩阵进行算术运算,其中 16 位浮点表示足以满足我的表示。用 double 数据类型表示需要 4 倍的内存。
问问题
4968 次
3 回答
5
你的矩阵满了吗?否则,如果有很多零值元素,请尝试sparse
-- 节省大量内存。
AFAIK,float16
不支持。你可以进入的最低数据类型float
是 with single
,它是一个 32 位数据类型:
A = single( rand(50) );
您可以乘以一个常数并转换为int16
,但您会失去精度。
于 2012-08-29T05:23:32.953 回答
5
Matlab 开箱即用支持的数值类如下:
int8
int16
int32
int64
uint8
uint16
uint32
uint64
single (32-bit float)
double (64-bit float)
加上复杂的数据类型。所以不幸的是,没有 16 位浮点数。
在 Mathworks 文件交换中,似乎有一个半精度浮点库。但是,它需要 MEX。
于 2012-08-29T07:06:23.213 回答
2
这可能是一个老问题,但我发现它是在寻找一个类似的问题(matlab 中的半精度)。
事情似乎及时发生了变化: https ://www.mathworks.com/help/fixedpoint/ref/half.html
matlab 现在似乎支持半精度。
于 2019-06-18T17:39:12.027 回答