문제 설명을 올바르게 이해하고 있다면 정확히 이것은 third output of the unique
기능입니다. 데이터를 검사하고 각 요소에 대해 세 번째 출력은 해당 요소에 대해 unique
의 출력으로 어떤 인덱스가 필요한지 알려주는 매핑을 제공합니다. 동시 적으로 이것은 1
부터 입력에있는 수만큼의 고유 한 레이블까지 연속적인 새로운 정수 매핑을 제공합니다.
그러나이 값은 unique
에 대한 입력으로 벡터 이외의 벡터에 대해 열이없는 열로 반환되므로 reshape
끝에이 입력과 동일한 치수로 다시 입력해야합니다.
따라서, 당신이해야하는 것은 단순히 :
[~,~,id] = unique(L);
id = reshape(id, size(L));
id
는 L
에 입력으로 사용 L
와 같은 크기의 행렬이 될 것입니다.
여기에 우리가 같은 페이지에 확인하기 위해 장난감 예제 : 여기
>> rng(123); L = randi(50, 10, 10)
L =
35 18 32 5 32 7 34 5 16 36
15 37 43 22 6 42 30 45 35 50
12 22 37 22 16 31 32 32 28 18
28 3 31 25 21 28 34 37 20 39
36 20 37 22 44 18 43 1 47 30
22 37 17 16 13 16 5 30 43 35
50 10 19 22 25 21 39 28 18 8
35 9 12 45 50 35 13 8 3 20
25 27 15 48 26 44 10 8 16 13
20 27 32 26 31 26 29 35 20 18
I 연속하지 않은 임의의 숫자의 10 × 10 행렬을 만들 수 있습니다. 3
>> unique(L).'
ans =
Columns 1 through 19
1 3 5 6 7 8 9 10 12 13 15 16 17 18 19 20 21 22 25
Columns 20 through 38
26 27 28 29 30 31 32 34 35 36 37 39 42 43 44 45 47 48 50
주의 사항 1에서 점프를하거나, 예를 들어 15-13에서 우리는이 행렬에 고유 번호를 모두 확인하여이 문제를 볼 수 있습니다. 제가 위에서 쓴 코드를 수행함으로써, 우리는 지금 얻을 : 당신이 여기에서 볼 수 있듯이
>> id
id =
28 14 26 3 26 5 27 3 12 29
11 30 33 18 4 32 24 35 28 38
9 18 30 18 12 25 26 26 22 14
22 2 25 19 17 22 27 30 16 31
29 16 30 18 34 14 33 1 36 24
18 30 13 12 10 12 3 24 33 28
38 8 15 18 19 17 31 22 14 6
28 7 9 35 38 28 10 6 2 16
19 21 11 37 20 34 8 6 12 10
16 21 26 20 25 20 23 28 16 14
이, 라벨 3 라벨이 연속으로 보장하기 위해 라벨이된다. 마찬가지로 레이블 13과 15는 연속 순서를 보장하기 위해 10과 11이됩니다. 다음은 출력의 모든 고유 값 목록입니다.
>> unique(id).'
ans =
Columns 1 through 19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Columns 20 through 38
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
쿨! 다행스럽게도 도움이되었습니다. 나는 이것이 당신이 찾고있는 것이라면 확실하지 않았다. 그러나 나는 그것이 있다고 생각한다! – rayryeng