bsxfun vs for loop. Code Optimization.
Afficher commentaires plus anciens
Hello everyone.
I'm trying to optimize some code that is running in a for loop. The code is the following:
for k=...
n=20;
u = rand(4386,21,n);
v = rand(size(u(:,:,1)));
F = zeros(size(u,1),n);
for m=1:n
F(:,m) = squeeze(max(u(:,:,m).*v,[],2));
end
output(k) = function(F);
end
I've tried replacing the inner for loop by bsxfun , this way:
for k=...
n=20;
u = rand(4386,21,n);
v = rand(size(u(:,:,1)));
F = squeeze(max(bsxfun(@times,u,v),[],2));
output(k) = function(F);
end
But bsxfun is taking more time than the previous solution.
Why is that happening?
Any other ideas to optimize this code?
I'm working with the specified dimensions, and the bottleneck of the problem is located in the creation of array F .
Thanks in advance.
Dani
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Windows dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!