2017-05-10 7 views
-1

0에서 n-1까지 배열을 다시 스케일하려는 경우 n은 배열의 고유 요소 수입니다. 배열이 추천 독특한 요소를 갖는 경우, 예를 들어 :고유 한 요소에 따라 배열 크기를 조정하는 방법은 무엇입니까?

array = [0; 0; 0; 3; 3; 3; 3; 5; 5; 5; 6; 6] 

는 출력 30 내에 재 스케일링 될 것이다. 따라서 위 배열의 경우 다음과 같습니다.

output =[0; 0; 0; 1; 1; 1; 1; 2; 2; 2; 3; 3] 

어떻게 수행할까요?

+1

모든 요소를 ​​2로 나누고 싶습니까? – gnovice

+0

'0'에서 ***'2' ***로 정렬 하시겠습니까? 얼마나 정확하게? 원하는 배열의 마지막 3 요소는 *** 3' *** (0에서 2가 아님) –

+0

예를 들어 내 배열이 [0; 0; 0; 3; 7; 7; 7; 7]. 원하는 출력은 0 0 0 1 1 2 2 2 2 배열을 순차적으로 배열합니다. –

답변

3

각 고유 값을 0에서부터 총 숫자 -1까지의 숫자로 바꾸려면 배열에 처음 나타나는 순서대로 레이블을 지정한 다음 함수의 세 번째 출력을 사용할 수 있습니다 unique 이렇게 :

array = [0; 0; 0; 3; 3; 3; 3; 5; 5; 5; 6; 6]; 
[~, ~, label] = unique(array, 'stable'); 
label = label-1; 

label = 

    0 
    0 
    0 
    1 
    1 
    1 
    1 
    2 
    2 
    2 
    3 
    3 
+0

친애하는 @gnovice이 오류가 있습니다! 셀/고유 사용 오류 (줄 85) 입력 A는 문자열의 셀 배열이어야합니다. (줄 68)의 오류 [~, ~, 색인] = 고유 (배열, '안정'); –

+0

당신은 최고입니다! 고마운 친구 –