Summing values for duplicate rows and columns
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ulrik William Nash
il 10 Lug 2017
Commentato: Ulrik William Nash
il 10 Lug 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 Commenti
Risposta accettata
Andrei Bobrov
il 10 Lug 2017
Modificato: Andrei Bobrov
il 10 Lug 2017
A = accumarray([[1 2 3 1]',[1 1 2 1]'],[10 50 25 90]',[],[],[],1);
3 Commenti
Più risposte (1)
Walter Roberson
il 10 Lug 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 Commenti
Walter Roberson
il 10 Lug 2017
result = sparse(r, c, s);
[summary_r, summary_c, summary_s] = find(result);
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!