2017-05-11 18 views
1

私は以下の疑問を持っています:forループを使用する場合、反復の数は最初は固定されていますが、各ループで変更することは可能ですか?forループの反復回数を変更するにはどうすればよいですか?

は、例えば私は(30x2)この場合にそう

for i = 1: size (M, 1) 
    Bla bla bla 
    M = [M; BLA bla] 
    end 

行列Mは、各ループにサイズを変更する(またはほとんどの条件に応じて)マトリクスMを実行し、私はこの変更が取り込まれたいです反復数のアカウントi

私はこれを試してみました:

L=length(M); 
for i = 1:L 
Bla bla bla 
M = [M; BLA bla] 
L=L+1; or I tried too L=length(M); 
end 
+1

ループ条件が動的に評価されるように、 'for'ではなく' while 'が必要です –

+0

'for i = 1:L'は、それぞれの[1,2、... L]に対してコンパイルされるので、ループ内では動的ではありません。条件付きサイズのループを作成したい場合は、while whileを実行する必要があります。 –

答えて

2

これは一つの選択肢である(しかし、それは働いていない):

i = 1; 
while i ~= N 
    etc... 
    i = i+1; 
    N = size(M,2); %or whatever 
end 
0

あなたがforループの反復を増やすことはできませんが、if文を使用することができますループ内で前に壊れている:

for i = 1: size (M, 1) 
    Bla bla bla 
    M = [M; BLA bla] 
    if size(M,1)>10, break; end % use your condition to stop 
end 
+0

ループ内で行列が生成されているときに、_earlier_がどのように機能しますか? –

+0

あまりにも多くの反復をあらかじめ設定しておかないと、早く壊れることはありません。その場合、ループはどんなに良くなるはずです。 –

関連する問題