Speeding up areas of my code
Info
Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.
Ältere Kommentare anzeigen
Hi,
I am lookng to speed up the following lines in my code. Both di and tmp are matrices. Below, I have posted the original line and my attempt to speed this up. However, I have actually made this line slower by trying to speed it up, so I have reverted to the original for now:
Original:
for ii=1:nn
ttt=tmp(:,1:ii)'*di(:,ii);
end
New:
for ii=1:nn
rr4=0;
for lk4=1:letg
t1 = PP_AII{lk4};
sr4=tmp(t1,1:ii)'*di(t1,ii);
rr4=rr4+sr4;
end
ttt=rr4+tmp(PP_Agamgam,1:ii)'*di(PP_Agamgam,ii);
end
Here, PP is a structure containing PP.AII and PP.Agamgam. My aim is to compute the product over the individual elements of P, then sum them all together afterwards. However, Matlab does not want me to do this, since (as mentioned) this actually slows down the code.
Does anyone have any suggestions on how to proceed?
6 Kommentare
the cyclist
am 19 Jul. 2011
It would be helpful if you could define all the parameters such that the code will execute for us. They don't have to be the full size, but maybe also give us an idea of the scale of them, as well. Sometimes that affects the strategy.
Daniel Shub
am 19 Jul. 2011
I would suggest looking at:
http://undocumentedmatlab.com/blog/matrix-processing-performance/
Daniel Shub
am 19 Jul. 2011
You seem to keep overwritting ttt in the loop. Do you mean to do this?
James
am 19 Jul. 2011
James
am 19 Jul. 2011
James
am 19 Jul. 2011
Antworten (1)
Jan
am 19 Jul. 2011
Try to use (U)INT16 variables as counters:
i1 = int16;
for ii = i1:int16(nn)
rr4 = 0;
for lk4 = i1:int16(letg)
t1 = PP_AII{lk4};
sr4 = tmp(t1, i1:ii)' * di(t1, ii);
rr4 = rr4 + sr4;
end
ttt = rr4 + tmp(PP_Agamgam, i1:ii)' * di(PP_Agamgam, ii);
end
4 Kommentare
James
am 19 Jul. 2011
Sean de Wolski
am 19 Jul. 2011
yes - probably a typo:
i1 = int16(1); %assuming your loops start at one
James
am 19 Jul. 2011
Sean de Wolski
am 19 Jul. 2011
Do you have the parallel computing toolbox? There doesn't appear to be any reason why you couldn't make that outer look a parfor.
Diese Frage ist geschlossen.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!