2012-04-04 14 views
0

for-loopをカスタムステップ付きのMATLABで使用する方法はありますか?私がしたいことは、与えられた数よりも2少ないすべての威力で反復することです。 (例えば)C++での同等のループは次のようになります。MATLABの乗算ステップ付きループ

for (int i = 1; i < 65; i *= 2) 

注1:これは最高のループのためにフィットし、私は一方で、ループは使用しないしたいの繰り返しのようなものです。
注2:私は実際にはMATLABではなくOctaveを使用しています。あなたが指数の範囲を把握する必要があります除き

答えて

4

はおそらく、あなたは

for i=2.^[1:6] 
    disp(i) 
end 

の線に沿って何かをしたいです。これは、 a_(i+1) = a_i*2以来、これはa_i = 2^iと書き直すことができるという事実を利用しています。

そうしないと、あなたは、あなたのループを開始する前に、値のあなたのベクトルを作成するために、ベクトル演算を使用することができますので、あなたは、任意のベクトルを反復処理することができ、次の

i=1; 
while i<65 
    i=i*2; 
    disp(i); 
end 
3

ような何かを行うことができます。最初の100の平方数を超えるループは、例えば、そのように書くことができます:

values_to_iterate = [1:100].^2; 
for i = values_to_iterate 
    i 
end 

それともでしベクトルvalues_to_iterateの各位置以上のループ(これは、同じ結果が得られますが、その利点を持っています

values_to_iterate = [1:100].^2; 
for i = 1:length(values_to_iterate) 
    values_to_iterate(i) 
    results_vector(i) = some_function(values_to_iterate(i)); 
end 

より簡潔に、あなたは、単に最初の例を記述することができます。)あなたは、出力ベクトルに各ループから順次結果を書いている場合、これは便利です - iは、あなたが行っているどのように多くの反復を追跡します

for i = [1:100].^2 
    i 
end 

Cとは異なり、ある値から次の値に到達するための 'ルール'は必要ありません。 反復されるベクトルは、完全に任意であり得る。

for i = [10, -1000, 23.3, 5, inf] 
    i 
end