MATLAB: Normalize function has a different result on a matrix vs single value

normalize

I have a matrix like:
B=[ 1.5035; 1.5728; 1.6485; 1.5369; 1.5467; 1.572; 1.5374; 1.787; 1.5825; 1.6905];
Using normalize function like normalize(B,'range') has this result:
ans = 0
0.24444
0.51146
0.11781
0.15238
0.24162
0.11958
1
0.27866
0.65961
But when I use it for a single value like normalize(B(2,:),'range') the result is 0 but the result for row number 2 in ans is 0.24444, why its different and how can I fix it?

Best Answer

normalize subtracts the minimum, and divides by the difference between the minimum and maximum. When there are only finite values and two or more different values, the minimum maps to 0 and the maximum maps to 1.
When you only pass in values that are all the same, then after you subtract off the minimum what is left is only 0.
normalize always depends on the entire set of input values. It does not do any kind of absolute normalization that would work on a single value at a time.
Perhaps you want a mapping such as zscore under the assumption of mean 0 standard deviation 1.
Related Question