Summing values for duplicate rows and columns
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ulrik William Nash
am 10 Jul. 2017
Kommentiert: Ulrik William Nash
am 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 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 10 Jul. 2017
Bearbeitet: Andrei Bobrov
am 10 Jul. 2017
A = accumarray([[1 2 3 1]',[1 1 2 1]'],[10 50 25 90]',[],[],[],1);
3 Kommentare
Weitere Antworten (1)
Walter Roberson
am 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 Kommentare
Walter Roberson
am 10 Jul. 2017
result = sparse(r, c, s);
[summary_r, summary_c, summary_s] = find(result);
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!