MATLAB是否支持float16操作?如果是这样,如何将双矩阵转换为float16?我正在对一个大矩阵进行算术运算,其中16位浮点表示足以表示我的表示。用双数据类型表示需要4倍的内存。
答案 0 :(得分:5)
Matlab支持的数字类如下:
int8
int16
int32
int64
uint8
uint16
uint32
uint64
single (32-bit float)
double (64-bit float)
加上复杂的数据类型。不幸的是,没有16位浮点数。
在Mathworks文件交换中,似乎有half-precision float library。但是,它需要MEX。
答案 1 :(得分:4)
你的矩阵满了吗?否则,尝试sparse
- 如果存在大量零值元素,则会节省大量内存。
AFAIK,float16
不受支持。您可以进入最低float
- 数据类型为single
,这是一个32位数据类型:
A = single( rand(50) );
你可以乘以一个常数并转换为int16
,但你会失去精确度。
答案 2 :(得分:1)
这可能是一个古老的问题,但我是在寻找类似问题(matlab中的半精度)时发现的。
事情似乎随着时间改变了: https://www.mathworks.com/help/fixedpoint/ref/half.html
现在,matlab支持nativeley半精度。