Very long execution time for loop "end" command

5 visualizaciones (últimos 30 días)
Ali Jamali
Ali Jamali el 12 de Mzo. de 2015
Comentada: Ali Jamali el 12 de Mzo. de 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.

Respuesta aceptada

Roger Stafford
Roger Stafford el 12 de Mzo. de 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 comentarios
per isakson
per isakson el 12 de Mzo. de 2015
See transpose
Ali Jamali
Ali Jamali el 12 de Mzo. de 2015
I got it. Thanks very much!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by