How to avoid double for-loop
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Lucius
am 21 Apr. 2015
Kommentiert: Star Strider
am 21 Apr. 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.
0 Kommentare
Akzeptierte Antwort
Star Strider
am 21 Apr. 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 Kommentare
Star Strider
am 21 Apr. 2015
My pleasure.
You’re correct on ‘phase’, with 0.5 rather than 0.25 as the multiplier to produce ±0.25*pi.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!