Hi,
I am trying to run a 3d for loop, which is taking 3 hrs to run. I tried some of the best practices for loops such as pre-allocating the array, indexing and parfor but it does not improve the processing time. Please can you suggest to improve the execution time.
for i1= 1:length(RGI_glacier_temp_C_avg) % length of 216
for j1 = 1:length(elev_bins) % array size 200
for k1 = 1:length(gl_max_elev) % array size 18,000
RGI_downscld_no_thre(i1,j1,k1) = temp2m_all_grids_avg(i1,:) + lr_era * (elev_bins(:,j1) - gl_max_elev(k1,:));
RGI_downscld_no_thre_C(i1,j1,k1) = temp2m_all_grids_C_avg(i1,:) + lr_era * (elev_bins(:,j1) - gl_max_elev(k1,:));
end
end
end

 채택된 답변

Bruno Luong
Bruno Luong 2022년 8월 24일
편집: Bruno Luong 2022년 8월 25일

0 개 추천

Try this:
T = reshape(temp2m_all_grids_avg, [], 1, 1);
Tc = reshape(temp2m_all_grids_C_avg, [], 1, 1);
hbins = reshape(elev_bins,1,[],1);
maxh = reshape(gl_max_elev,1,1,[]);
Th = lr_era * (hbins - maxh);
RGI_downscld_no_thre = T + Th;
RGI_downscld_no_thre_C = Tc + Th;
These outputs require more than 10 Gb on RAM. You might compute the array in single if you run out of memory or it starts to swap on HD.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2022년 8월 24일

편집:

2022년 8월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by