Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

How to optimize this loop

2 vues (au cours des 30 derniers jours)
Israel Campiotti
Israel Campiotti le 16 Août 2017
Clôturé : MATLAB Answer Bot le 20 Août 2021
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?

Réponses (2)

Michelangelo Ricciulli
Michelangelo Ricciulli le 16 Août 2017
I think that this should save some time, since it avoids the for-loop:
i = 1:n;
A(i,B(i,1)) = 1;
  1 commentaire
Image Analyst
Image Analyst le 16 Août 2017
In my testing that brought it from 0.01 seconds to 24 minutes.

Image Analyst
Image Analyst le 16 Août 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 commentaire
Israel Campiotti
Israel Campiotti le 16 Août 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