Is it possible to vectorize this loop?

 Respuesta aceptada

Stephan
Stephan el 30 de Nov. de 2020
w_new = (sum(w + A.*B(:),2))';

Más respuestas (1)

Jan
Jan el 30 de Nov. de 2020
Editada: Jan el 30 de Nov. de 2020
A = rand(1, 1000);
B = rand(1, 1000);
tic
for k = 1:1000
w = 0;
for i = 1:length(A)
w = w + A(i).*B;
end
end
toc
tic
for k = 1:1000
w = (sum(A .* B(:),2))';
end
toc
tic
w = 0;
for k = 1:1000
w = sum(A' * B);
end
toc
I get the timings (Matlab online!):
0.34 seconds
0.69 seconds
0.41 seconds
So check it on your machine is the vectorization is an advantage.

Categorías

Más información sobre Statistics and Machine Learning Toolbox en Centro de ayuda y File Exchange.

Preguntada:

el 30 de Nov. de 2020

Editada:

Jan
el 30 de Nov. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by