how can i vectorize this loop?

1 view (last 30 days)
Miguel Reina
Miguel Reina on 21 Jan 2018
Answered: Matt J on 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 Comments
Matt J
Matt J on 21 Jan 2018
What is "k" in s(k+1)? DO you mean s(b+1)?

Sign in to comment.

Accepted Answer

Matt J
Matt J on 21 Jan 2018

More Answers (2)

Image Analyst
Image Analyst on 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 on 22 Jan 2018
A less efficient way,
z=0:K;
a=exp((-2j*pi/K)*z.'*z)*s(:);

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!