当前位置 : 主页 > 编程语言 > c++ >

C是否具有量化功能?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我有一个缓冲区,有许多正16位值(存储为双精度数),我想将其量化为8位(0-255个值). 根据Wikipedia,过程将是: 标准化16位值.即找到最大的并与此分开. 使用Q(x)公式,M = 8. 所以我想知道,如果
我有一个缓冲区,有许多正16位值(存储为双精度数),我想将其量化为8位(0-255个值).

根据Wikipedia,过程将是:

>标准化16位值.即找到最大的并与此分开.
>使用Q(x)公式,M = 8.

所以我想知道,如果C有一个可以进行量化的函数,或者有人知道我可以使用的C实现吗?

满满的爱,
路易丝

假设值d在区间[0.0,max]中:

unsigned char quantize(double d, double max)
{
    return (unsigned char)((d / max) * 255.0);
}

我不确定你的意思是“16位值;”在使用IEEE-754的任何系统上,双精度值均为64位.但是,如果您具有其他数字类型的值,则该过程实际上是相同的.

网友评论