Avoid loops with mapping toolbox "setltln"
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
Hi all, I'm looking for a clever way to optimize the following chunk of code. The function is to get a grid of lat, lon coordinates using the reference matrix R, and the indices of Z.
However, with such huge dimensions, this nested for loop is painfully slow! How can I avoid for loops in this case?
[Z, R] = arcgridread('biloxi_ms.asc');
tempLAT=zeros(9721,10801);
tempLON=zeros(9721,10801);
for i =1:9721
    for j = 1:10801
    [tempLAT(i,j), tempLON(i,j)] = setltln(Z, R, i, j);
    end
end
Best, Rob
댓글 수: 0
채택된 답변
  Sean de Wolski
      
      
 2015년 8월 4일
        You could build a grid and call setltln on all of it. This will consume a bit more memory since you'll need to store ii, jj. A hybrid approach might be to run a loop over smaller meshgrids.
[ii, jj] = meshgrid(1:9271,1:10801)
[tempLAT, tempLON]= setltln(Z, R, ii, ij);
Also, parallel computing could help here if you have the parallel computing toolbox. Simply, turn the outer loop into a parfor.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!