help with nested loops error

5 visualizaciones (últimos 30 días)
Roger Vota
Roger Vota el 4 de Mzo. de 2017
Respondida: Guillaume el 7 de Mzo. de 2017
Somehow only first step in a loop is executed:
spiketime = (1:3:100);
stim = (1:10:100);
for i=1:size(stim);
for t = 1:size(spiketime);
if abs(spiketime(t)-stim(i)) < 3;
spiketime(t) = [];
end
end
end
What am I missing?
  2 comentarios
per isakson
per isakson el 4 de Mzo. de 2017
Replace
size(stim);
by
length(stim)
Roger Vota
Roger Vota el 7 de Mzo. de 2017
Thank you very much, it works now!

Iniciar sesión para comentar.

Respuesta aceptada

Guillaume
Guillaume el 7 de Mzo. de 2017
"Thank you very much, it works now!"
Well, after a fashion, it will have got rid of one error, but the code definitively won't work as you want. Deleting elements while you're looping over them never works: your loop index will get out of sync with the content of the array.
In any case, a loop is not needed:
spiketime = 1:3:100; %() brackets unneeded, just add noise
stim = 1:10:100
%in R2016b:
spiketime(any(abs(spiketime - stim.') < 3)) = [];
%in versions prior to R2016b
spiketime(any(abs(bsxfun(@minus, spiketime, stim')) < 3)) = [];

Más respuestas (0)

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