Unusual slowdown using sum.
Show older comments
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 Comments
Walter Roberson
on 16 Oct 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
on 17 Oct 2018
Answers (1)
James Tursa
on 12 Oct 2018
0 votes
Are you pre-allocating Grandarray?
1 Comment
Matthew Reed
on 16 Oct 2018
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!