access array multiple times and calculate some value

1 visualización (últimos 30 días)
dleal
dleal el 28 de Jul. de 2022
Respondida: David Hill el 28 de Jul. de 2022
Hi all, I would like to know if there's a faster way that using a foor loop for this:
a = rng(99);
A = randn(1,100);
B = [20 23; 30 37; 51 55; 78 100 ];
For each row B, I would like to slice A from the first column to the second column value, and then apply some function, for example, sum.
So for example, the first computation would be sum(A(20:23)), then sum(A(30:37)) ... sum(A(78:100)).
The for loop would be:
for ii = 1:size(B,1)
sum(A(B(ii,1) : B(ii,1) );
end
Could I program this such that it results in a faster calculation?

Respuestas (1)

David Hill
David Hill el 28 de Jul. de 2022
Shorter way to write it, but will not improve speed.
s=arrayfun(@(x)sum(A(B(x,1):B(x,2))),1:size(B,1));

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by