我有一个缓冲区,有许多正16位值(存储为双精度数),我想将其量化为8位(0-255个值). 根据Wikipedia,过程将是: 标准化16位值.即找到最大的并与此分开. 使用Q(x)公式,M = 8. 所以我想知道,如果
根据Wikipedia,过程将是:
>标准化16位值.即找到最大的并与此分开.
>使用Q(x)公式,M = 8.
所以我想知道,如果C有一个可以进行量化的函数,或者有人知道我可以使用的C实现吗?
满满的爱,
路易丝
unsigned char quantize(double d, double max) { return (unsigned char)((d / max) * 255.0); }
我不确定你的意思是“16位值;”在使用IEEE-754的任何系统上,双精度值均为64位.但是,如果您具有其他数字类型的值,则该过程实际上是相同的.