Filter löschen
Filter löschen

Low computation efficiency of simple sentence in MATLAB

3 Ansichten (letzte 30 Tage)
Albert
Albert am 20 Okt. 2016
Bearbeitet: Thorsten am 21 Okt. 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

Akzeptierte Antwort

Thorsten
Thorsten am 20 Okt. 2016
Bearbeitet: Thorsten am 21 Okt. 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 Kommentare
Albert
Albert am 20 Okt. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by