How to vectorize three for loop or fast
Mostra commenti meno recenti
% this is to do the grid-based central finite difference for the two vectors dimension as u(lon, lat, time) and v(lon,lat,time). the for loops works fine but it is too slow. I need a helpful loop that is faster than me from Matlab community.
Ur = zeros(291,243,1459);
[NR, NC]=size(lat);
for k = 1: length(t)
for i = 2:NR-1
for j = 2:NC-1
Ur(k,i,j)=sqrt((u(i+1,j,k)-2*u(i,j,k)+u(i-1,j,k))./(lon(i)-lon(i-1)^2) ...
+(v(i,j+1,k)-2*v(i,j,k)+v(i,j-1,k))./(lat(j)-lat(j-1)^2));
end
end
end
1 Commento
Geoff Hayes
il 11 Giu 2018
Eb - please clarify/quantify what you mean by too slow. Does this take seconds, minutes or hours to complete? Have you considered deferring the square root until after Ur is populated for all i,j,k? (Just to remove one computation that isn't strictly necessary until later...)
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Spreadsheets in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!