Min-Max normalization for uniform vectors

66 views (last 30 days)
JohnDylon
JohnDylon on 9 Oct 2016
Edited: JohnDylon on 19 Nov 2016
Hi,
Can anyone have any point on how to normalize a single number, say 1000, into a range of [-1,1]? Or even a uniform vector of say [1000 1000 1000 1000] into the same range as suggested above?
Normalizing a non-uniform data is trivial. Say the data is v=[1 3 5 7] and we normalize input 5, then
(v(3)-(min(v)))*(1-(-1))/(max(v)-min(v))+(-1)
is the formula I should follow. How about, v is uniform, thus generates a zero denominator in the formula?
JD
  2 Comments
JohnDylon
JohnDylon on 9 Oct 2016
I thought to assign 0 for the uniform vector, however this made me think of what the difference should be between [1000 1000 1000] and [2 2 2] if I scale down them to same number between [-1,1]? If I do that, I loose information.

Sign in to comment.

Answers (2)

Jan
Jan on 9 Oct 2016
A normalization requires a range of data. Either this range is predefined or it is determined by the values. A single number or a vector of equal numbers does not have a range. Therefore a normalization requires a predefined knowledge of the possible range of values. Without knowing "min(v)" and "max(v)", a normalization is not possible.
  1 Comment
JohnDylon
JohnDylon on 9 Oct 2016
You are right, however from scaling up or down point of view, there should be a way to represent points that are not in a given interval at another one. I suspect a probability distribution does the job.

Sign in to comment.


KSSV
KSSV on 9 Oct 2016
Other ways of normalizing are:
Divide each element by the norm of the array. doc norm for this.
Divide each element by maximum of the array.
  1 Comment
JohnDylon
JohnDylon on 9 Oct 2016
I thought such as z-score normalization as well, however it also may gives zero variance, which would make normalization broken at some point.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by