问题
Does MATLAB support float16 operations? If so, how to convert a double matrix to float16? I am doing an arithmetic operation on a large matrix where 16-bit floating representation is sufficient for my representation. Representing by a double datatype takes 4 times more memory.
回答1:
Is your matrix full? Otherwise, try sparse
-- saves a lot of memory if there's lots of zero-valued elements.
AFAIK, float16
is not supported. Lowest you can go in float
-datatype is with single
, which is a 32-bit datatype:
A = single( rand(50) );
You could multiply by a constant and cast to int16
, but you'd lose precision.
回答2:
The numeric classes, which Matlab supports out of the box are the following:
int8
int16
int32
int64
uint8
uint16
uint32
uint64
single (32-bit float)
double (64-bit float)
plus the complex data type. So no 16-bit floats, unfortunately.
On Mathworks file exchange, there seems to be a half-precision float library. It requires MEX, however.
回答3:
This might be an old question, but I found it in search for a similiar problem (half precision in matlab).
Things seemed to have changed in time: https://www.mathworks.com/help/fixedpoint/ref/half.html
Half-precision seems to be supported nativeley by matlab now.
来源:https://stackoverflow.com/questions/12170950/is-float16-supported-in-matlab