Vectorization of For loop

9 visualizzazioni (ultimi 30 giorni)
MahdiH
MahdiH il 14 Ago 2020
Commentato: MahdiH il 16 Ago 2020
Dear Matlab community,
Is it possible to vectorize the following for loop:
a = rand(100,100);
b = rand(500,100,100);
for i = 1:500
c = reshape(b(i, :, :),100,100);
d(i) = sum(sum(a.*c));
end
  14 Commenti
Bruno Luong
Bruno Luong il 15 Ago 2020
You could do a hybrid method: for-loop with each iteration compute a chunk of 50 elements of d.
MahdiH
MahdiH il 16 Ago 2020
@ Bruno, Thanks for bringing the hybrid idea, I like it. Also, I'm aware that you explained the RAM issue, but I was telling Walter that the RAM limitation make the for loop my best bet.

Accedi per commentare.

Risposta accettata

Walter Roberson
Walter Roberson il 14 Ago 2020
d = sum(b .* reshape(a, 1, 100, 100), [2 3]);

Più risposte (1)

Bruno Luong
Bruno Luong il 14 Ago 2020
d = b(:,:)*a(:)
  1 Commento
MahdiH
MahdiH il 14 Ago 2020
Thanks Bruno for your smart answer.

Accedi per commentare.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by