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

后端 未结 4 1590
醉话见心
醉话见心 2020-11-29 05:39

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

4条回答
  •  既然无缘
    2020-11-29 06:02

    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
    

提交回复
热议问题