How to normalize / denormalize a vector to range [-1;1]

denormalization, matlab, normalization

Solution

`norm` normalizes a vector so that its sum of squares are 1.

If you want to normalize the vector so that all its elements are between 0 and 1, you need to use the minimum and maximum value, which you can then use to denormalize again.

%# generate some vector
vec = randn(10,1);

%# get max and min
maxVec = max(vec);
minVec = min(vec);

%# normalize to -1...1
vecN = ((vec-minVec)./(maxVec-minVec) - 0.5 ) *2;

%# to "de-normalize", apply the calculations in reverse
vecD = (vecN./2+0.5) * (maxVec-minVec) + minVec

Problem

How can I normalize a vector to the range `[-1;1]` I would like to use function `norm`, because it will be faster. Also let me know how I can denormalize that vector after normalization?

Original source

Related problems