access array multiple times and calculate some value
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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?
0 comentarios
Respuestas (1)
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));
0 comentarios
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!