2012-04-28 3 views
15

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

  • Входы массив [а1, а2, а3, а4, а5, а6, а7 ...], а диапазон [х, у]
  • Выход нормализуется массива.

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

Благодарим вас за идеи.

ответ

41

Если вы хотите, чтобы нормализовать [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; 
+1

Большой решение, но для моментов казалось, что Python и я скопировали - вставляли без loo king: P (и после того, как я поддержал и прокомментировал, я просмотрел название и увидел, что это было для Matlab! извините, хотя это было очень полезно!) –

+0

Что делать, если у меня нет диапазона ввода? Предположим, что я хотел бы разместить число, например 345, в диапазоне [-1,1] – superpuccio

+0

@superpuccio:? Можете ли вы уточнить, что вы спрашиваете? – Max

Смежные вопросы