-10

I have to normalize a list of values in range [-1;1]. I have found this code in c# but i don't know this language. Someone can help me to translate this in c++?

List<int> list = new List<int>{-5,-4,-3,-2,-1,0,1,2,3,4,5};
double scaleMin = -1; //the normalized minimum desired
double scaleMax = 1; //the normalized maximum desired

double valueMax = list.Max();
double valueMin = list.Min();
double valueRange = valueMax - valueMin;
double scaleRange = scaleMax - scaleMin;

IEnumerable<double> normalized = 
list.Select (i =>
    ((scaleRange * (i - valueMin))
        / valueRange)
    + scaleMin);
JasonMArcher
  • 14,195
  • 22
  • 56
  • 52

1 Answers1

3

The code...

IEnumerable<double> normalized = list.Select (i => ((scaleRange * (i - valueMin)) / valueRange) + scaleMin);

... can be re-written (in C#) without lambda expressions like so...

IEnumerable<double> normalized = new List<double>();
for (var elem in list)
{
    normalized.Add(((scaleRange * (elem - valueMin)) / valueRange) + scaleMin);
}

You should be able to translate that algorithm to any language you need.

Jesse Webb
  • 43,135
  • 27
  • 106
  • 143