Filter löschen
Filter löschen

how can i vectorize this loop?

1 Ansicht (letzte 30 Tage)
Miguel Reina
Miguel Reina am 21 Jan. 2018
Beantwortet: Matt J am 22 Jan. 2018
K=100;
a=zeros(K,1);
for u = 0:K-1
for b = 0:K-1
a(u+1) = a(u+1) + s(b+1)*exp((-2j*pi*u*b/K));
end
end
  2 Kommentare
Matt J
Matt J am 21 Jan. 2018
What is "k" in s(k+1)? DO you mean s(b+1)?
Miguel Reina
Miguel Reina am 22 Jan. 2018
Yes is b+1

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 21 Jan. 2018

Weitere Antworten (2)

Image Analyst
Image Analyst am 21 Jan. 2018
Well you could try meshgrid() but I think it might make it a little more confusing to understand what it's doing. With only 100x100 array to fill, a double for loop will be very fast so even if you did vectorize it, don't expect to notice any speed difference.

Matt J
Matt J am 22 Jan. 2018
A less efficient way,
z=0:K;
a=exp((-2j*pi/K)*z.'*z)*s(:);

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by