How to sum up of sum unique arrays in a matrix
4 次查看(过去 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:

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!