在matlab中支持float16



MATLAB支持float16操作吗?如果是,如何将双矩阵转换为float16?我在一个大矩阵上做算术运算,其中16位浮点表示就足够了。用双数据类型表示需要4倍的内存。

您的矩阵是否已满?否则,尝试sparse——如果有很多零值元素,可以节省大量内存。

不支持AFAIK、float16float数据类型中的最低值是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似乎已经支持了半精度。

最新更新