How do I efficiently add values of same indices to a vector?

16 visualizaciones (últimos 30 días)
Tzaki
Tzaki el 25 de En. de 2022
Editada: Tzaki el 25 de En. de 2022
Hello, I am pretty much new to MATLAB.
I have a large vector vec1=[2 7 4 3], a small vector vec2=[1 10 100], and an index vector ind=[1 2 1] (numel(vec2)=numel(idx)). I want to add each element of vec2 to the element of vec1 that is specified by ind. In this example, I want ans=[103 17 4 3].
Intuitively, I first tried
vec1(ind) = vec1(ind) + vec2, (1)
but this gave me ans=[102 17 4 3], telling me that the duplicates in ind were not considered.
To get around this, I added a for loop before (1) to remove the duplicates, which works fine but takes too long.
I would like to know if there is an efficient way to solve this.

Respuesta aceptada

Matt J
Matt J el 25 de En. de 2022
Editada: Matt J el 25 de En. de 2022
vec1=vec1+accumarray(ind(:),vec2(:),size(vec1));

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by