vectorize a loop with product and sum operations
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Francesco
le 11 Fév 2014
Réponse apportée : Francesco
le 11 Fév 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 commentaires
Réponse acceptée
Plus de réponses (2)
Azzi Abdelmalek
le 11 Fév 2014
Modifié(e) : Azzi Abdelmalek
le 11 Fév 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 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!