Unusual slowdown using sum.

Matlab handles sums of arrays pretty well, but seems to have trouble with my application. I do a bit of work with double precision numbers early in the code, then want to take a 1000x1000 array and produce a 1000x1000x1000 with said array. I've done things like this before with larger dimensions and larger numbers of dimensions with output results in milliseconds. The cataclysmic code is here:
for nn = 1:1000
for mm = 1:1000
if (nn < mm)
Temparray = Loss(nn:mm,:);
Grandarray(nn,mm,:)= sum(Temparray,1);
end
end
end
Because of the symmetry of the problem I only have to compute the equivalent of the upper-right corner. Is there something I'm inherently doing wrong, or is the computation simply enormous?

2 comentarios

Walter Roberson
Walter Roberson el 16 de Oct. de 2018
It looks to me as if you could probably make use of cumsum() for efficiency, unless the difference in round-off would be too much for you.
Matthew Reed
Matthew Reed el 17 de Oct. de 2018
Thank you very much! You've sped this up by an order of magnitude. Thank you for helping an amateur.

Iniciar sesión para comentar.

Respuestas (1)

James Tursa
James Tursa el 12 de Oct. de 2018

0 votos

Are you pre-allocating Grandarray?

Categorías

Etiquetas

Preguntada:

el 12 de Oct. de 2018

Comentada:

el 17 de Oct. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by