Which method to use, basic for loop or loop through values of a vector
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Thrisha R
el 24 de Dic. de 2020
Editada: KALYAN ACHARJYA
el 24 de Dic. de 2020
Vector ind has indices I want to loop through, x has values.
ind = [1 3 5];
x = [10 20 30 40 50 60 70];
ind_len = size(ind,2)
Approach 1: When using a for loop, should I use the basic incremental for loop, where I access each element of x with index values from ind vector
for i = 1:ind_len
x(ind(i))
end
Approach 2: Don't use ind_len length variable and assign ind vector to for loop
for i = ind
x(i)
end
Which method is efficient ?
0 comentarios
Respuesta aceptada
Jan
el 24 de Dic. de 2020
x = rand(1, 1e6);
y = zeros(size(x));
ind = randperm(numel(x));
tic
for loop = 1:10
for k = 1:numel(ind)
y(ind(k)) = x(ind(k));
end
end
toc
tic
for loop = 1:10
for k = ind
y(k) = x(k);
end
end
toc
% Elapsed time is 0.395765 seconds.
% Elapsed time is 0.739708 seconds.
The first approach can be handled more efficiently.
2 comentarios
KALYAN ACHARJYA
el 24 de Dic. de 2020
Editada: KALYAN ACHARJYA
el 24 de Dic. de 2020
Thank you Jan, Appreciated
Más respuestas (1)
KALYAN ACHARJYA
el 24 de Dic. de 2020
Editada: KALYAN ACHARJYA
el 24 de Dic. de 2020
More simpler, without loop
x(ind)
The 2nd approach (If I must have to choose one from above)
2 comentarios
KALYAN ACHARJYA
el 24 de Dic. de 2020
Editada: KALYAN ACHARJYA
el 24 de Dic. de 2020
Great one, once I run the code, as given in the question..
ind = [1 3 5];
x = [10 20 30 40 50 60 70];
ind_len = size(ind,2);
tic
for i = 1:ind_len
x(ind(i));
end
toc
tic
for i = ind
x(i);
end
toc
Elapsed time is 0.000021 seconds.
Elapsed time is 0.000016 seconds.
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!