2012-12-17 1 views
3

MATLAB을 사용하고 있습니다. 숫자가 [1; N]N 요소가있는 행렬이 있지만 그 사이에 K 숫자가 N보다 훨씬 작습니다. 효율적인 행렬에 숫자 [1; K] 만 포함되도록 레이블을 다시 지정하는 방법은 무엇입니까? 동일한 수는 같아야하며 같지 않은 수는 같지 않아야합니다.행렬의 레이블을 다시 지정하여 모든 고유 번호를 1.N으로 바꿉니다.

K = 4, N = 10

[1 4 8 9 4 1 8 9 4 1] -> [1 2 3 4 2 1 3 4 2 1] 
  • N ~ 1,000,000
  • K ~ 10000

답변

8

사용 unique의 제 3 출력 인자 :

a=[1 4 8 9 4 1 8 9 4 1]; 
[~, ~, b] = unique(a) 
b = 
    1  2  3  4  2  1  3  4  2  1 
+0

Brill 고마워! – Mikhail

+0

'고유'는 모든 다른 숫자를 할당하므로 입력에 NaN이있는 경우이 방법은 작동하지 않습니다. 그래도 문제가되지 않을 수도 있습니다. –

+0

네, 저에게는이 문제가 없습니다. – Mikhail

관련 문제