2012-04-28 10 views
15

Chcę utworzyć podstawowy program Matlab, który normalizuje podaną tablicę liczby całkowitej w podanym zakresie.Normalizacja w zakresie zmiennych [x, y] w Matlab

  • Wejścia są tablica [A1, A2, A3, A4, A5, A6, A7 ...], a zakres [x, y]
  • wyjściowy jest znormalizowana tablica.

Wszędzie jednak widzę normalizację w zakresie [0,1] lub [-1,1]. Nie można znaleźć normalizacji zakresu zmiennych. Będę wdzięczny, jeśli napiszesz kod matlab lub wzór na zakres zmienny.

Dziękuję za pomysły.

Odpowiedz

41

Jeśli chcesz normalizować do [x, y] najpierw normalizuje się [0, 1] poprzez:

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

Następnie przeskalować do [x,y] poprzez:

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

Kładzenie to wszystko razem:

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

Wielki rozwiązanie, ale przez chwile wydawało się, że Python i ja skopiowaliśmy - wkleiliśmy bez kibla king: P (i po przegłosowaniu i komentowaniu zajrzałem do tytułu i zobaczyłem, że było to dla Matlaba! przepraszam, ale to było bardzo pomocne!) –

+0

Co zrobić, jeśli nie mam zakresu wejściowego? Powiedzmy, że chciałbym umieścić numer, na przykład 345, w zakresie [-1,1] – superpuccio

+0

@superpuccio:? Czy możesz wyjaśnić, o co prosisz? – Max

Powiązane problemy