How to sum/group values in a matrix based on their index values in first column?!
    5 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I have the following 2-D array and would like to sum the values in second column based on their index values in frist column. Please Note that I don't want to pre-define a vector of index values!
Any Ideas? Thanks!
X =  
 0     1
  100    89
  0     2
  50    24
  100   140
  0    11
  33    72
  67   317
  100   209
0 Commenti
Risposta accettata
  Andrei Bobrov
      
      
 il 28 Set 2014
        [a,~,c] = unique(X(:,1));
out = [a, accumarray(c,X(:,2))];
2 Commenti
  Jonathan
 il 27 Feb 2019
				I went from a sparse matrix representation followed by a summation, to your solution and it is tens of times faster!  
Previous implementation:
ValueReps = sparse(rows_i,cols_j,values(cols_j))
out = sum(ValueReps,2);
Great solution! Very efficient!
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Resizing and Reshaping 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!



