Disons que j'ai deux (grands) vecteurs a=[0 0 0 0 0]
et b=[1 2 3 4 5]
de la même taille et un vecteur d'index ind=[1 5 2 1]
avec des valeurs dans {1, ..., longueur (a)}. Je voudrais calculerVectorisation ajout de sous-zone
for k = 1:length(ind)
a(ind(k)) = a(ind(k)) + b(ind(k));
end
% a = [2 2 0 0 5]
C'est, je veux ajouter les entrées de b
déclarées dans ind
-a
y compris la multiplicité.
a(ind)=a(ind)+b(ind);
% a = [1 2 0 0 5]
est beaucoup plus rapide, bien sûr, mais ignore les indices qui apparaissent plusieurs fois.
Comment puis-je accélérer le code ci-dessus?
Quel est le comportement attendu d'un index qui apparaît plusieurs fois? Souhaitez-vous effectuer l'ajout sur cet index une seule fois? – drorco
Non, je voudrais ajouter l'index aussi souvent qu'il apparaît. Tout comme dans la boucle for-dessus. – Julian
Je ne comprends pas pourquoi a (ind) + b (ind) ignore les indices qui apparaissent plusieurs fois. – GameOfThrows