Summing values for duplicate rows and columns
4 views (last 30 days)
Show older comments
Ulrik William Nash
on 10 Jul 2017
Commented: Ulrik William Nash
on 10 Jul 2017
I have a vector of rows, columns, and values that I will use to create a sparse matrix:
rows = [1 2 3 1]; columns = [1 1 2 1]; values = [10 50 25 90];
Notice the duplicates:
(1,1) 10 (1,1) 90
What I need is to eliminate (row,column) duplicates by summing the values corresponding to these duplicates for each.
The solution in the current example is:
rows = [1 2 3]; columns = [1 1 2]; values = [100 50 25];
What operation on the three initial vectors reduce them to the solution above?
0 Comments
Accepted Answer
Andrei Bobrov
on 10 Jul 2017
Edited: Andrei Bobrov
on 10 Jul 2017
A = accumarray([[1 2 3 1]',[1 1 2 1]'],[10 50 25 90]',[],[],[],1);
3 Comments
More Answers (1)
Walter Roberson
on 10 Jul 2017
sparse(row, columns, values) is defined to do exactly this kind of totals.
If for some reason you need the simplified outputs afterwards, you can
[r, c, v] = find() on the sparse matrix.
2 Comments
Walter Roberson
on 10 Jul 2017
result = sparse(r, c, s);
[summary_r, summary_c, summary_s] = find(result);
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!