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

Walter Roberson
Walter Roberson 2018년 10월 16일
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 2018년 10월 17일
Thank you very much! You've sped this up by an order of magnitude. Thank you for helping an amateur.

댓글을 달려면 로그인하십시오.

답변 (1개)

James Tursa
James Tursa 2018년 10월 12일

0 개 추천

Are you pre-allocating Grandarray?

카테고리

도움말 센터File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

질문:

2018년 10월 12일

댓글:

2018년 10월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by