A
Matlab에 MxN
다음 구조 의 행렬이 있습니다.
A=[23 10 3;
23 4 5;
456 6 8;
456 8 9;
456 12 14;
5 56 32]
의 주요 특징은 A
첫 번째 열에 특정 (고정되지 않은) 횟수만큼 반복되는 일부 값이 있다는 것입니다. 예 23
에서는 두 번 456
반복, 3 번 3
반복, 한 번 반복됩니다.
나는 대체 코드 조각 작성하는 몇 가지 조언을하고자 23
로를 1
, 456
와 2
, 5
와 3
I 변환 너무 A
로
A=[1 10 3;
1 4 5;
2 6 8;
2 8 9;
2 12 14;
3 56 32]
이 코드는 내가 원하는 것을 수행하지만 피하고 싶은 이중 루프가 포함되어 있습니다.
C=unique(A(:,1),'stable');
for j=1:size(C,1)
for h=1:size(A,1)
if A(h,1)==C(j)
A(h,1)=j;
end
end
end
unique
rahnema가 제안한대로 사용할 수 있습니다 . 문서 에서 더 많은 통찰력을 얻을 수 있습니다.
[C, ia, ic] = unique (A)는 인덱스 벡터 ia 및 ic도 반환합니다.
-A가 행렬 또는 배열이면C = A(ia)
및A(:) = C(ic)
.
즉 ic
, 세 번째 출력 인은 C
의 지정된 행에 해당하는 고유 벡터의 행을 반환합니다 A
. 특히, 'stable'
동일한 순서를 유지하기 위해 인수 를 사용하고 싶을 것입니다 . 그렇지 않으면 인덱스도 고유 한 값을 기준으로 정렬됩니다.
따라서 요약하면 의 세 번째 출력 unique
을의 첫 번째 열에 할당합니다 A
.
[~, ~, A(:,1)] = unique(A(:,1), 'stable');
산출:
>> A =
1 10 3
1 4 5
2 6 8
2 8 9
2 12 14
3 56 32
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다