Azzera filtri
Azzera filtri

Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

How to optimize this loop

1 visualizzazione (ultimi 30 giorni)
Israel Campiotti
Israel Campiotti il 16 Ago 2017
Chiuso: MATLAB Answer Bot il 20 Ago 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?

Risposte (2)

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

Image Analyst
Image Analyst il 16 Ago 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 Commento
Israel Campiotti
Israel Campiotti il 16 Ago 2017
Mine is taking more than 20minutes

Questa domanda è chiusa.

Community Treasure Hunt

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

Start Hunting!

Translated by