Low computation efficiency of simple sentence in MATLAB

4 vues (au cours des 30 derniers jours)
Albert
Albert le 20 Oct 2016
Modifié(e) : Thorsten le 21 Oct 2016
Hi, everyone
I have an computation efficiency problem here, I wish someone could help me out.
here is part of my MATLAB code (the actual code is much bigger than the following):
lambda_new1=ones(32*32*32,1);
W1=zeros(32*32*32,t);
W2=zeros(32*32*32,t);
W3=zeros(32*32*32,t);
W4=zeros(32*32*32,t);
temp=reshape(sum(repmat(lambda_old1,1,4).*[W1(:,i),W3(:,i),W2(:,i),W4(:,i)]),2,2);
How come that the last sentence in above code is running so slow, which accounts for 35% total running time? Actually my code is much bigger than the above and there are more complicated computation, but why such a short and concise computation takes so much time?
Is there any better way to improve computation efficiency?
Also the line numbers in my MATLAB (2016a and 2016b) would disappear after a while, if I relaunch the software, the line number would come back. Is this an intrinsic bug in MATLAB? How can I fix it?
Greatly appreciate your help
Thank you
Albert Liew

Réponse acceptée

Thorsten
Thorsten le 20 Oct 2016
Modifié(e) : Thorsten le 21 Oct 2016
Instead of
X = repmat(lambda_old1,1,4).*[W1(:,i),W3(:,i),W2(:,i),W4(:,i)];
if might be faster to use
X = bsxfun(@times, [W1(:,i),W3(:,i),W2(:,i),W4(:,i)], lambda_old1);
  2 commentaires
Albert
Albert le 20 Oct 2016
Hi, Thorsten
Thank you very much for your answer. It does work much faster. The reason why is that, I guess, by using 'bsxfun', we simply circumvent the process of copying and pasting a large matrix, which is time consuming.
Thank you again.
Thorsten
Thorsten le 21 Oct 2016
Exactly.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements 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!

Translated by