Java 规范化数组意味着什么?

Java 规范化数组意味着什么?,java,arrays,normalize,Java,Arrays,Normalize,我需要将包含0到1024之间的值的数组规范化为包含0到255之间的值的数组。我在Java中这样做,但我想了解“规范化数组”而不是要求精确的代码到底意味着什么。在数学中规范化向量意味着划分它的每个元素 设置为某个值V,以使结果向量的长度/范数为1。 结果表明,所需的V等于向量的长度(范数) 假设你有这个数组 [-3,+4] 其长度(欧几里德度量)为:V=sqrt(-3)^2+(+4)^2)=5 所以它对应的归一化向量是: [-3/5,+4/5] 它的长度现在是:sqrt(-3/5)^2+(+4/5

我需要将包含0到1024之间的值的数组规范化为包含0到255之间的值的数组。我在Java中这样做,但我想了解“规范化数组”而不是要求精确的代码到底意味着什么。

在数学中规范化向量意味着划分它的每个元素
设置为某个值V,以使结果向量的长度/范数为1。
结果表明,所需的V等于向量的长度(范数)

假设你有这个数组

[-3,+4]

其长度(欧几里德度量)为:
V=sqrt(-3)^2+(+4)^2)=5

所以它对应的归一化向量是:

[-3/5,+4/5]

它的长度现在是:
sqrt(-3/5)^2+(+4/5)^2)
,即1

您可以使用另一个指标(例如,我认为曼哈顿距离)
但想法是一样的。将数组中的每个元素分开
通过
V
其中
V=| | | | | | |=范数(你的|向量)

所以我想这就是这里的意思

另见:


在本例中,“规格化”实质上意味着将原始刻度中的值转换为不同刻度上的值。像这样的东西可以做到:

x = origVal / 1024;
xNorm = 255 * x;
您必须决定如何处理舍入

例如:

.5 = 512 / 1024;
127.5 = 255 * .5;

“规范化数组”意味着将的过程应用于数组。如果它实际上最多是1023,而不是1024,则只需将整数除以4即可。@DavidWallace不适用于0-255范围:
1023/4==255.75
@ErwinBolwidt-实际上,
1023/4==255
。试试看。我特意指定了整数除法。