Very long execution time for loop "end" command

6 Ansichten (letzte 30 Tage)
Ali Jamali
Ali Jamali am 12 Mär. 2015
Kommentiert: Ali Jamali am 12 Mär. 2015
MATLAB profile viewer showed me that over 20% of my run-time is spend on a loop "end" command. I understand that this line is called millions of times, but there are other lines inside that loop that take less time although they actually do something! Help please.

Akzeptierte Antwort

Roger Stafford
Roger Stafford am 12 Mär. 2015
If NInj is a large number, the lines 70 and 71 are needlessly repetitive and therefore constitute a very inefficient code. If you have room for a temporary additional (NStg-1)-by-NInj matrix (D), the following code should be much faster:
D = zeros(NStg-1,NInj);
P = 2*NPrd+(j-1)*NInj;
k = (1-X)/sqrt(2);
for i = 1:NInj
t = 0;
for n = 2:NStg
t = t*X+(I(n,i)+I(n-1,i))*k;
D(n-1,i) = t;
end
end
H(P+(1:NInj),P+(1:NInj)) = D.'*D;
  3 Kommentare
per isakson
per isakson am 12 Mär. 2015
See transpose
Ali Jamali
Ali Jamali am 12 Mär. 2015
I got it. Thanks very much!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

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

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by