- Vectorization: Try to replace loops with vectorized operations. Eg., you can use logical indexing instead of the contains function inside the innermost loop.
- Preallocation: Preallocate all matrices and arrays before the loops. This avoids dynamically resizing arrays, which is computationally expensive.
- Parallel Computing: If you have the Parallel Computing Toolbox, you can use parfor to parallelize the outer loops.
- Logical Indexing: Instead of using nested loops to find elements that meet certain conditions, use logical indexing.
Optimize code without for loop
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Marc Servagent
el 31 de Jul. de 2023
My code uses 6 nested for loops, it is basically used to build 3D matrix with data in specific order from 2D matrix with data in random order.
These lines work as expected but take significant times to execute.
Is there any alternative approach of programming which lead to avoid all these for loops and therefore speed up the execution ?
for z=1:1001
p=0;
for j=1:length(DOFNameRef)
for n=1:length(DOFDir)
for i=1:length(DOFNamePoint)
for l=1:length(DOFDir)
p = p+1;
for k=1:Mlig*Mcol
c(k) = contains(Resp(k),DOFNamePoint(i)) && contains(Resp(k),DOFDir(l)) && contains(Ref(k), DOFNameRef(j)) && contains(Ref(k),DOFDir(n));
end
[NumLigne, NumCol] = NLignNCol(p,Mlig, Mcol);
M(NumLigne,NumCol,z) = Data(z, c);
end
end
end
end
end
0 comentarios
Respuesta aceptada
AKennedy
el 24 de Sept. de 2024
You can consider:
1 comentario
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!