4

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

4

3 回答 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 回答