在matlab中是否支持float16?

时间:2012-08-29 04:34:23

标签: matlab floating-point ieee-754

MATLAB是否支持float16操作?如果是这样,如何将双矩阵转换为float16?我正在对一个大矩阵进行算术运算,其中16位浮点表示足以表示我的表示。用双数据类型表示需要4倍的内存。

3 个答案:

答案 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半精度。