Very long execution time for loop "end" command

1 view (last 30 days)
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.

Accepted Answer

Roger Stafford
Roger Stafford on 12 Mar 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;

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!