vectorize a loop with product and sum operations
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Francesco
el 11 de Feb. de 2014
Respondida: Francesco
el 11 de Feb. de 2014
Hi all,
I come with a question about vectorization. Suppose I have to run a code equivalent to the following
x = 1:4;
v = rand(1,10);
for i = 1:length(x)
k(i,:) = x(i)*v + x(i)
end
when you have a combined product and sum operations for each iteration.
Basic solution I can come up with is the following:
k = bsxfun(@times,x',v) + repmat(x',1,6); k = x'*v + repmat(x',1,6); % equivalent to before
Does this make any sense in terms of true vectorization? Which is the best way to vector the code? I guess for this case there is a specific "easy" answer while in some other cases more careful mathematical analysis of the formulas should be performed in order to get a "smart" vectorization.
Any comment and answer is more than welcome
0 comentarios
Respuesta aceptada
Más respuestas (2)
Azzi Abdelmalek
el 11 de Feb. de 2014
Editada: Azzi Abdelmalek
el 11 de Feb. de 2014
x = 1:4
v = rand(1,10)
out1=bsxfun(@times,repmat(v,4,1),x')
out=bsxfun(@plus,out1,x')
%OR
x = 1:4
v = rand(1,10)
out2=bsxfun(@(ii,jj) ii.*jj+jj,repmat(v,4,1),x')
0 comentarios
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices 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!