2012-04-28 5 views
15

주어진 범위의 정수 배열을 정규화하는 기본 matlab 프로그램을 만들고 싶습니다.Matlab의 가변 범위 [x, y] 정규화

  • 입력이 배열이다 [A1, A2, A3, A4, A5, A6, A7 ...], 및 범위 [X, y]는
  • 출력이 정규화 된 배열이다.

그러나 어디에서나 [0,1] 또는 [-1,1]의 범위에서 정규화 된 것을 볼 수 있습니다. 변수 범위 정규화를 찾을 수 없습니다. MATLAB 코드 또는 변수 범위에 대한 수식을 작성하면 감사하게 생각합니다.

아이디어를 제공해 주셔서 감사합니다.

답변

41

당신은 [x, y] 정상화 첫째 통해 [0, 1] 정상화하려면 : 모두 함께 퍼팅

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

대에게

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

는 다음을 통해 [x,y]로 확장 해결책을 찾았지 만 잠시 동안은 파이썬처럼 보였고 loo없이 복사하여 붙여 넣었다. 킹 : P (그리고 내가 upvoted 및 코멘트 후 나는 제목을보고 그것이 matlab에 대한 보았다! 미안하지만, 매우 도움이되었지만!) –

+0

입력 범위가 없다면 어떻게해야합니까? 예를 들어 345와 같이 숫자를 [-1,1] 범위에 넣고 싶다고 가정 해 보겠습니다. – superpuccio

+0

@superpuccio :? 당신이 묻고있는 것을 분명히 할 수 있습니까? – Max