Info

この質問は閉じられています。 編集または回答するには再度開いてください。

How to optimize this loop

1 回表示 (過去 30 日間)
Israel Campiotti
Israel Campiotti 2017 年 8 月 16 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
I want to do a loop like this
for i = 1:n
A(i,B(i,1)) = 1;
end
but my matrix has size one million. Is there a way to do it faster?

回答 (2 件)

Michelangelo Ricciulli
Michelangelo Ricciulli 2017 年 8 月 16 日
I think that this should save some time, since it avoids the for-loop:
i = 1:n;
A(i,B(i,1)) = 1;
  1 件のコメント
Image Analyst
Image Analyst 2017 年 8 月 16 日
In my testing that brought it from 0.01 seconds to 24 minutes.

Image Analyst
Image Analyst 2017 年 8 月 16 日
On my computer, it takes only 9 milliseconds for a million elements:
rows = 1000000;
columns = 5;
A = rand(rows, columns);
B = randi(columns, rows, 1);
tic
for k = 1 : rows
A(k, B(k)) = 1;
end
toc
Why do you need it faster?
  1 件のコメント
Israel Campiotti
Israel Campiotti 2017 年 8 月 16 日
Mine is taking more than 20minutes

この質問は閉じられています。

Community Treasure Hunt

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

Start Hunting!

Translated by