Нормализация в переменном диапазоне [x, y] в Matlab

Я хочу создать базовую программу Matlab, которая нормализует данный массив целых чисел в заданном диапазоне.

  • Входы представляют собой массив [a1, a2, a3, a4, a5, a6, a7...], а диапазон [x, y]
  • Вывод - это нормализованный массив.

Но везде, я вижу нормализацию в диапазоне от [0,1] или [-1,1]. Не удается найти нормализацию диапазона. Я буду признателен, если вы напишете код Matlab или формулу для диапазона переменных.

Спасибо за идеи.

Ответы

Ответ 1

Если вы хотите нормализовать до [x, y], сначала нормализуйтесь до [0, 1] с помощью:

 range = max(a) - min(a);
 a = (a - min(a)) / range;

Затем масштабируйте до [x,y] с помощью:

 range2 = y - x;
 a = (a * range2) + x;

Объединяя все это:

 function normalized = normalize_var(array, x, y)

     % Normalize to [0, 1]:
     m = min(array);
     range = max(array) - m;
     array = (array - m) / range;

     % Then scale to [x,y]:
     range2 = y - x;
     normalized = (array*range2) + x;