help with nested loops error

5 次查看(过去 30 天)
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?

采纳的回答

Guillaume
Guillaume 2017-3-7
"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)) = [];

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by