Search code examples
javaarraysnormalize

What does it mean to normalize an array?


I need to normalize an array that contains values between 0 to 1024 into an array that will contain values between 0-255. I am doing this in Java but I am wanting to understand what exactly does it mean to "normalize an array" rather than asking for exact code.


Solution

  • To normalize a vector in math means to divide each of its elements
    to some value V so that the length/norm of the resulting vector is 1.
    Turns out the needed V is equal to the length (norm) of the vector.

    Say you have this array.

    [-3, +4]

    Its length (in Euclid metric) is: V = sqrt((-3)^2 + (+4)^2) = 5

    So its corresponding normalized vector is:

    [-3/5, +4/5]

    Its length is now: sqrt ( (-3/5)^2 + (+4/5)^2 ) which is 1.

    You can use another metric (e.g. I think Manhattan distance)
    but the idea is the same. Divide each element of your array
    by V where V = || your_vector || = norm (your_vector).

    So I think this is what is meant here.

    See also:

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

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