Looping with indices that are not equally spaced
11 ビュー (過去 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!