Borrar filtros
Borrar filtros

FOR loops optimisation for runtime

1 visualización (últimos 30 días)
James
James el 27 de Jun. de 2013
Is there a way to optimise this code? It takes a long time to run.
It basically comprises of 3 FOR loops running like this:
A=linspace(0,1,100);
B=linspace(0,1,100);
C=linspace(0,1,100);
zmatrix=zeros(length(A),length(B))
for i=1:length(A)
for j=1:length(B)
for k=1:length(C)
Z=A(i)+B(j)-C(k)
if Z>0
Z=zmatrix(i,j)
end
end
end
end
  3 comentarios
James
James el 27 de Jun. de 2013
I just have it as Z in my code. I missed out a bit at the start where I create a zeros matrix of size (length A,length B) and then the Z values get put into that matrix in their relevant places. So had no need for it being Z(i,j,k).
Matt J
Matt J el 27 de Jun. de 2013
Editada: Matt J el 27 de Jun. de 2013
Rewrite your code showing how each matrix element (i,j) is calculated. If the matrix is only 100x100 it is not clear why you are looping over 100^3 combinations of i,j,k.

Iniciar sesión para comentar.

Respuestas (1)

Matt J
Matt J el 27 de Jun. de 2013
Editada: Matt J el 27 de Jun. de 2013
This might be what you want, depending on your response to my Comment above.
A=A(:);
B=B(:).';
C=reshape(C,1,1,[]);
Z=bsxfun(@plus,A(:),B(:).');
Z=bsxfun(@minus,Z,C);

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by