finite difference method remove for loop
Afficher commentaires plus anciens
Hello all
I have a complex for nested loop need to vectorization, the code I posted below is a piece of my code to calculate finite difference equation. Because my execution time takes too long so I need to improve it. Please give me any advice to reduce execution time. Thanks for any help from you, all
if true
% code
loopVal1 = 14;
loopVal2 = 12;
loopVal3 = 20;
for n = 1:loopVal1
for nx = 2:loopVal2- 1
for ny = 2:loopVal3- 1
n = (ny - 1)*loopVal2+ nx;
nm = n + (nc - 1)*loopVal2*loopVal3;
g_o(nm) =-coffi(n,nc).*(heatNext(1, n, nc)-heat(1, n, nc))./dt + 0.5.*((k(n, nc).*(heat(1, n + 1, nc) - 2.*heat(1, n, nc) + heat(1, n - 1, nc));
matrix(nm, nm - 1) = -coffi1(n,nc)./(2.*dx.^2);
matrix(nm, nm - loopVal2) = -coffi1(n,nc)./(2.*dy.^2);
matrix(nm, nm + loopVal2) = -coffi1(n,nc)./(2.*dy.^2);
matrix(nm, nm) = coffi(n,nc)./dt + heatNext(1, n - loopVal2, nc))/dy^2;
Matrix(nm, nm + 1) = -coffi1(n,nc)/(2*dx^2);
end
end
end
Réponses (0)
Catégories
En savoir plus sur 루프와 조건문 dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!