我需要将包含0到1024之间值的数组规范化为一个包含0到255之间值的数组。我在Java中这样做,但我想知道它对于#34;规范化数组"到底是什么意思。而不是要求确切的代码。
答案 0 :(得分:4)
在数学中规范化矢量意味着将每个元素分开 到某个值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 = || your_vector || = norm (your_vector)
。
所以我认为这就是这里的意思。
另见:
答案 1 :(得分:1)
在这种情况下归一化本质上意味着将原始比例中的值转换为不同比例的值。这样的事情会做到:
x = origVal / 1024;
xNorm = 255 * x;
您必须决定如何处理舍入。
例如:
.5 = 512 / 1024;
127.5 = 255 * .5;