2014-05-11 3 views
0

은 행 2 및도 5는 실시간으로 동일한 본 아니라 매트릭스 정보가 동일하지만 표현이 다른 행을 제거하는 방법은 무엇입니까?

A=1 1 0 
1 2 0.563826213141399 
1 3 1.18321595677734 
1 4 1.95685972913029 
2 1 0.563826213141399 
2 2 0 
2 3 0.830602192143995 
2 4 1.65196852337589 
2 5 1.77172232586001 
3 1 1.18321595677734 
3 2 0.830602192143995 
3 3 0 
3 4 0.821522975656861 
3 5 1.12716458303105 
3 6 1.78117938413852 

주어진. 동일한 행 중 하나를 제거하려면 어떻게해야합니까? 사용 unique 나는 이것을 할 수 없었다.

+0

'[~ IND]가 고유 = (A (: 3)' 안정화 '), out = A (ind, :)' – Divakar

+0

각 행을 오름차순 또는 내림차순으로 정렬하면 시작할 수 있습니다. 그러면 전통적인 비교 ('고유 '가 작동 함)로 중복 행을 식별하기가 더 쉬워집니다. 더 복잡한 방법은 행 요소에 대한 체크섬이 될 추가 열을 계산 한 다음 체크섬 열에서만 중복을 찾는 것입니다. – Hoki

+0

'B = unique (sort (A. ','descend ').', 'rows');'정렬 방식을''descend'' 또는''ascend''로 선택할 수 있습니다. – Hoki

답변

0

가중치가있는 인접성 매트릭스를 사용하여 그래프를 표현한 것처럼 보입니다.
정확하게 이해한다면 가장자리 당 하나의 항목을 갖고 싶습니다.

당신은 인접 행렬의 위 삼각

A = sparse(A(:,1), A(:,2), A(:,3), max(A(:,2)), max(A(:,2))); 
[ii jj wij] = find(triu(A)) ; 
disp([ii jj wij]) 

출력을 취함으로써이를 수행 할 수

1 2 0.563826 
1 3 1.183216 
2 3 0.830602 
1 4 1.956860 
2 4 1.651969 
3 4 0.821523 
2 5 1.771722 
3 5 1.127165 
3 6 1.781179