J'ai deux tableaux de la forme suivante:Matlab: sommation conditionnelle
v1 = [ 1 2 3 4 5 6 7 8 9 ... ]
c2 = { 'a' 'a' 'a' 'b' 'b' 'c' 'c' 'c' 'c' ... }
(toutes les valeurs sont que des exemples, aucun modèle ne peut être pris en charge dans les données réelles v1
et c2
ont la même taille.)
Je veux obtenir un vecteur contenant la sommation des composantes de v1
correspondant à des valeurs égales en c2
. Dans l'exemple ci-dessus, le premier composant du vecteur résultant serait 1+2+3
, le second 4+5
, et ainsi de suite.
Je sais que je peux le faire dans une boucle de la forme:
uni_c2 = unique(c2);
result = zeros(size(uni_c2));
for i = 1:numel(uni_c2)
result(i) = sum(v1(strcmp(uni_c2(i),c2)));
end
Y at-il une seule commande ou d'une manière vectorisée de faire la même opération?
"la sommation des composantes de v1 correspondant à des valeurs égales en c2". valeurs consécutives en c2?Par exemple: v1 = [1 2 3 4], c2 = ['a', 'b', 'a', 'a'], quel est le résultat attendu dans cet exemple? –