MATLAB Answers

How to optimize this loop

조회 수: 2(최근 30일)
Israel Campiotti
Israel Campiotti 16 Aug 2017
댓글: Image Analyst 16 Aug 2017
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?

  댓글 수: 0

댓글을 달려면 로그인하십시오.

답변(2개)

Michelangelo Ricciulli
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 16 Aug 2017
In my testing that brought it from 0.01 seconds to 24 minutes.

댓글을 달려면 로그인하십시오.


Image Analyst
Image Analyst 16 Aug 2017
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 16 Aug 2017
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