2012-12-21 5 views
3

matlab에서 표의 부분합을 가져 가고 싶습니다. 두 열의 값이 같으면 값을 가져 와서 항목이 있으면 추가하십시오. 우리는 예를 부여하면 다음Matlab에서 소계 계산

는 소스 행렬이다 :

A = [1 2 3; 
1 2 2; 
1 4 1; 
2 2 1; 
2 2 3]; 

출력은 다음과 같을 것이다 :

B = [1 2 5; 
1 4 1; 
2 2 4]; 

첫 번째 두 열이 동일한 경우, 세 번째 열이 합계. 여러 번 반복하지 않고도 간단한 방법이 있습니까?

+0

에 오신 것을 환영합니다 스택 오버플로! 너 뭐 해봤 니? – IronMan84

답변

5

당신은 uniqueaccumarray의 조합으로이 작업을 수행 할 수 있습니다

%# find unique rows and their corresponding indices in A 
[uniqueRows,~,rowIdx]=unique(A(:,1:2),'rows'); 

%# for each group of unique rows, sum the values of the third column of A 
subtotal = accumarray(rowIdx,A(:,3),[],@sum); 

B = [uniqueRows,subtotal];