MATLAB支持float16操作吗?如果是,如何将双矩阵转换为float16?我在一个大矩阵上做算术运算,其中16位浮点表示就足够了。用双数据类型表示需要4倍的内存。
您的矩阵是否已满?否则,尝试sparse
——如果有很多零值元素,可以节省大量内存。
不支持AFAIK、float16
。float
数据类型中的最低值是single
,这是一种32位数据类型:
A = single( rand(50) );
您可以乘以一个常数并强制转换为int16
,但会失去精度。
Matlab开箱即用支持的数字类如下:
int8
int16
int32
int64
uint8
uint16
uint32
uint64
single (32-bit float)
double (64-bit float)
加上复杂的数据类型。不幸的是,没有16位浮点。
在Mathworks文件交换中,似乎有一个半精度的浮点库。然而,它需要MEX。
这可能是一个老问题,但我在寻找类似的问题时发现了它(在matlab中为半精度)。
事情似乎随着时间的推移发生了变化:https://www.mathworks.com/help/fixedpoint/ref/half.html
现在matlab似乎已经支持了半精度。