How to sum/group values in a matrix based on their index values in first column?!
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mohammed
el 28 de Sept. de 2014
Comentada: Jonathan
el 27 de Feb. de 2019
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 comentarios
Respuesta aceptada
Andrei Bobrov
el 28 de Sept. de 2014
[a,~,c] = unique(X(:,1));
out = [a, accumarray(c,X(:,2))];
2 comentarios
Jonathan
el 27 de Feb. de 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!
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!