Looping with indices that are not equally spaced
20 次查看(过去 30 天)
显示 更早的评论
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:
won't work. I'm trying to avoid doing something like:
for i = 1:length(VECTOR)
Any ideas?
2 个评论
Oleg Komarov
2011-6-23
not clear why it won't work. Depends how you structure the operations inside the loop. Post more code.
Daniel Shub
2011-6-23
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
采纳的回答
Laura Proctor
2011-6-23
Actually, it will work.
for idx = [ 1 -2 10 12.5 0 ]
disp(idx)
end
Isn't MATLAB cool?
0 个评论
更多回答(2 个)
John F
2011-6-23
2 个评论
Laura Proctor
2011-6-23
编辑:Walter Roberson
2019-12-22
You are correct - check out Loren's Blog, it explains this behavior much better than I can:
Daniel Shub
2011-6-23
编辑:Walter Roberson
2019-12-22
Yeah, but check out what it does do with a column. You should have a read of:
Frederick Abangba Akendola
2019-12-22
Please, how do I write a “For” loop with irregular interval? For example; 2,4,8,16,32
1 个评论
Walter Roberson
2019-12-22
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)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!