规范化数组是什么意思?

5

我需要将一个包含0到1024之间值的数组标准化为包含0到255之间值的数组。我正在使用Java进行此操作,但我想了解“标准化数组”究竟是什么意思,而不是询问准确的代码。


3
“将数组标准化”指的是对数组应用标准化过程。标准化可以使数据更易于比较和分析。 - Oliver Charlesworth
如果实际上是1023而不是1024,则可以进行整数除法运算除以4。 - Dawood ibn Kareem
@DavidWallace 不适合0-255范围:1023/4 == 255.75 - Erwin Bolwidt
3
@ErwinBolwidt - 实际上,1023/4 == 255。你可以试一下。我故意指定了整数除法。 - Dawood ibn Kareem
2个回答

10
在数学中,规范化一个向量意味着将其每个元素除以某个值 V,使得结果向量的长度/范数为 1。结果需要的 V 等于向量的长度(范数)。假设你有这个数组 [-3, +4],它的长度(欧几里得度量)为:V = sqrt((-3)^2 + (+4)^2) = 5。因此,相应的归一化向量是:[-3/5, +4/5]。现在它的长度为:sqrt ( (-3/5)^2 + (+4/5)^2 ),即 1。你可以使用另一种度量方法(例如,我认为曼哈顿距离),但思想是相同的。将数组的每个元素除以 || your_vector || = norm (your_vector) 中的 V。因此,我认为这就是这里所指的。另请参阅:

http://www.fundza.com/vectors/normalize/

http://mathworld.wolfram.com/NormalizedVector.html


2
在这种情况下,规范化实质上是将原始比例尺中的值转换为不同比例尺上的值。可以使用以下方法来完成此操作:
x = origVal / 1024;
xNorm = 255 * x;

您需要决定如何处理四舍五入。

例如:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接