How to avoid double for-loop

9 visualizaciones (últimos 30 días)
Lucius
Lucius el 21 de Abr. de 2015
Comentada: Star Strider el 21 de Abr. de 2015
I have the following code
for n = 1:N
for l = 1:N
phase = exp(1i * (rand*0.5*pi-0.25*pi));
Efield_x(n,l) = Efield_x(n,l) .* phase;
end
end
with N=2^10 . Each matrix element should be multiplied with a different random number from -0.25*pi to 0.25*pi . Although the computer is running ("busy") I am waiting for 15 minutes now. How can we avoid this slow double for-loop to fasten to process significantly? By the way, I have 8 GB Ram.

Respuesta aceptada

Star Strider
Star Strider el 21 de Abr. de 2015
This seems to work:
N = 2^10;
Efield_x = ones(N); % Create Data
phase = exp(1i * (rand(N)-0.5)*0.25*pi);
Efield_x = Efield_x .* phase;
  2 comentarios
Lucius
Lucius el 21 de Abr. de 2015
Editada: Lucius el 21 de Abr. de 2015
you mean
...(rand(N)-0.5)*0.5*pi);
This works, thanks.
Star Strider
Star Strider el 21 de Abr. de 2015
My pleasure.
You’re correct on ‘phase’, with 0.5 rather than 0.25 as the multiplier to produce ±0.25*pi.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

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

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by