help me to reduce my function time runing

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

 採用された回答

Roger Stafford
Roger Stafford 2014 年 10 月 21 日

4 投票

U = (0:99).';
V = 0:2:198;
F = (10*sin(U))*cos(V)+(10*cos(U))*sin(V);
imagesc(F);
colormap(gray);

その他の回答 (1 件)

Henrik
Henrik 2014 年 10 月 21 日
編集済み: Henrik 2014 年 10 月 21 日

1 投票

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 件のコメント

mostafa
mostafa 2014 年 10 月 21 日
your answer is true but if i change the size to 150*100 it wouldn't work.

サインインしてコメントする。

タグ

質問済み:

2014 年 10 月 21 日

コメント済み:

2014 年 10 月 21 日

Community Treasure Hunt

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

Start Hunting!

Translated by