Borrar filtros
Borrar filtros

Looping with indices that are not equally spaced

15 visualizaciones (últimos 30 días)
John F
John F el 23 de Jun. de 2011
Comentada: Walter Roberson el 22 de Dic. de 2019
I'm trying to run a loop on a group of indices I obtained using "find". The indices will not always be consecutive. So, running a for loop like:
for i = indices
won't work. I'm trying to avoid doing something like:
for i = 1:length(VECTOR)
Any ideas?
  2 comentarios
Oleg Komarov
Oleg Komarov el 23 de Jun. de 2011
not clear why it won't work. Depends how you structure the operations inside the loop. Post more code.
Daniel Shub
Daniel Shub el 23 de Jun. de 2011
What do you mean it doesn't work? What would you expect to get with:
indices = [1,2,3,5,7,13,11];
for i = indices, i, end

Iniciar sesión para comentar.

Respuesta aceptada

Laura Proctor
Laura Proctor el 23 de Jun. de 2011
Actually, it will work.
for idx = [ 1 -2 10 12.5 0 ]
disp(idx)
end
Isn't MATLAB cool?

Más respuestas (2)

John F
John F el 23 de Jun. de 2011
So, it works with a row vector of indices, but not a column?
I tried that bit of code but transposed idx, and the loop didn't work. Strange?
  2 comentarios
Laura Proctor
Laura Proctor el 23 de Jun. de 2011
Editada: Walter Roberson el 22 de Dic. de 2019
You are correct - check out Loren's Blog, it explains this behavior much better than I can:
Daniel Shub
Daniel Shub el 23 de Jun. de 2011
Editada: Walter Roberson el 22 de Dic. de 2019
Yeah, but check out what it does do with a column. You should have a read of:

Iniciar sesión para comentar.


Frederick Abangba Akendola
Frederick Abangba Akendola el 22 de Dic. de 2019
Please, how do I write a “For” loop with irregular interval? For example; 2,4,8,16,32
  1 comentario
Walter Roberson
Walter Roberson el 22 de Dic. de 2019
for K = 2.^(1:5)
result = whatever involving K
end
However, most of the time you want to create one output per input. The general way to do that is
K_vals = 2.^(1:5);
numK = numel(K_vals);
results = zeros(size(K_vals));
for K_idx = 1 : numK
K = K_vals(K_idx);
results(K_id) = whatever involving K
end
plot(K_vals, results)

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by