How to sum up of sum unique arrays in a matrix
조회 수: 3 (최근 30일)
이전 댓글 표시
Suppose I have a matrix a:
a = [12,7,1,1,1,1;28,5,2,1,1,1;28,4,2,2,1,1;32,10,2,1,1,1;32,10,2,2,1,1;37,2,4,1,1,1;48,11,4,1,1,1;72,10,2,1,1,1;72,10,2,2,1,1;73,1,4,1,1,1;73,6,2,1,1,1;73,7,2,2,1,1];
first array in each row is a unique id of that row. So, some of rows have same unique id. I need a matrix that give me sum up all arrays with unique id (for example: (2,2) with (3,2); (2,4) with (3,4)). such as:
b = [12,7,1,1,1,1;28,9,4,3,2,2;32,20,4,3,2,2;37,2,4,1,1,1;48,11,4,1,1,1;72,20,4,3,2,2;73,14,8,4,3,3];
Such as this example:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/146111/image.jpeg)
댓글 수: 0
채택된 답변
Azzi Abdelmalek
2014년 11월 14일
편집: Azzi Abdelmalek
2014년 11월 14일
[ii,jj,kk]=unique(a(:,1))
out=[ii cell2mat(accumarray(kk,1:numel(kk), [],@(x) {sum(a(x,2:end),1)}))]
댓글 수: 0
추가 답변 (2개)
Roger Stafford
2014년 11월 14일
Assuming like IDs are already grouped together as in your example,
t = [true;diff(a(:,1))~=0;true];
b = [zeros(1,size(a,2)-1);cumsum(a(:,2:end),1)];
b = [a(t(2:length(t)),1),diff(b(t,:))];
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!