iterating values of a vector under conditions
3 ビュー (過去 30 日間)
古いコメントを表示
I have a for loop to make the elements of vector v. I want to do iteration i+1 only for the elements with zero value in iteration i. (meaning that if I get v=[0,1,0,1] with i=1, I want to do iteration i=2 only for the 1st and 3rd elements.I need to break the loop whenever all the elements of v are filled with non zero values.
v=[0;0;0;0] for i=1:maxit
v=[process1(i)...;process2(i)...;process3(i)...;process4(i)...]
end
0 件のコメント
採用された回答
Matt Tearle
2012 年 9 月 12 日
編集済み: Matt Tearle
2012 年 9 月 12 日
If I understand you correctly, you have a procedure you want to iteratively apply to a vector, but only to the elements of that vector that are 0.
Here's some code that applies the "3n+1" procedure to the elements of a vector that are greater than 1:
% starting vector
v = 1:10;
% iterate
for k = 1:8
% exclusion criterion
idx = v>1;
% extract just the elements that satisfy the criterion
w = v(idx);
% and do something to them
isodd = (mod(w,2)==1);
w(~isodd) = 0.5*w(~isodd);
w(isodd) = 3*w(isodd) + 1;
% update just the altered values
v(idx) = w
end
Obviously, you would change the test to idx = v==0 and the "do something" section would be whatever you want.
0 件のコメント
その他の回答 (2 件)
Matt Fig
2012 年 9 月 12 日
編集済み: Matt Fig
2012 年 9 月 12 日
I am not quite sure what you want, but perhaps you should look at the CONTINUE keyword. If this isn't what you need, you should come up with an example input and an expected output...
Azzi Abdelmalek
2012 年 9 月 12 日
編集済み: Azzi Abdelmalek
2012 年 9 月 12 日
v=[0,1,0,1]
idx=find(v==0)
p=process(idx)
0 件のコメント
参考
カテゴリ
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!