Unusual slowdown using sum.
Mostrar comentarios más antiguos
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
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
el 17 de Oct. de 2018
Respuestas (1)
James Tursa
el 12 de Oct. de 2018
0 votos
Are you pre-allocating Grandarray?
1 comentario
Matthew Reed
el 16 de Oct. de 2018
Categorías
Más información sobre Shifting and Sorting Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!