2013-05-29 2 views
0

어제 매트릭스가 두 배가되는 행을 제거하는 것에 대해 질문이 있었고 answer이 발생했습니다. 매트릭스에서 특정 행을 생략하는 이유를 알 수 없습니다.matlab : 행 중복 제거

0.3000 2.0000  
0.7000 3.0000 

내가

내 자신에 뭔가를 썼다

[~,b] = unique(tmp2(:,1)); 
tmp2(b,:) 

함께 할 것을 시도 :

tmp2 = 

    0 1.0000 
0.1000 1.0000 
0.2000 1.0000 
0.3000 1.0000 
0.3000 2.0000 
0.4000 2.0000 
0.5000 2.0000 
0.6000 2.0000 
0.7000 2.0000 
0.7000 3.0000 
0.8000 3.0000 
0.9000 3.0000 
1.0000 3.0000 
1.1000 3.0000 
1.2000 3.0000 

내가 행을 제거해야합니다 매트릭스와

tmp3 = []; 

for i=1:numel(tmp2(:,1))-1 
    if tmp2(i,1) == tmp3  
     tmp2(i,:) = []; 
    end 
    tmp3 = tmp2(i,1); 
end 

그러나 모든 메소드는 제거 할 첫 행을 생략하는 것 같습니다 ... 제가 이미 프로그래밍 시간에 고치려고 노력하면서 몇 시간을 보냈으므로 (프로그래밍에 빠졌습니다 ...) 주목할만한 점이 있습니다. 매트릭스는 일례이지만, 두 행은 첫 번째 열에서 동일한 값이 일반적으로 만약 지금 같은 unique 전화 올바른 트랙이었다 번째

답변

0

...

tmp2 = [... 
0 1 
1 1 
2 3 
2 5 
3 5 
4 7 
5 4 
5 8 
6 1 
]; 

제거해야 그랬지만 깃발 first을 사용하여 첫 번째 고유 항목을 가져옵니다.

[~,li]=unique(tmp2(:,1),'first'); 
tmp_unique = tmp2(li,:);