MATLAB Answers

help me to reduce my function time runing

1 view (last 30 days)
mostafa
mostafa on 21 Oct 2014
Commented: mostafa on 21 Oct 2014
Hi every body
This is my code
if true
for r = 1:100
U = 1 * (r-1);
for c = 1:100
V = 2 * (c-1);
F(r,c) = 10 * sin(U + V);
end
end
imagesc(F);
colormap(gray);
end
Its generate a replicate pattern which I upload it here. Is there any suggestion to reduce the running time for this code?
Thanks

Accepted Answer

Roger Stafford
Roger Stafford on 21 Oct 2014
U = (0:99).';
V = 0:2:198;
F = (10*sin(U))*cos(V)+(10*cos(U))*sin(V);
imagesc(F);
colormap(gray);

More Answers (1)

Henrik
Henrik on 21 Oct 2014
Edited: Henrik on 21 Oct 2014
This should work:
if true
F=zeros(100,100); %always preallocate
c = 1:100;
V = 2 * (c-1);
for r = 1:100
U = 1 * (r-1);
F(r,:) = 10 * sin(U + V);
end
imagesc(F);
colormap(gray);
end
You can get rid of the r loop too with e.g. bsxfun, but I don't have time to test it right now
  1 Comment
mostafa
mostafa on 21 Oct 2014
your answer is true but if i change the size to 150*100 it wouldn't work.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by