2017-06-09 2 views
0

Un échantillon de ma matrice est donnée ci-dessous:Somme pour tous les cas d'une valeur dans la colonne

[ 1 43; 
    1 15; 
    1 34; 
    5 15; 
    5 32; 
    7 2; 
    7 43; 
    7 16; 
    7 75 ] 

Je veux la somme de la colonne 2 pour chaque valeur unique dans la colonne 1. Ainsi, il serait:

[ 1 92;  
    5 47;  
    7 136 ] 

Il serait possible avec un for -loop, mais cela prendrait beaucoup de temps. Donc je cherche une solution plus rapide.

+1

Ce «134» ne devrait-il pas être plutôt «136»? –

+0

vous avez raison. Edité, merci – Rogier

Répondre

4

Vous pouvez utiliser le code suivant:

[C,~,ic] = unique(A(:,1)); 
result = [C, accumarray(ic,A(:,2))]; 

Vous pouvez également trouver unique et accumarray dans la documentation standard.